1、第七章操作系统接口 第七章操作系统接口 7.1联机用户接口联机用户接口7.2Shell命令语言命令语言7.3系统调用系统调用7.4UNIX系统调用系统调用 7.5 图形用户接口图形用户接口 第七章操作系统接口 7.1联机用户接口联机用户接口 7.1.1 7.1.1 联机用户接口联机用户接口联机用户接口,也称为联机命令接口。不同操作系统的联机命令接口有所不同,这不仅指命令的种类、数量及功能方面,也可能体现在命令的形式、用法等方面。不同的用法和形式构成了不同的用户界面,可分成以下两种:(1)字符显示式用户界面;(2)图形化用户界面。第七章操作系统接口 1 1命令行方式命令行方式该方式是指以行为单位
2、输入和显示不同的命令。每行长度一般不超过256个字符,命令的结束通常以回车符为标记。命令的执行是串行、间断的,后一个命令的输入一般需等到前一个命令执行结束,如用户键入的一条命令处理完成后,系统发出新的命令输入提示符,用户才可以继续输入下一条命令。第七章操作系统接口 也有许多操作系统提供了命令的并行执行方式,例如一条命令的执行需要耗费较长时间,并且用户也不急需其结果时(即两条命令执行是不相关的),则可以在一个命令的结尾输入特定的标记,将该命令作为后台命令处理,用户接着即可继续输入下一条命令,系统便可对两条命令进行并行处理。一般而言,对新用户来说,命令行方式十分繁琐,难以记忆,但对有经验的用户而言
3、,命令行方式用起来快捷便当、十分灵活,所以,至今许多操作员仍常使用这种命令方式。简单命令的一般形式为:Command arg1 arg2 argn其中,Command 是命令名,又称命令动词,其余为该命令所带的执行参数,有些命令可以没有参数。第七章操作系统接口 2 2批命令方式批命令方式在操作命令的实际使用过程中,经常遇到需要对多条命令的连续使用,或若干条命令的重复使用,或对不同命令进行选择性使用的情况。如果用户每次都采用命令行方式,将命令一条条由键盘输入,既浪费时间,又容易出错。因此,操作系统都支持一种称为批命令的特别命令方式,允许用户预先把一系列命令组织在一种称为批命令文件的文件中,一次建
4、立,多次执行。使用这种方式可减少用户输入命令的次数,既节省了时间和减少了出错概率,又方便了用户。通常批命令文件都有特殊的文件扩展名,如MS-DOS系统的.BAT文件。第七章操作系统接口 同时,操作系统还提供了一套控制子命令,增强对命令文件使用的支持。用户可以使用这些子命令和形式参数书写批命令文件,使得这样的批命令文件可以执行不同的命令序列,从而增强了命令接口的处理能力。如UNIX 和Linux 中的Shell不仅是一种交互型命令解释程序,也是一种命令级程序设计语言解释系统,它允许用户使用Shell 简单命令、位置参数和控制流语句编制带形式参数的批命令文件,称做Shell 文件或Shell 过程
5、,Shell 可以自动解释和执行该文件或过程中的命令。第七章操作系统接口 7.1.27.1.2联机命令的类型联机命令的类型为了能向用户提供多方面的服务,通常,OS都向用户提供了几十条甚至上百条的联机命令。根据这些命令所完成功能的不同,可把它们分成以下几类:系统访问类;磁盘操作类;文件操作类;目录操作类;通信类;其他命令。现分述如下。第七章操作系统接口 1 1系统访问类系统访问类在单用户微型机中,一般没有设置系统访问命令。然而在多用户系统中,为了保证系统的安全性,都毫无例外地设置了系统访问命令,即注册命令Login。用户在每次开始使用某终端时,都须使用该命令,使系统能识别该用户。凡要在多用户系统
6、的终端上上机的用户,都必须先在系统管理员处获得一合法的注册名和口令。以后,每当用户在接通其所用终端的电源后,便由系统直接调用,并在屏幕上显示出以下的注册命令:第七章操作系统接口 Login:/提示用户键入自己的注册名当用户键入正确的注册名,并按下回车键后,屏幕上又会出现:Password:/提示用户键入自己的口令用户在键入口令时,系统将关闭掉回送显示,以使口令不在屏幕上显示出来。如果键入的口令正确而使注册成功时,屏幕上会立即出现系统提示符(所用符号随系统而异),表示用户可以开始键入命令。如果用户多次(通常不超过三次)键入的注册名或口令都有错,系统将解除与用户的联接。第七章操作系统接口 2 2磁
7、盘操作命令磁盘操作命令在微机操作系统中,通常都提供了若干条磁盘操作命令。(1)磁盘格式化命令Format。它被用于对指定驱动器上的软盘进行格式化。每张新盘在使用前都必须先格式化。其目的是使磁盘记录格式能为操作系统所接受。可见,不同操作系统将磁盘初始化后的格式各异。此外,在格式化过程中,还将对有缺陷的磁道和扇区加保留记号,以防止将它分配给数据文件。第七章操作系统接口(2)复制整个软盘命令Diskcopy。该命令用于复制整个磁盘,另外它还有附加的格式化功能。如果目标盘片是尚未格式化的,则该命令在执行时,首先将未格式化的软盘格式化,然后再进行复制。(3)软盘比较命令Diskcomp。该命令用于将源盘
8、与目标盘的各磁道及各扇区中的数据逐一进行比较。(4)备份命令Backup。该命令用于把硬盘上的文件复制到软盘上,而RESTORE命令则完成相反的操作。第七章操作系统接口 3 3文件操作命令文件操作命令每个操作系统都提供了一组文件操作命令。在微机OS中的文件操作命令有下述几种:(1)显示文件命令type:用于将指定文件内容显示在屏幕上。(2)拷贝文件命令copy:用于实现文件的拷贝。(3)文件比较命令comp:用于对两个指定文件进行比较。两文件可以在同一个或不同的驱动器上。(4)重新命名命令Rename:用于将以第一参数命名的文件改成用第二参数给定的名字。(5)删除文件命令erase:用于删除一
9、个或一组文件,当参数路径名为*.BAK时,表示删除指定目录下的所有其扩展名为.Bak的文件。第七章操作系统接口 4 4目录操作命令目录操作命令(1)建立子目录命令mkdir:用于建立指定名字的新目录。(2)显示目录命令dir:用于显示指定磁盘中的目录项。(3)删除子目录命令rmdir:用于删除指定的子目录文件,但不能删除普通文件,而且,一次只能删除一个空目录(其中仅含“.”和“.”两个文件),不能删除根及当前目录。(4)显示目录结构命令tree:用于显示指定盘上的所有目录路径及其层次关系。(5)改变当前目录命令chdir:用于将当前目录改变为由路径名参数给定的目录。用“.”作参数时,表示应返回
10、到上一级目录下。第七章操作系统接口 5 5其它命令其它命令(1)输入输出重定向命令。在有的OS中定义了两个标准I/O设备。通常,命令的输入取自标准输入设备,即键盘;而命令的输出通常是送往标准输出设备,即显示终端。如果在命令中设置输出重定向“”符,其后接文件名或设备名,表示将命令的输出改向,送到指定文件或设备上。类似地,若在命令中设置输入重定向“”符,则不再是从键盘而是从重定向符左边参数所指定的文件或设备上,取得输入信息。第七章操作系统接口(2)管道连接。这是指把第一条命令的输出信息作为第二条命令的输入信息;类似地,又可把第二条命令的输出信息作为第三条命令的输入信息。这样,由两个(含两条)以上的
11、命令可形成一条管道。在MS-DOS和UNIX中,都用“|”作为管道符号,其一般格式为:Command1|Command2|Commandn;第七章操作系统接口(3)过滤命令。在UNIX及MS-DOS中都有过滤命令,用于读取指定文件或标准输入,从中找出由参数指定的模式,然后把所有包含该模式的行都打印出来。例如,MS-DOS中用命令find/N“erase”(路径名)可对由路径名指定的输入文件逐行检索,把含有字符串“erase”的行输出。其中,/N是选择开关,表示输出含有指定字串的行;如果不用N而用C,则表示只输出含有指定字串的行数;若用V,则表示输出不含指定字串的行。第七章操作系统接口(4)批命
12、令。为了能连续地使用多条键盘命令,或多次反复地执行指定的若干条命令,而又免去每次重敲这些命令的麻烦,可以提供一特定文件。在MS-DOS中提供了一种特殊文件,其后缀名用“.BAT”;在UNIX系统中称为命令文件。它们都是利用一些键盘命令构成一个程序,一次建立供多次使用。在MS-DOS中用batch命令去执行由指定或默认驱动器的工作目录上指定文件中所包含的一些命令。第七章操作系统接口 7.1.37.1.3键盘终端处理程序键盘终端处理程序为了实现人机交互,还须在微机或终端上配置相应的键盘终端处理程序,它应具有下述几方面的功能:(1)接收用户从终端上打入的字符。(2)字符缓冲,用于暂存所接收的字符。(
13、3)回送显示。(4)屏幕编辑。(5)特殊字符处理。第七章操作系统接口 1 1字符接收功能字符接收功能为了实现人机交互,键盘终端处理程序必须能够接收从终端输入的字符,并将之传送给用户程序。有两种方式来实现字符接收功能:(1)面向字符方式。驱动程序只接收从终端打入的字符,并且不加修改地将它传送给用户程序。这通常是一串未加工的ASCII码。但大多数的用户并不喜欢这种方式。第七章操作系统接口(2)面向行方式。终端处理程序将所接收的字符暂存在行缓冲中,并可对行内字符进行编辑。仅在收到行结束符后,才将一行正确的信息送命令解释程序。在有的计算机中,从键盘硬件送出的是键的编码(简称键码),而不是ASCII码。
14、例如,当打入a键时,是将键码“30”放入I/O寄存器,此时,终端处理程序必须参照某种表格,将键码转换成ASCII码。应当注意,某些IBM的兼容机使用的不是标准键码。此时,处理程序还须选用相应的表格将其转换成标准键码。第七章操作系统接口 2 2字符缓冲功能字符缓冲功能为了能暂存从终端键入的字符,以降低中断处理器的频率,在终端处理程序中,还必须具有字符缓冲功能。字符缓冲可采用以下两种方式之一:(1)专用缓冲区方式。这是指系统为每个终端设置一个缓冲区,暂存用户键入的一批字符,缓冲区的典型长度为200个字符左右。这种方式较适合于单用户微机或终端很少的多用户机。当终端数目较多时,需要的缓冲区数目可能很大
15、,且每个缓冲区的利用率也很低。例如,当有100个终端时,要求有20 KB的缓冲区。但专用缓冲区方式可使终端处理程序简化。图7-1(a)示出了专用缓冲区方式。第七章操作系统接口 图7-1两种缓冲方式 终端专用缓冲区主机终端(a)专用缓冲区方式终端主机(b)公用缓冲池方式公用缓冲池第七章操作系统接口(2)公用缓冲池方式。系统不必为每个终端设置专用缓冲区,只须设置一个由多个缓冲区构成的公用缓冲池。其中的每个缓冲区大小相同,如为20个字符,再将所有的空缓冲区链接成一个空缓冲区链。当终端有数据输入时,可先向空缓冲区链申请一空缓冲区来接收输入字符;当该缓冲区装满后,再申请一空缓冲区。这样,直至全部输入完毕
16、,并利用链接指针将这些装有输入数据的缓冲区链接成一条输入链。每当该输入链中一个缓冲区内的字符被全部传送给用户程序后,便将该缓冲区从输入链中移出,再重新链入空缓冲区链中。显然,利用公用缓冲池方式可有效地提高缓冲的利用率。图7-1(b)示出了公用缓冲池方式。第七章操作系统接口 3 3回送显示回送显示回送显示(回显)是指每当用户从键盘输入一个字符后,终端处理程序便将该字符送往屏幕显示。有些终端的回显由硬件实现,其速度较快,但往往会引起麻烦。如当用户键入口令时,为防止口令被盗用,显然不该有回显。此外,用硬件实现回显也缺乏灵活性,因而近年来多改用软件来实现回显,这样可以做到在用户需要时才回显。用软件实现
17、回显,还可方便地进行字符变换,如将键盘输入的小写英文字母变成大写,或相反。驱动程序在将输入的字符送往屏幕回显时,应打印在正确的位置上;当光标走到一行的最后一个位置后,便应返回到下一行的开始位置。例如,当所键入的字符数目超过一行的80个(字符)时,应自动地将下一个字符打印到下一行的开始位置。第七章操作系统接口 4 4屏幕编辑屏幕编辑用户经常希望能对从键盘打入的数据(字符)进行修改,如删除(插入)一个或多个字符。为此,在终端处理程序中,还应能实现屏幕编辑功能,包括能提供若干个编辑键。常用的编辑键有:(1)删除字符键。它允许将用户刚键入的字符删除。在有的系统中是利用退格键即Backspace(Ctr
18、l+H)键。当用户敲该键时,处理程序并不将刚键入的字符送入字符队列,而是从字符队列中移出其前的一个字符。第七章操作系统接口(2)删除一行键。该键用于将刚输入的一行删去。(3)插入键。利用该键在光标处可插入一个字符或一行正文。(4)移动光标键。在键盘上有用于对光标进行上、下、左、右移动的键。(5)屏幕上卷或下移键,等等。第七章操作系统接口 5 5特殊字符处理特殊字符处理终端处理程序必须能对若干特殊字符进行及时处理,这些字符是:(1)中断字符。当程序在运行中出现异常情况时,用户可通过键入中断字符的办法来中止当前程序的运行。在许多系统中是利用Break或Delete或Ctrl+C键作为中断字符。对中
19、断字符的处理比较复杂。当终端处理程序收到用户键入的中断字符后,将向该终端上的所有进程发送一个要求进程终止的软中断信号,这些进程收到该软中断信号后,便进行自我终止。第七章操作系统接口(2)停止上卷字符。用户键入此字符后,终端处理程序应使正在上卷的屏幕暂停上卷,以便用户仔细观察屏幕内容。在有的系统中,是利用Ctrl+S键来停止屏幕上卷的。(3)恢复上卷字符。有的系统利用Ctrl+Q键使停止上卷的屏幕恢复上卷。终端处理程序收到该字符后,便恢复屏幕的上卷功能。上述的Ctrl+S与Ctrl+Q两字符并不被存储,而是被用去设置终端数据结构中的某个标志。每当终端试图输出时,都须先检查该标志。若该标志已被设置
20、,便不再把字符送至屏幕。第七章操作系统接口 7.1.47.1.4命令解释程序命令解释程序1 1命令解释程序的作用命令解释程序的作用在联机操作方式下,终端处理程序把用户键入的信息送键盘缓冲区中保存。一旦用户键入回车符,便立即把控制权交给命令处理程序。显然,对于不同的命令,应有能完成特定功能的命令处理程序与之对应。可见,命令解释程序的主要作用是在屏幕上给出提示符,请用户键入命令,然后读入该命令,识别命令,再转到相应命令处理程序的入口地址,把控制权交给该处理程序去执行,并将处理结果送屏幕上显示。若用户键入的命令有错,而命令解释程序未能予以识别,或在执行中间出现问题时,则应显示出某一出错信息。第七章操
21、作系统接口 2 2命令解释程序的组成命令解释程序的组成(1)常驻部分。这部分包括一些中断服务子程序。例如:正常退出中断INT 20,它用于在用户程序执行完毕后,退回操作系统;驻留退出中断INT 27,用这种方式,退出程序可驻留在内存中;还有用于处理和显示标准错误信息的INT 24等。常驻部分还包括这样的程序:当用户程序终止后,它检查暂存部分是否已被用户程序覆盖,若已被覆盖,便重新将暂存部分调入内存。第七章操作系统接口(2)初始化部分。它跟随在常驻内存部分之后,在启动时获得控制权。这部分还包括对AUTOEXEC.BAT文件的处理程序,并决定应用程序装入的基地址。每当系统接电或重新启动后,由处理程
22、序找到并执行AUTOEXEC.BAT文件。由于该文件在用完后不再被需要,因而它将被第一个由COMMAND.COM装入的文件所覆盖。(3)暂存部分。这部分主要是命令解释程序,并包含了所有的内部命令处理程序、批文件处理程序,以及装入和执行外部命令的程序。它们都驻留在内存中,但用户程序可以使用并覆盖这部分内存,在用户程序结束时,常驻程序又会将它们重新从磁盘调入内存,恢复暂存部分。第七章操作系统接口 3 3命令解释程序的工作流程命令解释程序的工作流程系统在接通电源或复位后,初始化部分获得控制权,对整个系统完成初始化工作,并自动执行AUTOEXEC.BAT文件,之后便把控制权交给暂存部分。暂存部分首先读
23、入键盘缓冲区中的命令,判别其文件名、扩展名及驱动器名是否正确。若发现有错,在给出出错信息后返回;若无错,再识别该命令。一种简单的识别命令的方法是基于一张表格,其中的每一表目都是由命令名及其处理程序的入口地址两项所组成的。如果暂存部分在该表中能找到键入的命令,且是内部命令,便可以直接从对应表项中获得该命令处理程序的入口地址,然后把控制权交给该处理程序去执行该命令。如果发现键入的命令不属于内部命令而是外部命令,则暂存部分还须为之建立命令行;再通过执行系统调用exec来装入该命令的处理程序,并得到其基地址;然后把控制权交给该程序去执行相应的命令。图7-2 示出了MS-DOS的COMMAND.COM的
24、工作流程。第七章操作系统接口 图7-2COMMAND.COM的工作流程 是内部命令?DIR命令处理程序Type命令处理程序Copy命令处理程序Date命令处理程序命令合法否?输入命令行从外存调入外部命令执行显示提示符第七章操作系统接口 7.2Shell命令语言命令语言 7.2.17.2.1简单命令简单命令所谓简单命令,实际上是一个能完成某种功能的目标程序的名字。UNIX系统规定的命令由小写字母构成(仅前8个字母有效)。命令可带有参数表,用于给出执行命令时的附加信息。命令名与参数表之间还可使用一种称为选项的自变量,用破折号开始,后跟一个或多个字母、数字。选项是对命令的正常操作加以修改,一条命令可
25、有多个选项,命令的格式如下:$Command-option argument list例如:$LS file1 file2 第七章操作系统接口 这是一条不带选项的列目录命令,$是系统提示符。该命令用于列出file1和file2两个目录文件中所包含的目录项,并隐含地指出按英文字母顺序列表。若给出-tr选项,该命令可表示成:$LS-tr file1 file 2 其中,选项t和r分别表示按最近修改次序及按反字母顺序列表。通常,命令名与该程序的功能紧密相关,以便于记忆。命令参数可多可少,也可缺省。例如:$LS 第七章操作系统接口 1 1进入与退出系统进入与退出系统(1)进入系统,也称为注册。事先,用
26、户须与系统管理员商定一个唯一的用户名。管理员用该名字在系统文件树上,为用户建立一个子目录树的根结点。当用户打开自己的终端时,屏幕上会出现Login:提示,这时用户便可键入自己的注册名,并用回车符结束。然后,系统又询问用户口令,用户可用回车符或事先约定的口令键入。这两步均须正确通过检查,才能出现系统提示符(随系统而异),以提示用户自己已通过检查,可以使用系统。若任一步骤有错,系统均通过提示要求用户重新键入。第七章操作系统接口(2)退出系统。每当用户用完系统后,应向系统报告自己不再往系统装入任何处理要求。系统得知后,便马上为用户记账,清除用户的使用环境。若用户使用系统是免费的,退出操作仅仅是一种礼
27、貌。如果用户使用的是多终端中的一个终端,为了退出,用户只需按下Control-D键即可,系统会重新给出提示符即Login,以表明该终端可供另一新用户使用。用户的进入与退出过程,实际上是由系统直接调用Login及Logout程序完成的。第七章操作系统接口 2 2文件操作命令文件操作命令(1)显示文件内容命令cat。如果用户想了解自己在当前目录中的某个或某几个指定文件的内容时,便可使用下述格式的cat命令:$cat filename1 filename2 执行上述命令后,将按参数指定的顺序,依次把所列名字的文件内容送屏幕显示。若键入文件名有错,或该文件不在当前目录下,则该命令执行结果将显示指定文件
28、不能打开的信息。第七章操作系统接口(2)复制文件副本的命令cp。其格式为:cp source target该命令用于对已存在的文件source建立一个名为target的副本。(3)对已有文件改名的命令mv。其格式为mv oldname newname用于把原来的老名字改成指定的新名字。(4)撤消文件的命令rm。它给出一个参数表,是要撤消的文件名清单。(5)确定文件类型的命令file。该命令带有一个参数表,用于给出想了解其(文件)类型的文件名清单。命令执行的结果将在屏幕上显示出各个文件的类型。第七章操作系统接口 3 3目录操作命令目录操作命令(1)建立目录的命令mkdir(简称md)。当用户要创
29、建或保存较多的文件时,应该以自己的注册名作为根结点,建立一棵子目录树,子树中的各结点(除树叶外)都是目录文件。可用md命令来构建一个目录,参数是新创建目录的名字。但应注意该命令的使用,必须在其父目录中有写许可时,才允许为其创建子目录。(2)撤消目录的命令rmdir(简称rd)。它实际上是rm命令的一个特例,用于删除一个或多个指定的下级空目录。若目录下仍有文件,该命令将被认为是一个错误操作,这样可以防止因不慎而消除了一个想保留的文件。命令的参数表用于给出要撤消的目录文件清单。第七章操作系统接口(3)改变工作目录的命令cd。不带参数的cd命令将使用户从任何其它目录回到自己的注册目录上;若用全路径名
30、作参数,cd命令将使用户来到由该路径名确定的结点上;若用当前目录的子目录名作参数,将把用户移到当前目录指定的下一级目录上(即用其下一级目录作为新的当前目录);用“.”号或“*”号将使当前目录上移一级,即移到其父结点上。(4)改变对文件的存取方式的命令chmod。其格式为chmod op-code permission filename 第七章操作系统接口 其中,用于指明访问者的身份,可以是用户自己、用户组、所有其他用户及全部,分别用u、g、o和a表示;op-code是操作码,分别用+、-及=表示增加、消除及赋予访问者以某种权利;而permission则是分别用r、w及x表示读、写及执行许可。例
31、如,命令chmod go-w temp表示消除用户组及所有其他用户对文件temp的写许可。第七章操作系统接口 4 4系统询问命令系统询问命令(1)访问当前日期和时间命令date。例如,用命令$date 屏幕上将给出当前的日期和时间,如为Wed Ang 14 09:27:20 PDT 1991表示当前日期是1991年9月14日、星期三,还有时间信息。若在命令名后给出参数,则date程序把参数作为重置系统时钟的时间。第七章操作系统接口(2)询问系统当前用户的命令who。who命令可列出当前每一个处在系统中的用户的注册名、终端名和注册进入时间,并按终端标志的字母顺序排序。例如,报告有下列三用户:Ve
32、ronica bxo66 Aug2713:28Rathomas dz24 Aug2807:42Jlyates tty5 Aug2807:39 第七章操作系统接口 用户可用who命令了解系统的当前负荷情况;也可在与其他用户通信之前,用此命令去核实一下当前进入系统的用户及其所使用终端名和所用的正确的注册名。例如,用户在使用系统的过程中,有时会发现在打入一个请求后,系统响应很慢,这时用户可用“who|we-L”命令,使系统打印出当前的用户数目而不显示系统用户名等的完整清单,以得知当前用户数目。第七章操作系统接口(3)显示当前目录路径名的命令pwd。当前目录的路径名是从根结点开始,通过分支上的所有结点
33、到达当前目录结点为止的路径上的所有结点的名字拼起来构成的。用户的当前目录可能经常在树上移动。如果用户忘记了自己在哪里,便可用pwd确定自己的位置。第七章操作系统接口 7.2.27.2.2重定向与管道命令重定向与管道命令1 1重定向命令重定向命令在UNIX系统中,由系统定义了三个文件。其中,有两个分别称为标准输入和标准输出的文件,各对应于终端键盘输入和终端屏幕输出。它们是在用户注册时,由Login程序打开的。这样,在用户程序执行时,隐含的标准输入是键盘输入,标准输出即屏幕(输出)显示。但用户程序中可能不要求从键盘输入,而是从某个指定文件上读取信息供程序使用;同样,用户可能希望把程序执行时所产生的
34、结果数据,写到某个指定文件中而非屏幕上。这就使用户必须去改变输入与输出文件,即不使用标准输入、标准输出,而是把另外的某个指定文件或设备,作为输入或输出文件。第七章操作系统接口 Shell向用户提供了这种用于改变输入、输出设备的手段,此即标准输入与标准输出的重新定向。用重定向符“”分别表示输入转向与输出转向。例如,对于命令$cat file1 表示将文件file1的内容在标准输出上打印出来。若改变其输出,用命令$cat file1file2 时,表示把文件file1的内容打印输出到文件file2上。同理,对于命令$wc 第七章操作系统接口 须指明的是,在做输出转向时,若上述的文件file2并不存
35、在,则先创建它;若已存在,则认为它是空白的,执行上述输出转向命令时,是用命令的输出数据去重写该文件;如果文件file2事先已有内容,则命令执行结果将用文件file1的内容去更新文件file2的原有内容。现在,如果又要求把file4的内容附加到现有的文件file2的末尾,则应使用另一个输出转向符“”,即此时应再用命令$cat file4file2 第七章操作系统接口 便可在文件file2中,除了上次复制的file1内容外,后面又附加了file4的内容。当然,若想一次把两个文件file1和file4全部复制到file2中,则可用命令$cat file1 file4file2 此外,也可在一个命令行
36、中,同时改变输入与输出。例如,命令行a.outfile0 表示在可执行文件a.out执行时,将从文件file1中提取数据,而把a.out的执行结果数据输出到文件file0中。第七章操作系统接口 2 2管道命令管道命令在有了上述的重定向思想后,为了进一步增强功能,人们又进一步把这种思想加以扩充,用符号“|”来连接两条命令,使其前一条命令的输出作为后一条命令的输入。即$command 1|command 2 例如,对于下述输入cat file|wc 将使命令cat把文件file中的数据作为wc命令的计数用输入。第七章操作系统接口 从概念上说,系统执行上述输入时,将为管道建立一个作为通信通道的pip
37、e文件。这时,cat命令的输出既不出现在终端(屏幕)上,也不存入某中间文件,而是由UNIX系统来“缓冲”第一条命令的输出,并作为第二条命令的输入。在用管道线所连接的命令之间,实现单向、同步运行。其单向性表现在:只把管道线前面的命令的输出送入管道,而管道的输出数据仅供管道线后面的命令去读取。管道的同步特性则表现为:当一条管道满时,其前一条命令停止执行;而当管道空时,则其后一条命令停止运行。除此两种情况外,用管道所连接的两条命令“同时”运行。可见,利用管道功能,可以流水线方式实现命令的流水线化,即在单一命令行下,同时运行多条命令,以加速复杂任务的完成。第七章操作系统接口 7.2.37.2.3通信命
38、令通信命令1 1信箱通信命令信箱通信命令mailmailmail命令被作为在UNIX的各用户之间进行非交互式通信的工具。mail采用信箱通信方式。发信者把要发送的消息写成信件,“邮寄”到对方的信箱中。通常各用户的私有信箱采用各自的注册名命名,即它是目录/usr/spool/mail中的一个文件,而文件名又是用接收者的注册名来命名的。信箱中的信件可以一直保留到被信箱所有者消除为止。第七章操作系统接口 因而,用mail进行通信时,不要求接收者利用终端与发送者会话。亦即,在发信者发送信息时,虽然接收者已在系统中注册过,但允许他此时没有使用系统;也可以是虽在使用系统,但拒绝接收任何信息。mail命令在
39、用于发信时,把接收者的注册名当作参数打入后,便可在新行开始键入信件正文,最后仍在一个新行上用“.”来结束信件或用“D”退出mail程序(也可带选项,此处从略)。第七章操作系统接口 接收者也用mail命令读取信件,可使用可选项r、q或p等。其命令格式为mail-r-q-p-file-F persons由于信箱中可存放所接收的多个信件,这就存在一个选取信件的问题。上述几个选项分别表示:按先进先出顺序显示各信件的内容;在输入中断字符(Del或Return)后,退出mail程序而不改变信箱的内容;一次性地显示信箱全部内容而不带询问;把指定文件当作信件来显示。在不使用-p选项时,表示在显示完一个信件后,
40、便出现“?”,以询问用户是否继续显示下一条消息,或选读完最后一条消息后退出mail。第七章操作系统接口 2 2对话通信命令对话通信命令writewrite用这条命令可以使用户与当前在系统中的其他用户直接进行联机通信。由于UNIX系统允许一个用户同时在几个终端上注册,故在用此命令前,要用who命令去查看目标用户当前是否联机,或确定接收者所使用的终端名。命令格式为write userttyname当接收者只有一个终端时,终端名可缺省。当接收者的终端被允许接收消息时,屏幕提示会通知接收者源用户名及其所用终端名。第七章操作系统接口 3 3允许或拒绝接收消息命令允许或拒绝接收消息命令mesgmesgme
41、sg命令的格式为:mesg-n-y选项n表示拒绝对方的写许可(即拒绝接收消息);选项y指示恢复对方的写许可,仅在此时,双方才可联机通信。当用户正在联机编写一份资料而不愿被别人干扰时,常选用n选项来拒绝对方的写许可。编辑完毕,再用带有y选项的mesg命令来恢复对方的写许可,不带自变量的mesg命令只报告当前状态而不改变它。第七章操作系统接口 7.2.47.2.4后台命令后台命令有些命令需要执行很长的时间,这样,当用户键入该命令后,便会发现自己已无事可做,要一直等到该命令执行完毕,方可再键入下一条命令。这时用户自然会想到应该利用这段时间去做些别的事。UNIX系统提供了这种机制,用户可以在这种命令后
42、面再加上“&”号,以告诉Shell将该命令放在后台执行,以便用户在前台继续键入其它命令。第七章操作系统接口 在后台运行的程序仍然把终端作为它的标准输出和标准错误文件,除非对它们进行重新定向。其标准输入文件是自动地被从终端定向到一个被称为“/dev/null”的空文件中。若shell未重定向标准输入,则shell和后台进程将会同时从终端进行读入。这时,用户从终端键入的字符可能被发送到一个进程或另一个进程,并不能预测哪个进程将得到该字符。因此,对所有在后台运行的命令的标准输入,都必须加以重定向,从而使从终端键入的所有字符都被送到Shell进程。用户可使用ps、wait及Kill命令去了解和控制后台
43、进程的运行。第七章操作系统接口 7.3系系 统统 调调 用用 7.3.17.3.1系统调用的基本概念系统调用的基本概念通常,在OS的核心中都设置了一组用于实现各种系统功能的子程序(过程),并将它们提供给应用程序调用。由于这些程序或过程是OS系统本身程序模块中的一部分,为了保护操作系统程序不被用户程序破坏,一般都不允许用户程序访问操作系统的程序和数据,所以也不允许应用程序采用一般的过程调用方式来直接调用这些过程,而是向应用程序提供了一系列的系统调用命令,让应用程序通过系统调用去调用所需的系统过程。第七章操作系统接口 1 1系统态和用户态系统态和用户态在计算机系统中,通常运行着两类程序:系统程序和
44、应用程序,为了保证系统程序不被应用程序有意或无意地破坏,为计算机设置了两种状态:系统态(也称为管态或核心态)和用户态(也称为目态)。操作系统在系统态运行,而应用程序只能在用户态运行。在实际运行过程中,处理机会在系统态和用户态间切换。相应地,现代多数操作系统将CPU的指令集分为特权指令和非特权指令两类。第七章操作系统接口 1)特权指令所谓特权指令,就是在系统态时运行的指令,是关系到系统全局的指令。其对内存空间的访问范围基本不受限制,不仅能访问用户存储空间,也能访问系统存储空间,如启动各种外部设备、设置系统时钟时间、关中断、清主存、修改存储器管理寄存器、执行停机指令、转换执行状态等。特权指令只允许
45、操作系统使用,不允许应用程序使用,否则会引起系统混乱。第七章操作系统接口 2)非特权指令非特权指令是在用户态时运行的指令。一般应用程序所使用的都是非特权指令,它只能完成一般性的操作和任务,不能对系统中的硬件和软件直接进行访问,其对内存的访问范围也局限于用户空间。这样,可以防止应用程序的运行异常对系统造成的破坏。这种限制是由硬件实现的,如果在应用程序中使用了特权指令,就会发出权限出错信号,操作系统捕获到这个信号后,将转入相应的错误处理程序,并将停止该应用程序的运行,重新调度。第七章操作系统接口 2 2系统调用系统调用如上所述,一方面由于系统提供了保护机制,防止应用程序直接调用操作系统的过程,从而
46、避免了系统的不安全性。但另一方面,应用程序又必须取得操作系统所提供的服务,否则,应用程序几乎无法作任何有价值的事情,甚至无法运行。为此,在操作系统中提供了系统调用,使应用程序可以通过系统调用的方法,间接调用操作系统的相关过程,取得相应的服务。当应用程序中需要操作系统提供服务时,如请求I/O资源或执行I/O操作,应用程序必须使用系统调用命令。由操作系统捕获到该命令后,便将CPU的状态从用户态转换到系统态,然后执行操作系统中相应的子程序(例程),完成所需的功能。执行完成后,系统又将CPU状态从系统态转换到用户态,再继续执行应用程序。第七章操作系统接口 可见,系统调用在本质上是应用程序请求OS内核完
47、成某功能时的一种过程调用,但它是一种特殊的过程调用,它与一般的过程调用有下述几方面的明显差别:(1)运行在不同的系统状态。一般的过程调用,其调用程序和被调用程序都运行在相同的状态系统态或用户态;而系统调用与一般调用的最大区别就在于:调用程序是运行在用户态,而被调用程序是运行在系统态。第七章操作系统接口(2)状态的转换通过软中断进入。由于一般的过程调用并不涉及到系统状态的转换,可直接由调用过程转向被调用过程。但在运行系统调用时,由于调用和被调用过程是工作在不同的系统状态,因而不允许由调用过程直接转向被调用过程。通常都是通过软中断机制,先由用户态转换为系统态,经核心分析后,才能转向相应的系统调用处
48、理子程序。(3)返回问题。在采用了抢占式(剥夺)调度方式的系统中,在被调用过程执行完后,要对系统中所有要求运行的进程做优先权分析。当调用进程仍具有最高优先级时,才返回到调用进程继续执行;否则,将引起重新调度,以便让优先权最高的进程优先执行。此时,将把调用进程放入就绪队列。第七章操作系统接口(4)嵌套调用。像一般过程一样,系统调用也可以嵌套进行,即在一个被调用过程的执行期间,还可以利用系统调用命令去调用另一个系统调用。当然,每个系统对嵌套调用的深度都有一定的限制,例如最大深度为6。但一般的过程对嵌套的深度则没有什么限制。图7-3示出了没有嵌套及有嵌套的两种系统调用情况。第七章操作系统接口 图7-
49、3系统功能的调用 系统调用命令调用返回系统功能用户程序(a)系统调用与返回系统调用命令调用系统功能系统调用命令返回系统子功能(b)程序之间的嵌套调用第七章操作系统接口 3 3中断机制中断机制系统调用是通过中断机制实现的,并且一个操作系统的所有系统调用都通过同一个中断入口来实现。如MS-DOS提供了INT 21H,应用程序通过该中断获取操作系统的服务。对于拥有保护机制的操作系统来说,中断机制本身也是受保护的,在IBM PC上,Intel提供了多达255 个中断号,但只有授权给应用程序保护等级的中断号,才是可以被应用程序调用的。对于未被授权的中断号,如果应用程序进行调用,同样会引起保护异常,而导致
50、自己被操作系统停止。如Linux 仅仅给应用程序授权了4 个中断号:3、4、5以及80h,前三个中断号是提供给应用程序调试所使用的,而80h正是系统调用(system call)的中断号。第七章操作系统接口 7.3.27.3.2系统调用的类型系统调用的类型1 1进程控制类系统调用进程控制类系统调用这类系统调用主要用于对进程的控制,如创建一个新的进程和终止一个进程的运行,获得和设置进程属性等。1)创建和终止进程的系统调用在多道程序环境下,为使多道程序能并发执行,必须先利用创建进程的系统调用来为欲参加并发执行的各程序分别创建一个进程。当进程已经执行结束时、或因发生异常情况而不能继续执行时,可利用终
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。