1第九章操作系统接口第九章操作系统接口9.1用户接口9.2Shell命令语言9.3联机命令接口的实现9.4系统调用的概念和类型9.5UNIX系统调用9.6系统调用的实现习题2第九章操作系统接口 9.1用户接口9.1.1字符显示式联机用户接口不同的OS,其联机用户接口是不同的,即它们的命令形式和用法各不相同,甚至在同一系统中,命令的不同形式构成了不同的用户界面,一般可分为字符显示式联机用户接口和图形化联机用户接口两类。3第九章操作系统接口1.命令行方式该方式是以行为单位,输入和显示不同的命令。每行长度一般不超过256个字符,一般情况下,以回车符作为一个命令的结束标记。通常,命令的执行采用的是间断式的串行执行方式,即后一个命令的输入一般需等到前一个命令执行结束,如用户键入的一条命令处理完成后系统发出新的命令输入提示符,用户才可以继续输入下一条命令。4第九章操作系统接口2.批命令方式在操作命令的实际使用过程中,经常遇到需要对多条命令的连续使用、或对若干条命令的重复使用、或对不同命令进行选择性使用的情况,如果用户每次都采用命令行方式将命令一条条由键盘输入,既浪费时间,又容易出错。因此,操作系统都支持一种称为批命令的特别命令方式,允许用户预先把一系列命令组织在一种称为批命令文件的文件中,一次建立,多次执行。使用这种方式可减少用户输入命令的次数,既节省了时间,减少了出错概率,又方便了用户。5第九章操作系统接口9.1.2图形化联机用户接口1.图形用户接口GUI(GraphicsUserInterface)的引入虽然用户可以通过命令行方式和批命令方式,取得操作系统的服务,并控制自己的作业运行,但却要牢记各种命令的动词和参数,必须严格按规定的格式输入命令,而且不同操作系统所提供的命令语言的词法、语法、语义及表达形式是不一样的,这样既不方便又花费时间。于是,图形化用户接口GUI(GraphicsUserInterface)便应运而生。6第九章操作系统接口2.使用WIMP技术GUI采用了图形化的操作界面,使用WIMP技术,该技术将窗口(Window)、图标(Icon)、菜单(Menu)、鼠标(Pointingdevice)和面向对象技术等集成在一起,引入形象的各种图标,将系统的各项功能、各种应用程序和文件直观、逼真地表示出来,形成一个图文并茂的视窗操作环境。7第九章操作系统接口3. Windows的GUI简介以Microsoft公司的Windows操作系统为例,在系统初始化后,OS为终端用户生成了一个运行explorer.exe的进程,它运行一个具有窗口界面的命令解释程序,该窗口是一个特殊的窗口,即桌面。8第九章操作系统接口9.1.3联机命令的类型1.系统访问类在多用户系统中,为了保证系统的安全性,都毫无例外地设置注册命令Login。凡要在多用户系统的终端上上机的用户,都必须先在系统管理员处获得一合法的注册名和口令。以后,每当用户在接通其所用终端的电源后,便由系统直接调用,并在屏幕上显示出以下的注册命令:Login:/提示用户键入自己的注册名当用户键入正确的注册名并按下回车键后,屏幕上又会出现:Password:/提示用户键入自己的口令9第九章操作系统接口2.文件操作命令(1)显示文件命令type,用于将指定文件内容显示在屏幕上。(2)拷贝文件命令copy,用于实现文件的拷贝。(3)文件比较命令comp,该命令用于对两个指定文件进行比较,两文件可以在同一个或不同的驱动器上。(4)重新命名命令Rename,该命令用于将以第一参数命名的文件改成用第二参数给定的名字。(5)删除文件命令erase,该命令用于删除一个或一组文件,例如,当参数路径名为*.BAK时,表示删除指定目录下的所有其扩展名为 .Bak的文件。10第九章操作系统接口3.目录操作命令(1)建立子目录命令mkdir,用于建立指定名字的新目录。(2)显示目录命令dir,显示指定磁盘中的目录项。(3)删除子目录命令rmdir,用于删除指定的子目录文件,但不能删除普通文件,而且一次只能删除一个空目录(其中仅含“.”和“..”两个文件),不能删除根及当前目录。(4)显示目录结构命令tree,显示指定盘上的所有目录路径及其层次关系。(5)改变当前目录命令chdir,将当前目录改变为由路径名参数给定的目录。用“..”作参数时,表示应返回到上一级目录下。11第九章操作系统接口4.其它命令(1)输入输出重定向命令。(2)管道连接。(3)过滤命令。(4)批命令。12第九章操作系统接口 9.2Shell命令语言9.2.1简单命令简介在Shell命令语言中提供了许多不同形式的命令,并允许在一条命令行中有多个命令。如果在一条命令行中仅有一个命令,就把它称为简单命令。实际上,一条简单命令便是一个能完成某种功能的目标程序的名字。13第九章操作系统接口1.简单命令的格式简单命令的格式比较自由,包括命令名字符的个数及用于分隔命令名、选项、各参数间的空格数等,都是任意的。在UNIX和Linux系统中都规定,命令由小写字母构成,命令可带有参数表,用于给出执行命令时的附加信息,每个参数是一个单词。命令名与参数表之间还可使用一种称为选项的自变量,用减号开始,后跟一个或多个字母、数字。一条命令可有多个选项,用于改变命令执行动作的类型。14第九章操作系统接口2.简单命令的分类在Linux或UNIX系统中,一般把简单命令分为两类:(1)系统提供的标准命令,包括调用各种语言处理程序、实用程序等,其数量随系统版本的不同而有所差异,系统管理员可以增添新的系统标准命令。(2)用户自定义的命令。系统管理员和用户自行定义的命令的执行方式与系统标准命令的执行方式相同。15第九章操作系统接口对于简单命令,还可根据命令是否包含在Shell内部,即是否常驻内存,而分为内部命令和外部命令两类:(1)内部命令。Shell中少数标准命令,如改变工作目录命令cd等,是包含在Shell内部的,作为内部命令常驻内存。(2)外部命令。Shell中大多数的命令如拷贝命令cp和移动命令rm等,均保存于外存(盘)上,即每个命令是存在于文件系统中某个目录下的单独程序。这样做的好处在于,可以很大程度地节省内存空间。16第九章操作系统接口3. Shell的种类现在流行的Shell有多种类型,下面简单介绍几种流行的Shell:(1) BourneShell。(2) CShell。CShell是一种比BShell更适于编程的Shell,是标准BSD(BerkeleySystemDistribution)命令解释。(3) KornShell。KornShell集合了CShell和BShell的优点,并且和BShell完全兼容,它的名字是KSh。17第九章操作系统接口9.2.2简单命令的类型根据简单命令功能的不同,可将它们分成如下五大类:1.进入与退出系统(1)进入系统,也称为注册。(2)退出系统。18第九章操作系统接口2.文件操作命令(1)显示文件内容命令cat。(2)复制文件副本的命令cp。(3)对已有文件改名的命令mv。(4)撤消文件的命令rm。(5)确定文件类型的命令file。19第九章操作系统接口3.目录操作命令(1)建立目录的命令mkdir(简称md)。(2)撤消目录的命令rmdir(简称rd)。(3)改变工作目录的命令cd。20第九章操作系统接口4.系统询问命令(1)访问当前日期和时间命令date。(2)询问系统当前用户的命令who。(3)显示当前目录路径名的命令pwd。21第九章操作系统接口9.2.3重定向与管道命令1.重定向命令在Linux系统中,由系统定义了三个文件。其中,有两个分别称为标准输入和标准输出的文件,各对应于终端键盘输入和终端屏幕输出。它们是在用户注册时,由Login程序打开的。这样,在用户程序执行时,隐含的标准输入是键盘输入,标准输出即屏幕(输出)显示。但用户程序中可能不要求从键盘输入,而是从某个指定文件上读取信息供程序使用;同样,用户可能希望把程序执行时所产生的结果数据写到某个指定文件中而非屏幕上。22第九章操作系统接口2.管道命令人们又进一步把重定向思想加以扩充,用符号“|”来连接两条命令,使其前一条命令的输出作为后一条命令的输入。23第九章操作系统接口9.2.4通信命令1.信箱通信命令mail信箱通信是作为在UNIX的各用户之间进行非交互式通信的工具。发信者把要发送的消息写成信件,“邮寄”到对方的信箱中。24第九章操作系统接口2.对话通信命令write用这条命令可以使用户与当前在系统中的其他用户直接进行联机通信。25第九章操作系统接口3.允许或拒绝接收消息的mesg命令其格式为:mesg[-n][-y]26第九章操作系统接口9.2.5后台命令有些命令需要执行很长的时间,这样,当用户键入该命令后,便会发现自己已无事可做,要一直等到该命令执行完毕,方可再键入下一条命令。这时用户自然会想到应该利用这段时间去做些别的事。UNIX系统提供了这种机制,用户可以在这种命令后面再加上“&”号,以告诉Shell将该命令放在后台执行,以便用户能在前台继续键入其它命令,完成其它工作。27第九章操作系统接口 9.3联机命令接口的实现9.3.1键盘终端处理程序在微机或终端上所配置的键盘终端处理程序应具有下述几方面的功能:①接收用户从终端上打入的字符;②字符缓冲,用于暂存所接收的字符;③回送显示;④屏幕编辑;⑤特殊字符处理。28第九章操作系统接口1.字符接收功能为了实现人机交互,键盘终端处理程序必须能够接收从终端输入的字符,并将之传送给用户程序。有两种方式可实现字符接收功能:(1)面向字符方式。(2)面向行方式。29第九章操作系统接口2.字符缓冲功能为了能暂存从终端键入的字符,以降低中断处理器的频率,在终端处理程序中,还必须具有字符缓冲功能。字符缓冲可采用以下两种方式之一:(1)专用缓冲方式。(2)公用缓冲方式。30第九章操作系统接口图9-1两种缓冲方式31第九章操作系统接口3.回送显示回送显示(回显)是指每当用户从键盘输入一个字符后,终端处理程序便将该字符送往屏幕显示。有些终端的回显由硬件实现,其速度较快,但往往会引起麻烦。如当用户键入口令时,为防止口令被盗用,显然不该有回显。此外,用硬件实现回显也缺乏灵活性,因而近年来多改用软件来实现回显,这样可以做到在用户需要时才回显。32第九章操作系统接口4.屏幕编辑用户经常希望能对从键盘打入的数据(字符)进行修改,如删除(插入)一个或多个字符。为此,在终端处理程序中,还应能实现屏幕编辑功能,包括能提供若干个编辑键。常用的编辑键有:(1)删除字符键。(2)删除一行键。(3)插入键。(4)移动光标键。(5)屏幕上卷或下移键等。33第九章操作系统接口5.特殊字符处理终端处理程序必须能对若干特殊字符进行及时处理,这些字符是:(1)中断字符。(2)停止上卷字符。(3)恢复上卷字符。34第九章操作系统接口9.3.2MS-DOS解释程序1.命令解释程序的作用在联机操作方式下,终端处理程序把用户键入的信息送键盘缓冲区中保存。一旦用户键入回车符,便立即把控制权交给命令解释程序。显然,对于不同的命令,应有能完成特定功能的命令处理程序与之对应。可见,命令解释程序的主要作用是在屏幕上给出提示符,请用户键入命令,然后读入该命令,识别命令,再转到相应命令处理程序的入口地址,把控制权交给该处理程序去执行,并将处理结果送屏幕上显示。若用户键入的命令有错,而命令解释程序未能予以识别,或在执行中间出现问题时,则应显示出某一出错信息。35第九章操作系统接口2.命令解释程序的组成MS-DOS是1981年由Microsoft公司开发的、配置在微机上的OS。随着微机的发展,MS-DOS的版本也在不断升级,由开始时的1.0版本升级到1994年的6.X版本。在此期间,它已是事实上的16位微机OS的标准。我们以MS-DOS操作系统中的COMMAND.COM处理程序为例来说明命令解释程序的组成。它包括以下三部分:(1)常驻部分。(2)初始化部分。(3)暂存部分。36第