第七章 操作系统接口
7.1 联机命令接口
7.2 Shell命令语言
7.3 系统调用
7.4 UNIX系统调用
7.5 图形用户接口第七章 操作系统接口第七章 操作系统接口
7.1 联机命令接口
7.1.1 联机命令的类型为了能向用户提供多方面的服务,通常,OS都向用户提供了几十条甚至上百条的联机命令 。 根据这些命令所完成功能的不同,可把它们分成以下几类,① 系统访问类;
② 磁盘操作类; ③ 文件操作类; ④ 目录操作类; ⑤ 通信类; ⑥ 其他命令 。
第七章 操作系统接口
1.
在单用户微型机中,一般没有设置系统访问命令; 然而在多用户系统中,为了保证系统的安全性,都毫无例外地设置了系统访问命令,即注册命令 Login。 用户在每次开始使用某终端时,都须使用该命令,使系统能识别该用户 。 凡要在多用户系统的终端上上机的用户,都必须先在系统管理员处获得一合法的注册名和口令 。 以后,每当用户在接通其所用终端的电源后,便由系统直接调用并在屏幕上显示出以下的
Login,/
当用户键入正确的注册名,并按下回车键后,屏幕上又
Password,/
第七章 操作系统接口
2.
(1) 磁盘格式化命令 Format。
它被用于对指定驱动器上的软盘进行格式化 。 每张新盘在使用前都必须先格式化 。 其目的是使其记录格式能为操作系统所接受,可见,不同操作系统将磁盘初始化后的格式各异 。 此外,在格式化过程中,还将对有缺陷的磁道和扇区加保留记号,以防止将它分配给数据文件 。
第七章 操作系统接口
(2) 复制整个软盘命令 Diskcopy。
该命令用于复制整个磁盘,另外它还有附加的格式化功能 。 如果目标盘片是尚未格式化的,则该命令在执行时,首先将未格式化的软盘格式化,然后再进行复制 。
(3) 软盘比较命令 Diskcomp。
该命令用于将源盘与目标盘的各磁道及各扇区中的数据逐一进行比较 。
(4) 备份命令 Backup。
该命令用于把硬盘上的文件复制到软盘上;而
RESTORE命令则完成相反的操作。
第七章 操作系统接口
3,文件操作命令
(1) 显示文件命令 type。 用于将指定文件显示在屏幕上 。
(2) 拷贝文件命令 copy。 用于实现文件的拷贝 。
(3) 文件比较命令 comp。 该命令用于对两个指定文件进行比较 。 两文件可以在同一个或不同的驱动器上 。
(4) 重新命名命令 Rename。 该命令用于将以第一参数命名的文件,改成用第二参数给定的名字 。
(5) 删除文件命令 erase。 该命令用于删除一个或一组文件,当参数路径名为 *.BAK时,表示删除指定目录下的所有其扩展名为,Bak的文件 。
第七章 操作系统接口
4.
(1) 建立子目录命令 mkdir。 用于建立指定名字的新目录 。
(2) 显示目录命令 dir。 显示指定磁盘中的目录项 。
(3) 删除子目录命令 rmdir。 该命令用于删除指定的子目录文件,但不能删除普通文件,而且,一次只能删除一个空目录 (其中仅含,,”和,,.”两个文件 ),。
(4) 显示目录结构命令 tree。 该命令用于显示指定盘上的所有目录路径及其层次关系 。
(5) 改变当前目录命令 chdir。 该命令用于将当前目录改变为由路径名参数给定的目录 。 用,,.”作参数时,表示应返回到上一级目录下 。
第七章 操作系统接口
5,其它命令
(1) 输入输出重定向命令 。
在有的 OS中定义了两个标准 I/O设备 。 通常,命令的输入取自标准输入设备,即键盘;而命令的输出通常是送往标准输出设备,即显示终端 。 如果在命令中设置输出重定向,>,符,其后接文件名或设备名,表示将命令的输出改向,送到指定文件或设备上 。 类似地,若在命令中设置输入重定向,<,符,则不再是从键盘而是从重定向符左边参数所指定的文件或设备上,取得输入信息 。
第七章 操作系统接口
(2) 管道连接 。
这是指把第一条命令的输出信息作为第二条命令的输入信息;类似地,又可把第二条命令的输出信息作为第三条命令的输入信息 。 这样,由两个 (含两条 )以上的命令可形成一条管道 。 在 MS-DOS和 UNIX中,都用,|”作为管道符号 。 其一般格式为:
Command1 |Command2| … | Commandn;
第七章 操作系统接口
(3) 过滤命令 。
在 UNIX及 MS-DOS中,都有过滤命令,用于读取指定文件或标准输入,从中找出由参数指定的模式,然后把所有包含该模式的行都打印出来 。 例如,MS-DOS中用命令
find/N“erase”(路径名 )
可对由路径名指定的输入文件逐行检索,把含有字符串
,erase”的行输出 。 其中,/N是选择开关,表示输出含有指定字串的行;如果不用 N而用 C,则表示只输出含有指定字串的行数;若用 V,则表示输出不含指定字串的行 。
第七章 操作系统接口
(4) 批命令 。
为了能连续地使用多条键盘命令,或多次反复地执行指定的若干条命令,而又免去每次重敲这些命令的麻烦,
可以提供一特定文件 。 在 MS-DOS中提供了一种特殊文件,
其后缀名用,,BAT”;在 UNIX系统中称为命令文件 。 它们都是利用一些键盘命令构成一个程序,一次建立供多次使用 。 在 MS-DOS中用 batch命令去执行由指定或默认驱动器的工作目录上指定文件中所包含的一些命令 。
第七章 操作系统接口
7.1.2 键盘终端处理程序为了实现人机交互,还须在微机或终端上配置相应的键盘终端处理程序,
(1) 接收用户从终端上打入的字符 。
(2) 字符缓冲,用于暂存所接收的字符 。
(3) 回送显示 。
(4) 屏幕编辑 。
(5) 特殊字符处理。
第七章 操作系统接口
1.
为了实现人机交互,键盘终端处理程序必须能够接收从终端输入的字符,并将之传送给用户程序 。 有两种
(1) 面向字符方式 。 驱动程序只接收从终端打入的字符,并且不加修改地将它传送给用户程序 。 这通常是一串未加工的 ASCII码 。
第七章 操作系统接口
(2) 面向行方式 。 终端处理程序将所接收的字符暂存在行缓冲中,并可对行内字符进行编辑 。 仅在收到行结束符后,才将一行正确的信息送命令解释程序 。 在有的计算机中,从键盘硬件送出的是键的编码 (简称键码 ),而不是
ASCII码 。 例如,当打入 a键时,是将键码,30”放入 I/O寄存器,此时,终端处理程序必须参照某种表格,将键码转换成 ASCII码 。 应当注意,某些 IBM的兼容机使用的不是标准键码 。 此时,处理程序还须选用相应的表格将其转换成标准键码 。
第七章 操作系统接口
2,字符缓冲功能
(1) 专用缓冲方式 。 这是指系统为每个终端设置一个缓冲区,暂存用户键入的一批字符,缓冲区的典型长度为
200个字符左右 。 这种方式较适合于单用户微机或终端很少的多用户机 。 当终端数目较多时,需要的缓冲数目可能很大,且每个缓冲的利用率也很低 。 例如,当有 100个终端时,
要求有 20 KB的缓冲区 。 但专用缓冲方式可使终端处理程序简化 。
第七章 操作系统接口图 7-1 两种缓冲方式终端专用缓冲区主机终端
( a ) 专用缓冲区方式终端主机
( b ) 公用缓冲池方式
公用缓冲池第七章 操作系统接口
(2) 公用缓冲方式 。 系统不必为每个终端设置专用缓冲区,
只须设置一个由多个缓冲区构成的公用缓冲池 。 其中的每个缓冲区大小相同,如为 20个字符,再将所有的空缓冲区链接成一个空缓冲区链 。 当终端有数据输入时,可先向空缓冲区链申请一空缓冲区来接收输入字符;当该缓冲区装满后,再申请一空缓冲区 。 这样,直至全部输入完毕,并利用链接指针将这些装有输入数据的缓冲区链接成一条输入链 。 每当该输入链中一个缓冲区内的字符被全部传送给用户程序后,便将该缓冲区从输入链中移出,再重新链入空缓冲区链中 。 显然,利用公用缓冲池方式可有效地提高缓冲的利用率 。 图 7-
1(b)示出了公用缓冲池方式 。
第七章 操作系统接口
3,回送显示回送显示 (回显 )是指每当用户从键盘输入一个字符后,终端处理程序便将该字符送往屏幕显示 。 有些终端的回显由硬件实现,其速度较快,但往往会引起麻烦 。 如当用户键入口令时,
为防止口令被盗用,显然不该有回显 。 此外,用硬件实现回显也缺乏灵活性,因而近年来多改用软件来实现回显,这样可以做到在用户需要时才回显 。 用软件实现回显,还可方便地进行字符变换,如将键盘输入的小写英文字母变成大写,或相反 。
驱动程序在将输入的字符送往屏幕回显时,应打印在正确的位置上;当光标走到一行的最后一个位置后,便应返回到下一行的开始位置 。 例如,当所键入的字符数目超过一行的 80个 (字符 )
时,应自动地将下一个字符打印到下一行的开始位置 。
第七章 操作系统接口
4,屏幕编辑
(1) 删除字符键 。
(2) 删除一行键 。
(3) 插入键 。
(4) 移动光标键 。
(5) 屏幕上卷或下移键,等等 。
第七章 操作系统接口
5.
(1) 中断字符 。
当程序在运行中出现异常情况时,用户可通过键入中断字符的办法来中止当前程序的运行 。 在许多系统中是利用 Break或 Delete或 Ctrl+C键作为中断字符 。
(2) 停止上卷字符 。
用户键入此字符后,终端处理程序应使正在上卷的屏幕暂停上卷,以便用户仔细观察屏幕内容 。 在有的系统中,
是利用 Ctrl+S键来停止屏幕上卷的 。
第七章 操作系统接口
(3) 恢复上卷字符 。
有的系统利用 Ctrl+Q键使停止上卷的屏幕恢复上卷 。
终端处理程序收到该字符后,便恢复屏幕的上卷功能 。
上述的 Ctrl+S与 Ctrl+Q两字符并不被存储,而是被用去设置终端数据结构中的某个标志 。 每当终端试图输出时,
都须先检查该标志,若该标志已被设置,便不再把字符送第七章 操作系统接口
7.1.3 命令解释程序
1,命令解释程序的作用在联机操作方式下,终端处理程序把用户键入的信息送键盘缓冲区中保存 。 一旦用户键入回车符,便立即把控制权交给命令处理程序 。 显然,对于不同的命令,应有能完成特定功能的命令处理程序与之对应 。 可见,命令解释程序的主要作用,是在屏幕上给出提示符,请用户键入命令,然后读入该命令,识别命令,再转到相应命令处理程序的入口地址,
把控制权交给该处理程序去执行,并将处理结果送屏幕上显示 。 若用户键入的命令有错,而命令解释程序未能予以识别,
或在执行中间出现问题时,则应显示出某一出错信息 。
第七章 操作系统接口
2,命令解释程序的组成
(1) 常驻部分 。
这部分包括一些中断服务子程序 。 例如,正常退出中断 INT 20,它用于在用户程序执行完毕后,退回操作系统;
驻留退出中断 INT 27,用这种方式,退出程序可驻留在内存中;还有用于处理和显示标准错误信息的 INT 24等 。 常驻部分还包括这样的程序:当用户程序终止后,它检查暂存部分是否已被用户程序覆盖,若已被覆盖,便重新将暂存部分调入内存 。
第七章 操作系统接口
(2) 初始化部分 。
它跟随在常驻内存部分之后,在启动时获得控制权 。
这部分还包括对 AUTOEXEC.BAT文件的处理程序,并决定应用程序装入的基地址 。 每当系统接电或重新启动后,由处理程序找到并执行 AUTOEXEC.BAT文件 。 由于该文件在用完后不再被需要,因而它将被第一个由
COMMAND.COM装入的文件所覆盖 。
第七章 操作系统接口
(3) 暂存部分 。
这部分主要是命令解释程序,并包含了所有的内部命令处理程序,批文件处理程序,以及装入和执行外部命令的程序 。 它们都驻留在内存中,但用户程序可以使用并覆盖这部分内存,在用户程序结束时,常驻程序又会将它们重新从磁盘第七章 操作系统接口
3.
系统在接通电源或复位后,初始化部分获得控制权,对整个系统完成初始化工作,并自动执行 AUTOEXEC.BAT文件,之后便把控制权交给暂存部分 。 暂存部分首先读入键盘缓冲区中的命令,判别其文件名,扩展名及驱动器名是否正确 。 若发现有错,在给出出错信息后返回;若无错,再识别该命令 。 一种简单的识别命令的方法是基于一张表格,其中的每一表目都是由命令名及其处理程序的入口地址两项所组成 。 如果暂存部分在该表中能找到键入的命令,且是内部命令,便可以直接从对应表项中获得该命令处理程序的入口地址,然后把控制权交给该处理程序去执行该命令 。
第七章 操作系统接口是内部命令?
D I R
命令处理程序
T y p e
命令处理程序
C o p y
命令处理程序
D a t e
命令处理程序命令合法否?
输入命令行从外存调入外部命令执行显示提示符图
7-
2C
OM
MA
ND
.C
OM
的工作流程第七章 操作系统接口
7.2 Shell命令语言
7.2.1
所谓简单命令,实际上是一个能完成某种功能的目标程序的名字 。 UNIX系统规定的命令由小写字母构成 (但仅前 8个字母有效 )。 命令可带有参数表,用于给出执行命令时的附加信息 。 命令名与参数表之间还可使用一种称为选项的自变量,
用破折号开始,后跟一个或多个字母,数字 。
$ Command-option argument list
例如:
$ LS file1 file2
第七章 操作系统接口这是一条不带选项的列目录命令,$是系统提示符 。 该命令用于列出 file1和 file2两个目录文件中所包含的目录项,
并隐含地指出按英文字母顺序列表 。 若给出 —tr选项,该
$ LS-tr file1 file 2
其中,选项 t和 r分别表示按最近修改次序及按反字母顺序列表 。 通常,命令名与该程序的功能紧密相关,以便于记忆 。 命令参数可多可少,也可缺省 。
第七章 操作系统接口
$ LS
表示自动以当前工作目录为缺省参数,打印出当前工作目录所包含的目录项 。 简单命令的格式比较自由,包括命令名字符的个数及用于分隔命令名,选项,各参数间的空格数等,都是任意的 。 简单命令的数量易于扩充 。
系统管理员与用户自行定义的命令,其执行方式与系统标准命令的执行方式相同 。
第七章 操作系统接口
1,进入与退出系统
(1) 进入系统,也称为注册 。 事先,用户须与系统管理员商定一个唯一的用户名 。 管理员用该名字在系统文件树上,为用户建立一个子目录树的根结点 。 当用户打开自己的终端时,屏幕上会出现 Login:提示,这时用户便可键入自己的注册名,并用回车符结束 。 然后,系统又询问用户口令,用户可用回车符或事先约定的口令键入 。
第七章 操作系统接口
(2) 退出系统 。 每当用户用完系统后,应向系统报告自己不再往系统装入任何处理要求 。 系统得知后,便马上为用户记账,清除用户的使用环境 。 若用户使用系统是免费的,退出操作仅仅是一种礼貌 。 如果用户使用的是多终端中的一个终端,为了退出,用户只须按下 Control-D键即可,系统会重新给出提示符即 Login,以表明该终端可供另一新用户使用 。 用户的进入与退出过程,实际上是由系统直接调用 Login及 Logout程序完成的 。
第七章 操作系统接口
2.
(1) 显示文件内容命令 cat。 如果用户想了解自己在当前目录中的某个或某几个指定文件的内容时,便可使用下述格式的 cat
$ cat filename1 filename2
(2) 复制文件副本的命令 cp。
cp source target
该命令用于对已存在的文件 source建立一个名为 target的副本。
第七章 操作系统接口
(3) 对已有文件改名的命令 mv。
mv oldname newname
用于把原来的老名字改成指定的新名字 。
(4) 撤消文件的命令 rm。 它给出一个参数表,是要撤消的文件名清单 。
(5) 确定文件类型的命令 file。 该命令带有一个参数表,
用于给出想了解其 (文件 )类型的文件名清单 。 命令执行的结果,将在屏幕上显示出各个文件的类型 。
第七章 操作系统接口
3.
(1) 建立目录的命令 mkdir(简称 md)。
(2) 撤消目录的命令 rmdir(简称 rd)。
(3) 改变工作目录的命令 cd。
(4) 改变对文件的存取方式的命令 chmod。 其格式为:
chmod[ who] op-code permission filename
第七章 操作系统接口
4,系统询问命令
( 1) 访问当前日期和时间命令 date。 例如,用命令
$ date
屏幕上将给出当前的日期和时间,
Wed Ang 14 09:27:20 PDT 1991
表示当前日期是 1991年 9月 14日,星期三,还有时间信息若在命令名后给出参数,则 date程序把参数作为重置系统时钟的时间 。
第七章 操作系统接口
(2) 询问系统当前用户的命令 who。 who命令可列出当前每一个处在系统中的用户的注册名,终端名和注册进入时间,并按终端标志的字母顺序排序 。 例如,报告有下列三用户:
Veronica bxo66 Aug 27 13:28
Rathomas dz24 Aug 28 07:42
Jlyates tty5 Aug 28 07:39
第七章 操作系统接口
(3) 显示当前目录路径名的命令 pwd。 当前目录的路径名是从根结点开始,通过分支上的所有结点到达当前目录结点为止的路径上的所有结点的名字拼起来构成的 。
用户的当前目录可能经常在树上移动 。 如果用户忘记了自己在哪里,便可用 pwd确定自己的位置 。
第七章 操作系统接口
7.2.2 重定向与管道命令
1,重定向命令在 UNIX系统中,由系统定义了三个文件 。 其中,有两个分别称为标准输入和标准输出的文件,各对应于终端键盘输入和终端屏幕输出 。 它们是在用户注册时,由 Login程序打开的 。 这样,在用户程序执行时,隐含的标准输入是键盘输入,
标准输出即屏幕 (输出 )显示 。 但用户程序中可能不要求从键盘输入,而是从某个指定文件上读取信息供程序使用;同样,
用户可能希望把程序执行时所产生的结果数据,写到某个指定文件中而非屏幕上 。 这就使用户必须去改变输入与输出文件,即不使用标准输入,标准输出,而是把另外的某个指定文件或设备,作为输入或输出文件 。
第七章 操作系统接口
Shell向用户提供了这种用于改变输入,输出设备的手段,
此即标准输入与标准输出的重新定向 。 用重定向符,<,
和,>,分别表示输入转向与输出转向 。 例如,对于命令
$ cat file1
表示将文件 file1的内容,在标准输出上打印出来 。 若改变其输出,
$ cat file1> file2
时,表示把文件 file1的内容,打印输出到文件 file2上 。 同理,
对于命令
$ wc
表示对标准输入中的行中字和字符进行计数 。 若改变其输入,
第七章 操作系统接口
$ wc< file3
则表示把从文件 file3中读出的行中的字和字符进行计数 。
须指明的是,在做输出转向时,若上述的文件 file2并不存在,则先创建它;若已存在,则认为它是空白的,执行上述输出转向命令时,是用命令的输出数据去重写该文件;如果文件 file2事先已有内容,则命令执行结果将用文件 file1的内容去更新文件 file2的原有内容 。 现在,如果又要求把 file4的内容附加到现有的文件 file2的末尾,则应使用另一个输出转向符,,,即此时应再用命令
$ cat file4 file2
第七章 操作系统接口便可在文件 file2中,除了上次复制的 file1内容外,后面又附加了 file4的内容 。
当然,若想一次把两个文件 file1和 file4全部复制到 file2
中,
$ cat file1 file4 file2
此外,也可在一个命令行中,同时改变输入与输出 。 例如,
a.out< file1> file0
表示,在可执行文件 a.out执行时,将从文件 file1中提取数据,
而把 a.out的执行结果数据输出到文件 file0中 。
第七章 操作系统接口
2.
在有了上述的重定向思想后,为了进一步增强功能,
人们又进一步把这种思想加以扩充,用符号,|”来连接两条命令,使其前一条命令的输出作为后一条命令的输入 。
$ command 1|command 2
例如,
cat file|wc
将使命令 cat把文件 file中的数据,作为 wc命令的计数用输入。
第七章 操作系统接口
7.2.3 通信命令
1,信箱通信命令 mail
它被作为在 UNIX的各用户之间,进行非交互式通信的工具 。 mail采用信箱通信方式 。 发信者把要发送的消息写成信件,,邮寄,到对方的信箱中 。 通常各用户的私有信箱采用各自的注册名命名,即它是目录 /usr/spool/mail中的一个文件,而文件名又是用接收者的注册名来命名的 。 信箱中的信件可以一直保留到被信箱所有者消除为止 。 因而,用 mail进行通信时,不要求接收者利用终端与发送者会话 。 亦即,在发信者发送信息时,虽然接收者已在系统中注册过,但允许他此时没有使用系统;也可以是虽在使用系统,但拒绝接收任何信息 。
第七章 操作系统接口接收者也用 mail命令读取信件,可使用可选项 r,q或 p等 。
mail[ -r] [ -q] [ -p] [ -file] [ -F persons]
由于信箱中可存放所接收的多个信件,这就存在一个选取信件的问题 。 上述几个选项分别表示:按先进先出顺序显示各信件的内容;在打入中断字符 (DEL或 RETURN)后,退出
mail程序而不改变信箱的内容;以及一次性地显示信箱全部内容而不带询问,把指定文件当作信件来显示 。 在不使用 -p
选项时,表示在显示完一个信件后,便出现,?”,以询问用户是否继续显示下一条消息,或选读完最后一条消息后退出
mail。
第七章 操作系统接口
2,对话通信命令 write
write user[ ttyname]
当接收者只有一个终端时,终端名可缺省 。 当接收者的终端被允许接收消息时,屏幕提示会通知接收者源用户名及其所用终端名 。
第七章 操作系统接口
3,允许或拒绝接收消息的 mesg命令
mesg[ -n] [ -y]
选项 n表示拒绝对方的写许可 (即拒绝接收消息 );选项 y指示恢复对方的写许可,仅在此时,双方才可联机通信 。 当用户正在联机编写一份资料而不愿被别人干扰时,常选用 n选项来拒绝对方的写许可 。 编辑完毕,再用带有 y选项的 mesg命令来恢复对方的写许可,不带自变量的 mesg命令只报告当前状态而不改变它 。
第七章 操作系统接口
7.2.4
UNIX系统提供了这种机制,用户可以在这种命令后面再加上,&”号,以告诉 Shell将该命令放在后台执行,以便用户在前台继续键入其它命令 。
在后台运行的程序仍然把终端作为它的标准输出和标准错误文件,除非对它们进行重新定向 。 其标准输入文件是自动地被从终端定向到一个被称为,/dev/null”的空文件中 。 若 shell未重定向标准输入,则 shell和后台进程将会同时从终端进行读入 。 这时,用户从终端键入的字符可能被发送到一个进程或另一个进程,并不能预测哪个进程将得到该字符 。
第七章 操作系统接口
7.3 系 统 调 用
7.3.1 系统调用的基本概念
(1) 运行在不同的系统状态 。
(2) 通过软中断进入 。
(3) 返回问题 。
(4) 嵌套调用 。
第七章 操作系统接口图 7-3 系统功能的调用系统调用命令调用返回系统功能用户程序
( a ) 系统调用与返回系统调用命令调用系统功能系统调用命令返回系统子功能
( b ) 程序之间的嵌套调用第七章 操作系统接口
7.3.2 系统调用的类型
1,进程控制类系统调用
(1) 创建和终止进程的系统调用。
(2) 获得和设置进程属性的系统调用。
(3) 等待某事件出现的系统调用。
第七章 操作系统接口
2,文件操纵类系统调用
(1) 创建和删除文件。
(2) 打开和关闭文件。
(3) 读和写文件。
第七章 操作系统接口
3,进程通信类系统调用在 OS中经常采用两种进程通信方式,即消息传递方式和共享存储区方式 。 当系统中采用消息传递方式时,在通信前,必须先打开一个连接 。 为此,应由源进程发出一条打开连接的系统调用 open connection,而目标进程则应利用接受连接的系统调用 accept connection表示同意进行通信;
然后,在源和目标进程之间便可开始通信 。 可以利用发送消息的系统调用 send message或者用接收消息的系统调用 receive message来交换信息 。 通信结束后,还须再利用关闭连接的系统调用 close connection结束通信 。
第七章 操作系统接口
7.3.3
1.
(1) 什么是中断和陷入 。
中断是指 CPU对系统发生某事件时的这样一种响应:
CPU暂停正在执行的程序,在保留现场后自动地转去执行该事件的中断处理程序;执行完后,再返回到原程序的断点处继续执行 。
第七章 操作系统接口图 7 - 4 中断时的 CPU轨迹被中断程序中断处理程序中断处理开始中断处理结束中断点第七章 操作系统接口
(2) 中断和陷入向量。
第七章 操作系统接口
2,系统调用号和参数的设置
(1) 直接将参数送入相应的寄存器中。
(2) 参数表方式。
图 7 - 6 系统调用的参数形式第七章 操作系统接口
3,系统调用的处理步骤首先,将处理机状态由用户态转为系统态;之后,由硬件和内核程序进行系统调用的一般性处理,即首先保护被中断进程的 CPU环境,将处理机状态字 PSW,程序计数器 PC、
系统调用号,用户栈指针以及通用寄存器内容等,压入堆栈;
然后,将用户定义的参数传送到指定的地方保存起来 。
其次,是分析系统调用类型,转入相应的系统调用处理子程序 。
最后,在系统调用处理子程序执行完后,应恢复被中断的或设置新进程的 CPU现场,然后返回被中断进程或新进程,
继续往下执行 。
第七章 操作系统接口
4,系统调用处理子程序的处理过程进入 Creat的处理子程序后,核心将根据用户给定的文件路径名 Path,利用目录检索过程,去查找指定文件的目录项 。
查找目录的方式可以用顺序查找法,也可用 Hash查找法 。 如果在文件目录中找到了指定文件的目录项,表示用户要利用一个已有文件来建立一个新文件 。 但如果在该已有 (存 )文件的属性中有不允许写属性,或者创建者不具有对该文件进行修改的权限,使认为是出错而做出错处理;若不存在访问权限问题,便将已存文件的数据盘块释放掉,准备写入新的数据文件 。 如未找到指名文件,则表示要创建一个新文件,核心便从其目录文件中找出一个空目录项,并初始化该目录项,
包括填写文件名,文件属性,文件建立日期等,然后将新建文件打开 。
第七章 操作系统接口
7.4 UNIX系统调用
7.4.1 UNIX系统调用的类型
1,进程控制
(1) 创建进程 (fork)。
(2) 终止进程 (exit)。
(3) 等待子进程结束 (wait)。
(4) 执行一个文件 (exec)。
(5) 获得进程 ID。
(6) 获得用户 ID。
(7) 进程暂停 (pause)。
第七章 操作系统接口
2,文件操纵
(1) 创建文件 (creat)。
(2) 打开文件 (open)。
(3) 关闭文件 (close)。
(4) 读和写文件 read和 write。
(5) 连接和去连接 (link和 unlink)。
① 文件描述符 fd; ② buf缓冲区首址 。 ③ 用户要求传送的字节数 nbyte。
第七章 操作系统接口
3,进程间通信
(1) 消息机制。
(2) 共享存储器机制。
(3) 信号量机制。
第七章 操作系统接口
4,信息维护
(1) 设置和获得时间。
(2) 获得进程和子进程时间 (times)。
(3) 设置文件访问和修改时间 (utime)。
(4) 获得当前 UNIX系统的名称 (uname)。
第七章 操作系统接口
7.4.2 被中断进程的环境保护
1,CPU环境保护当用户程序处在用户态,且在执行系统调用命令 (即
CHMK命令 )之前,应在用户空间提供系统调用所需的参数表,并将该参数表的地址送入 R0寄存器 。 在执行 CHMK命令后,处理机将由用户态转为核心态,并由硬件自动地将处理机状态长字 (PSL),程序计数器 (PC)和代码操作数 (code)压入用户核心栈,继而从中断和陷入向量表中取出 trap.S的入口地址然后便转入中断和陷入总控程序 trap.S中执行 。
第七章 操作系统接口
trap.S程序执行后,继续将陷入类型 type和用户栈指针 usp压入用户核心栈,接着还要将被中断进程的 CPU环境中的一系列寄存器如 R0~R11的部分或全部内容压入栈中 。 至于哪些寄存器的内容要压入栈中,这取决于特定寄存器中的屏蔽码,该屏蔽码的每一位都与 R0~R11中的一个寄存器相对应 。 当某一位置成 1时,表示对应寄存器的内容应压入栈中 。
第七章 操作系统接口
2,AP和 FP指针图 7 - 7 用户核心栈第七章 操作系统接口
7.4.3 系统调用陷入后需处理的若干公共问题
1.
trap(usp,type,code,PC,PSL)
其中,参数 PSL为陷入时处理机状态字长,PC为程序计数器,
code为代码操作数,type为陷入类型号,usp为用户栈指针 。
对陷入的处理可分为多种情况,如果陷入是由于系统调用所引起的,则对此陷入的第一步处理,便是确定系统调用号 。
通常,系统调用号是包含在代码操作数中,故可利用 code来确定系统调用号 i。 其方法是,令
i=code & 0377
第七章 操作系统接口
2.
这是对因系统调用引起的陷入的第二步处理 。 参数传送是指由 trap.C程序将系统调用参数表中的内容,从用户区传送到 User结构的 U.U-arg[ ] 中,供系统调用处理程序使用 。 由于用户程序在执行系统调用命令之前,已将参数表的首址放入 R0寄存器中,在进入 trap.C程序后,该程序便将该首址赋予
U.U-arg[ ] 指针,因此,trap.C在处理参数传送时,可读取该指针的内容,以获得用户所提供的参数表,并将之送至
U.U-arg[ ] 中 。 应当注意,对不同的系统调用所需传送参数的个数并不相同,trap.C程序应根据在系统调用定义表中所规定的参数个数来进行传送,最多允许 10个参数 。
第七章 操作系统接口
3.
在 UNIX系统中,对于不同 (编号 )的系统调用,都设置了与之相应的处理子程序 。 为使不同的系统调用能方便地转入其相应的处理子程序,也将各处理子程序的入口地址放入了系统调用定义表即 Sysent[ ] 中 。 该表实际上是一个结构数组,在每个结构中包含三个元素,其中第一个元素是相应系统调用所需参数的个数;第二个元素是系统调用经寄存器传送的参数个数;第三个元素是相应系统调用处理子程序的入口地址 。 在系统中设置了该表之后,便可根据系统调用号 i从系统调用定义表中找出相应的表目,再按照表目中的入口地址转入相应的处理子程序,由该程序去完成相应系统调用的特定功能 。 在该子程序执行完后,仍返回到中断和陷入总控程序中的 trap.C程序中,去完成返回到断点前的公共处理部分 。
第七章 操作系统接口
4.
在 UNIX系统中,进程调度的主要依据,是进程的动态优先级 。 随着进程执行时间的加长,其优先级将逐步降低 。
每当执行了系统调用命令,并由系统调用处理子程序返回到 trap.C后,都将重新计算该进程的优先级;另外,在系统调用执行过程中,若发生了错误使进程无法继续运行时,
系统会设置再调度标志 。 处理子程序在计算了进程的优先级后,又去检查该再调度标志是否已又被设置 。 若已设置,
便调用 switch调度程序,再去从所有的就绪进程中选择优先级最高的进程,把处理机让给该进程去运行 。
第七章 操作系统接口
7.5 图形用户接口
7.5.1 桌面、图标和任务栏
1,桌面与图标的初步概念所谓桌面,是指整个屏幕空间,即在运行 Windows时用户所看到的屏幕 。 该桌面是由多个任务共享 。 为了避免混淆,
每个任务都通过各自的窗口显示其操作和运行情况,因此,
Windows允许在桌面上同时出现多个窗口 。 所谓窗口是指屏幕上的一块矩形区域 。 应用程序 (包括文档 )可通过窗口向用户展示出系统所能提供的各种服务及其需要用户输入的信息;
用户可通过窗口中的图标去查看和操纵应用程序或文档 。
第七章 操作系统接口
2,桌面上常见的图标第七章 操作系统接口
3.,开始”按钮和任务栏
(1),开始”按钮。
(2) 任务栏。
(3) 任务栏的隐藏方式。
(4) 任务子栏。
第七章 操作系统接口
7.5.2 窗口
1,窗口的组成
(1) 标题栏和窗口标题。
(2) 菜单栏。
(3) 工具栏。
(4) 控制菜单按钮。
(5) 最大化,最小化和关闭按钮。
(6) 滚动条。
(7) 窗口边框。
(8) 工作区域。
第七章 操作系统接口第七章 操作系统接口
2,窗口的性质
(1) 窗口的状态。
(2) 窗口的改变。
第七章 操作系统接口
7.5.3 对话框
1,对话框的用途对话框的主要用途是实现人 —机对话,即系统可通过对话框提示用户输入与任务有关的信息,比如提示用户输入要打开文件的名字,其所在目录,所在驱动器及文件类型等信息;或者对于对象的属性,窗口等的环境设置的改变等,比如设置文件的属性,设置显示器的颜色和分辨率,
设置桌面的显示效果;还可以提供用户可能需要的信息等 。
第七章 操作系统接口
2,对话框的组成
1)
2) 输入框
3)
(1) 命令按钮。
(2) 选择按钮。
(3) 滑块式按钮。
(4) 数字式增减按钮。
第七章 操作系统接口图 7-10 对话框
( a)“另存为 …” 对话框第七章 操作系统接口图 7-10 对话框
7.1 联机命令接口
7.2 Shell命令语言
7.3 系统调用
7.4 UNIX系统调用
7.5 图形用户接口第七章 操作系统接口第七章 操作系统接口
7.1 联机命令接口
7.1.1 联机命令的类型为了能向用户提供多方面的服务,通常,OS都向用户提供了几十条甚至上百条的联机命令 。 根据这些命令所完成功能的不同,可把它们分成以下几类,① 系统访问类;
② 磁盘操作类; ③ 文件操作类; ④ 目录操作类; ⑤ 通信类; ⑥ 其他命令 。
第七章 操作系统接口
1.
在单用户微型机中,一般没有设置系统访问命令; 然而在多用户系统中,为了保证系统的安全性,都毫无例外地设置了系统访问命令,即注册命令 Login。 用户在每次开始使用某终端时,都须使用该命令,使系统能识别该用户 。 凡要在多用户系统的终端上上机的用户,都必须先在系统管理员处获得一合法的注册名和口令 。 以后,每当用户在接通其所用终端的电源后,便由系统直接调用并在屏幕上显示出以下的
Login,/
当用户键入正确的注册名,并按下回车键后,屏幕上又
Password,/
第七章 操作系统接口
2.
(1) 磁盘格式化命令 Format。
它被用于对指定驱动器上的软盘进行格式化 。 每张新盘在使用前都必须先格式化 。 其目的是使其记录格式能为操作系统所接受,可见,不同操作系统将磁盘初始化后的格式各异 。 此外,在格式化过程中,还将对有缺陷的磁道和扇区加保留记号,以防止将它分配给数据文件 。
第七章 操作系统接口
(2) 复制整个软盘命令 Diskcopy。
该命令用于复制整个磁盘,另外它还有附加的格式化功能 。 如果目标盘片是尚未格式化的,则该命令在执行时,首先将未格式化的软盘格式化,然后再进行复制 。
(3) 软盘比较命令 Diskcomp。
该命令用于将源盘与目标盘的各磁道及各扇区中的数据逐一进行比较 。
(4) 备份命令 Backup。
该命令用于把硬盘上的文件复制到软盘上;而
RESTORE命令则完成相反的操作。
第七章 操作系统接口
3,文件操作命令
(1) 显示文件命令 type。 用于将指定文件显示在屏幕上 。
(2) 拷贝文件命令 copy。 用于实现文件的拷贝 。
(3) 文件比较命令 comp。 该命令用于对两个指定文件进行比较 。 两文件可以在同一个或不同的驱动器上 。
(4) 重新命名命令 Rename。 该命令用于将以第一参数命名的文件,改成用第二参数给定的名字 。
(5) 删除文件命令 erase。 该命令用于删除一个或一组文件,当参数路径名为 *.BAK时,表示删除指定目录下的所有其扩展名为,Bak的文件 。
第七章 操作系统接口
4.
(1) 建立子目录命令 mkdir。 用于建立指定名字的新目录 。
(2) 显示目录命令 dir。 显示指定磁盘中的目录项 。
(3) 删除子目录命令 rmdir。 该命令用于删除指定的子目录文件,但不能删除普通文件,而且,一次只能删除一个空目录 (其中仅含,,”和,,.”两个文件 ),。
(4) 显示目录结构命令 tree。 该命令用于显示指定盘上的所有目录路径及其层次关系 。
(5) 改变当前目录命令 chdir。 该命令用于将当前目录改变为由路径名参数给定的目录 。 用,,.”作参数时,表示应返回到上一级目录下 。
第七章 操作系统接口
5,其它命令
(1) 输入输出重定向命令 。
在有的 OS中定义了两个标准 I/O设备 。 通常,命令的输入取自标准输入设备,即键盘;而命令的输出通常是送往标准输出设备,即显示终端 。 如果在命令中设置输出重定向,>,符,其后接文件名或设备名,表示将命令的输出改向,送到指定文件或设备上 。 类似地,若在命令中设置输入重定向,<,符,则不再是从键盘而是从重定向符左边参数所指定的文件或设备上,取得输入信息 。
第七章 操作系统接口
(2) 管道连接 。
这是指把第一条命令的输出信息作为第二条命令的输入信息;类似地,又可把第二条命令的输出信息作为第三条命令的输入信息 。 这样,由两个 (含两条 )以上的命令可形成一条管道 。 在 MS-DOS和 UNIX中,都用,|”作为管道符号 。 其一般格式为:
Command1 |Command2| … | Commandn;
第七章 操作系统接口
(3) 过滤命令 。
在 UNIX及 MS-DOS中,都有过滤命令,用于读取指定文件或标准输入,从中找出由参数指定的模式,然后把所有包含该模式的行都打印出来 。 例如,MS-DOS中用命令
find/N“erase”(路径名 )
可对由路径名指定的输入文件逐行检索,把含有字符串
,erase”的行输出 。 其中,/N是选择开关,表示输出含有指定字串的行;如果不用 N而用 C,则表示只输出含有指定字串的行数;若用 V,则表示输出不含指定字串的行 。
第七章 操作系统接口
(4) 批命令 。
为了能连续地使用多条键盘命令,或多次反复地执行指定的若干条命令,而又免去每次重敲这些命令的麻烦,
可以提供一特定文件 。 在 MS-DOS中提供了一种特殊文件,
其后缀名用,,BAT”;在 UNIX系统中称为命令文件 。 它们都是利用一些键盘命令构成一个程序,一次建立供多次使用 。 在 MS-DOS中用 batch命令去执行由指定或默认驱动器的工作目录上指定文件中所包含的一些命令 。
第七章 操作系统接口
7.1.2 键盘终端处理程序为了实现人机交互,还须在微机或终端上配置相应的键盘终端处理程序,
(1) 接收用户从终端上打入的字符 。
(2) 字符缓冲,用于暂存所接收的字符 。
(3) 回送显示 。
(4) 屏幕编辑 。
(5) 特殊字符处理。
第七章 操作系统接口
1.
为了实现人机交互,键盘终端处理程序必须能够接收从终端输入的字符,并将之传送给用户程序 。 有两种
(1) 面向字符方式 。 驱动程序只接收从终端打入的字符,并且不加修改地将它传送给用户程序 。 这通常是一串未加工的 ASCII码 。
第七章 操作系统接口
(2) 面向行方式 。 终端处理程序将所接收的字符暂存在行缓冲中,并可对行内字符进行编辑 。 仅在收到行结束符后,才将一行正确的信息送命令解释程序 。 在有的计算机中,从键盘硬件送出的是键的编码 (简称键码 ),而不是
ASCII码 。 例如,当打入 a键时,是将键码,30”放入 I/O寄存器,此时,终端处理程序必须参照某种表格,将键码转换成 ASCII码 。 应当注意,某些 IBM的兼容机使用的不是标准键码 。 此时,处理程序还须选用相应的表格将其转换成标准键码 。
第七章 操作系统接口
2,字符缓冲功能
(1) 专用缓冲方式 。 这是指系统为每个终端设置一个缓冲区,暂存用户键入的一批字符,缓冲区的典型长度为
200个字符左右 。 这种方式较适合于单用户微机或终端很少的多用户机 。 当终端数目较多时,需要的缓冲数目可能很大,且每个缓冲的利用率也很低 。 例如,当有 100个终端时,
要求有 20 KB的缓冲区 。 但专用缓冲方式可使终端处理程序简化 。
第七章 操作系统接口图 7-1 两种缓冲方式终端专用缓冲区主机终端
( a ) 专用缓冲区方式终端主机
( b ) 公用缓冲池方式
公用缓冲池第七章 操作系统接口
(2) 公用缓冲方式 。 系统不必为每个终端设置专用缓冲区,
只须设置一个由多个缓冲区构成的公用缓冲池 。 其中的每个缓冲区大小相同,如为 20个字符,再将所有的空缓冲区链接成一个空缓冲区链 。 当终端有数据输入时,可先向空缓冲区链申请一空缓冲区来接收输入字符;当该缓冲区装满后,再申请一空缓冲区 。 这样,直至全部输入完毕,并利用链接指针将这些装有输入数据的缓冲区链接成一条输入链 。 每当该输入链中一个缓冲区内的字符被全部传送给用户程序后,便将该缓冲区从输入链中移出,再重新链入空缓冲区链中 。 显然,利用公用缓冲池方式可有效地提高缓冲的利用率 。 图 7-
1(b)示出了公用缓冲池方式 。
第七章 操作系统接口
3,回送显示回送显示 (回显 )是指每当用户从键盘输入一个字符后,终端处理程序便将该字符送往屏幕显示 。 有些终端的回显由硬件实现,其速度较快,但往往会引起麻烦 。 如当用户键入口令时,
为防止口令被盗用,显然不该有回显 。 此外,用硬件实现回显也缺乏灵活性,因而近年来多改用软件来实现回显,这样可以做到在用户需要时才回显 。 用软件实现回显,还可方便地进行字符变换,如将键盘输入的小写英文字母变成大写,或相反 。
驱动程序在将输入的字符送往屏幕回显时,应打印在正确的位置上;当光标走到一行的最后一个位置后,便应返回到下一行的开始位置 。 例如,当所键入的字符数目超过一行的 80个 (字符 )
时,应自动地将下一个字符打印到下一行的开始位置 。
第七章 操作系统接口
4,屏幕编辑
(1) 删除字符键 。
(2) 删除一行键 。
(3) 插入键 。
(4) 移动光标键 。
(5) 屏幕上卷或下移键,等等 。
第七章 操作系统接口
5.
(1) 中断字符 。
当程序在运行中出现异常情况时,用户可通过键入中断字符的办法来中止当前程序的运行 。 在许多系统中是利用 Break或 Delete或 Ctrl+C键作为中断字符 。
(2) 停止上卷字符 。
用户键入此字符后,终端处理程序应使正在上卷的屏幕暂停上卷,以便用户仔细观察屏幕内容 。 在有的系统中,
是利用 Ctrl+S键来停止屏幕上卷的 。
第七章 操作系统接口
(3) 恢复上卷字符 。
有的系统利用 Ctrl+Q键使停止上卷的屏幕恢复上卷 。
终端处理程序收到该字符后,便恢复屏幕的上卷功能 。
上述的 Ctrl+S与 Ctrl+Q两字符并不被存储,而是被用去设置终端数据结构中的某个标志 。 每当终端试图输出时,
都须先检查该标志,若该标志已被设置,便不再把字符送第七章 操作系统接口
7.1.3 命令解释程序
1,命令解释程序的作用在联机操作方式下,终端处理程序把用户键入的信息送键盘缓冲区中保存 。 一旦用户键入回车符,便立即把控制权交给命令处理程序 。 显然,对于不同的命令,应有能完成特定功能的命令处理程序与之对应 。 可见,命令解释程序的主要作用,是在屏幕上给出提示符,请用户键入命令,然后读入该命令,识别命令,再转到相应命令处理程序的入口地址,
把控制权交给该处理程序去执行,并将处理结果送屏幕上显示 。 若用户键入的命令有错,而命令解释程序未能予以识别,
或在执行中间出现问题时,则应显示出某一出错信息 。
第七章 操作系统接口
2,命令解释程序的组成
(1) 常驻部分 。
这部分包括一些中断服务子程序 。 例如,正常退出中断 INT 20,它用于在用户程序执行完毕后,退回操作系统;
驻留退出中断 INT 27,用这种方式,退出程序可驻留在内存中;还有用于处理和显示标准错误信息的 INT 24等 。 常驻部分还包括这样的程序:当用户程序终止后,它检查暂存部分是否已被用户程序覆盖,若已被覆盖,便重新将暂存部分调入内存 。
第七章 操作系统接口
(2) 初始化部分 。
它跟随在常驻内存部分之后,在启动时获得控制权 。
这部分还包括对 AUTOEXEC.BAT文件的处理程序,并决定应用程序装入的基地址 。 每当系统接电或重新启动后,由处理程序找到并执行 AUTOEXEC.BAT文件 。 由于该文件在用完后不再被需要,因而它将被第一个由
COMMAND.COM装入的文件所覆盖 。
第七章 操作系统接口
(3) 暂存部分 。
这部分主要是命令解释程序,并包含了所有的内部命令处理程序,批文件处理程序,以及装入和执行外部命令的程序 。 它们都驻留在内存中,但用户程序可以使用并覆盖这部分内存,在用户程序结束时,常驻程序又会将它们重新从磁盘第七章 操作系统接口
3.
系统在接通电源或复位后,初始化部分获得控制权,对整个系统完成初始化工作,并自动执行 AUTOEXEC.BAT文件,之后便把控制权交给暂存部分 。 暂存部分首先读入键盘缓冲区中的命令,判别其文件名,扩展名及驱动器名是否正确 。 若发现有错,在给出出错信息后返回;若无错,再识别该命令 。 一种简单的识别命令的方法是基于一张表格,其中的每一表目都是由命令名及其处理程序的入口地址两项所组成 。 如果暂存部分在该表中能找到键入的命令,且是内部命令,便可以直接从对应表项中获得该命令处理程序的入口地址,然后把控制权交给该处理程序去执行该命令 。
第七章 操作系统接口是内部命令?
D I R
命令处理程序
T y p e
命令处理程序
C o p y
命令处理程序
D a t e
命令处理程序命令合法否?
输入命令行从外存调入外部命令执行显示提示符图
7-
2C
OM
MA
ND
.C
OM
的工作流程第七章 操作系统接口
7.2 Shell命令语言
7.2.1
所谓简单命令,实际上是一个能完成某种功能的目标程序的名字 。 UNIX系统规定的命令由小写字母构成 (但仅前 8个字母有效 )。 命令可带有参数表,用于给出执行命令时的附加信息 。 命令名与参数表之间还可使用一种称为选项的自变量,
用破折号开始,后跟一个或多个字母,数字 。
$ Command-option argument list
例如:
$ LS file1 file2
第七章 操作系统接口这是一条不带选项的列目录命令,$是系统提示符 。 该命令用于列出 file1和 file2两个目录文件中所包含的目录项,
并隐含地指出按英文字母顺序列表 。 若给出 —tr选项,该
$ LS-tr file1 file 2
其中,选项 t和 r分别表示按最近修改次序及按反字母顺序列表 。 通常,命令名与该程序的功能紧密相关,以便于记忆 。 命令参数可多可少,也可缺省 。
第七章 操作系统接口
$ LS
表示自动以当前工作目录为缺省参数,打印出当前工作目录所包含的目录项 。 简单命令的格式比较自由,包括命令名字符的个数及用于分隔命令名,选项,各参数间的空格数等,都是任意的 。 简单命令的数量易于扩充 。
系统管理员与用户自行定义的命令,其执行方式与系统标准命令的执行方式相同 。
第七章 操作系统接口
1,进入与退出系统
(1) 进入系统,也称为注册 。 事先,用户须与系统管理员商定一个唯一的用户名 。 管理员用该名字在系统文件树上,为用户建立一个子目录树的根结点 。 当用户打开自己的终端时,屏幕上会出现 Login:提示,这时用户便可键入自己的注册名,并用回车符结束 。 然后,系统又询问用户口令,用户可用回车符或事先约定的口令键入 。
第七章 操作系统接口
(2) 退出系统 。 每当用户用完系统后,应向系统报告自己不再往系统装入任何处理要求 。 系统得知后,便马上为用户记账,清除用户的使用环境 。 若用户使用系统是免费的,退出操作仅仅是一种礼貌 。 如果用户使用的是多终端中的一个终端,为了退出,用户只须按下 Control-D键即可,系统会重新给出提示符即 Login,以表明该终端可供另一新用户使用 。 用户的进入与退出过程,实际上是由系统直接调用 Login及 Logout程序完成的 。
第七章 操作系统接口
2.
(1) 显示文件内容命令 cat。 如果用户想了解自己在当前目录中的某个或某几个指定文件的内容时,便可使用下述格式的 cat
$ cat filename1 filename2
(2) 复制文件副本的命令 cp。
cp source target
该命令用于对已存在的文件 source建立一个名为 target的副本。
第七章 操作系统接口
(3) 对已有文件改名的命令 mv。
mv oldname newname
用于把原来的老名字改成指定的新名字 。
(4) 撤消文件的命令 rm。 它给出一个参数表,是要撤消的文件名清单 。
(5) 确定文件类型的命令 file。 该命令带有一个参数表,
用于给出想了解其 (文件 )类型的文件名清单 。 命令执行的结果,将在屏幕上显示出各个文件的类型 。
第七章 操作系统接口
3.
(1) 建立目录的命令 mkdir(简称 md)。
(2) 撤消目录的命令 rmdir(简称 rd)。
(3) 改变工作目录的命令 cd。
(4) 改变对文件的存取方式的命令 chmod。 其格式为:
chmod[ who] op-code permission filename
第七章 操作系统接口
4,系统询问命令
( 1) 访问当前日期和时间命令 date。 例如,用命令
$ date
屏幕上将给出当前的日期和时间,
Wed Ang 14 09:27:20 PDT 1991
表示当前日期是 1991年 9月 14日,星期三,还有时间信息若在命令名后给出参数,则 date程序把参数作为重置系统时钟的时间 。
第七章 操作系统接口
(2) 询问系统当前用户的命令 who。 who命令可列出当前每一个处在系统中的用户的注册名,终端名和注册进入时间,并按终端标志的字母顺序排序 。 例如,报告有下列三用户:
Veronica bxo66 Aug 27 13:28
Rathomas dz24 Aug 28 07:42
Jlyates tty5 Aug 28 07:39
第七章 操作系统接口
(3) 显示当前目录路径名的命令 pwd。 当前目录的路径名是从根结点开始,通过分支上的所有结点到达当前目录结点为止的路径上的所有结点的名字拼起来构成的 。
用户的当前目录可能经常在树上移动 。 如果用户忘记了自己在哪里,便可用 pwd确定自己的位置 。
第七章 操作系统接口
7.2.2 重定向与管道命令
1,重定向命令在 UNIX系统中,由系统定义了三个文件 。 其中,有两个分别称为标准输入和标准输出的文件,各对应于终端键盘输入和终端屏幕输出 。 它们是在用户注册时,由 Login程序打开的 。 这样,在用户程序执行时,隐含的标准输入是键盘输入,
标准输出即屏幕 (输出 )显示 。 但用户程序中可能不要求从键盘输入,而是从某个指定文件上读取信息供程序使用;同样,
用户可能希望把程序执行时所产生的结果数据,写到某个指定文件中而非屏幕上 。 这就使用户必须去改变输入与输出文件,即不使用标准输入,标准输出,而是把另外的某个指定文件或设备,作为输入或输出文件 。
第七章 操作系统接口
Shell向用户提供了这种用于改变输入,输出设备的手段,
此即标准输入与标准输出的重新定向 。 用重定向符,<,
和,>,分别表示输入转向与输出转向 。 例如,对于命令
$ cat file1
表示将文件 file1的内容,在标准输出上打印出来 。 若改变其输出,
$ cat file1> file2
时,表示把文件 file1的内容,打印输出到文件 file2上 。 同理,
对于命令
$ wc
表示对标准输入中的行中字和字符进行计数 。 若改变其输入,
第七章 操作系统接口
$ wc< file3
则表示把从文件 file3中读出的行中的字和字符进行计数 。
须指明的是,在做输出转向时,若上述的文件 file2并不存在,则先创建它;若已存在,则认为它是空白的,执行上述输出转向命令时,是用命令的输出数据去重写该文件;如果文件 file2事先已有内容,则命令执行结果将用文件 file1的内容去更新文件 file2的原有内容 。 现在,如果又要求把 file4的内容附加到现有的文件 file2的末尾,则应使用另一个输出转向符,,,即此时应再用命令
$ cat file4 file2
第七章 操作系统接口便可在文件 file2中,除了上次复制的 file1内容外,后面又附加了 file4的内容 。
当然,若想一次把两个文件 file1和 file4全部复制到 file2
中,
$ cat file1 file4 file2
此外,也可在一个命令行中,同时改变输入与输出 。 例如,
a.out< file1> file0
表示,在可执行文件 a.out执行时,将从文件 file1中提取数据,
而把 a.out的执行结果数据输出到文件 file0中 。
第七章 操作系统接口
2.
在有了上述的重定向思想后,为了进一步增强功能,
人们又进一步把这种思想加以扩充,用符号,|”来连接两条命令,使其前一条命令的输出作为后一条命令的输入 。
$ command 1|command 2
例如,
cat file|wc
将使命令 cat把文件 file中的数据,作为 wc命令的计数用输入。
第七章 操作系统接口
7.2.3 通信命令
1,信箱通信命令 mail
它被作为在 UNIX的各用户之间,进行非交互式通信的工具 。 mail采用信箱通信方式 。 发信者把要发送的消息写成信件,,邮寄,到对方的信箱中 。 通常各用户的私有信箱采用各自的注册名命名,即它是目录 /usr/spool/mail中的一个文件,而文件名又是用接收者的注册名来命名的 。 信箱中的信件可以一直保留到被信箱所有者消除为止 。 因而,用 mail进行通信时,不要求接收者利用终端与发送者会话 。 亦即,在发信者发送信息时,虽然接收者已在系统中注册过,但允许他此时没有使用系统;也可以是虽在使用系统,但拒绝接收任何信息 。
第七章 操作系统接口接收者也用 mail命令读取信件,可使用可选项 r,q或 p等 。
mail[ -r] [ -q] [ -p] [ -file] [ -F persons]
由于信箱中可存放所接收的多个信件,这就存在一个选取信件的问题 。 上述几个选项分别表示:按先进先出顺序显示各信件的内容;在打入中断字符 (DEL或 RETURN)后,退出
mail程序而不改变信箱的内容;以及一次性地显示信箱全部内容而不带询问,把指定文件当作信件来显示 。 在不使用 -p
选项时,表示在显示完一个信件后,便出现,?”,以询问用户是否继续显示下一条消息,或选读完最后一条消息后退出
mail。
第七章 操作系统接口
2,对话通信命令 write
write user[ ttyname]
当接收者只有一个终端时,终端名可缺省 。 当接收者的终端被允许接收消息时,屏幕提示会通知接收者源用户名及其所用终端名 。
第七章 操作系统接口
3,允许或拒绝接收消息的 mesg命令
mesg[ -n] [ -y]
选项 n表示拒绝对方的写许可 (即拒绝接收消息 );选项 y指示恢复对方的写许可,仅在此时,双方才可联机通信 。 当用户正在联机编写一份资料而不愿被别人干扰时,常选用 n选项来拒绝对方的写许可 。 编辑完毕,再用带有 y选项的 mesg命令来恢复对方的写许可,不带自变量的 mesg命令只报告当前状态而不改变它 。
第七章 操作系统接口
7.2.4
UNIX系统提供了这种机制,用户可以在这种命令后面再加上,&”号,以告诉 Shell将该命令放在后台执行,以便用户在前台继续键入其它命令 。
在后台运行的程序仍然把终端作为它的标准输出和标准错误文件,除非对它们进行重新定向 。 其标准输入文件是自动地被从终端定向到一个被称为,/dev/null”的空文件中 。 若 shell未重定向标准输入,则 shell和后台进程将会同时从终端进行读入 。 这时,用户从终端键入的字符可能被发送到一个进程或另一个进程,并不能预测哪个进程将得到该字符 。
第七章 操作系统接口
7.3 系 统 调 用
7.3.1 系统调用的基本概念
(1) 运行在不同的系统状态 。
(2) 通过软中断进入 。
(3) 返回问题 。
(4) 嵌套调用 。
第七章 操作系统接口图 7-3 系统功能的调用系统调用命令调用返回系统功能用户程序
( a ) 系统调用与返回系统调用命令调用系统功能系统调用命令返回系统子功能
( b ) 程序之间的嵌套调用第七章 操作系统接口
7.3.2 系统调用的类型
1,进程控制类系统调用
(1) 创建和终止进程的系统调用。
(2) 获得和设置进程属性的系统调用。
(3) 等待某事件出现的系统调用。
第七章 操作系统接口
2,文件操纵类系统调用
(1) 创建和删除文件。
(2) 打开和关闭文件。
(3) 读和写文件。
第七章 操作系统接口
3,进程通信类系统调用在 OS中经常采用两种进程通信方式,即消息传递方式和共享存储区方式 。 当系统中采用消息传递方式时,在通信前,必须先打开一个连接 。 为此,应由源进程发出一条打开连接的系统调用 open connection,而目标进程则应利用接受连接的系统调用 accept connection表示同意进行通信;
然后,在源和目标进程之间便可开始通信 。 可以利用发送消息的系统调用 send message或者用接收消息的系统调用 receive message来交换信息 。 通信结束后,还须再利用关闭连接的系统调用 close connection结束通信 。
第七章 操作系统接口
7.3.3
1.
(1) 什么是中断和陷入 。
中断是指 CPU对系统发生某事件时的这样一种响应:
CPU暂停正在执行的程序,在保留现场后自动地转去执行该事件的中断处理程序;执行完后,再返回到原程序的断点处继续执行 。
第七章 操作系统接口图 7 - 4 中断时的 CPU轨迹被中断程序中断处理程序中断处理开始中断处理结束中断点第七章 操作系统接口
(2) 中断和陷入向量。
第七章 操作系统接口
2,系统调用号和参数的设置
(1) 直接将参数送入相应的寄存器中。
(2) 参数表方式。
图 7 - 6 系统调用的参数形式第七章 操作系统接口
3,系统调用的处理步骤首先,将处理机状态由用户态转为系统态;之后,由硬件和内核程序进行系统调用的一般性处理,即首先保护被中断进程的 CPU环境,将处理机状态字 PSW,程序计数器 PC、
系统调用号,用户栈指针以及通用寄存器内容等,压入堆栈;
然后,将用户定义的参数传送到指定的地方保存起来 。
其次,是分析系统调用类型,转入相应的系统调用处理子程序 。
最后,在系统调用处理子程序执行完后,应恢复被中断的或设置新进程的 CPU现场,然后返回被中断进程或新进程,
继续往下执行 。
第七章 操作系统接口
4,系统调用处理子程序的处理过程进入 Creat的处理子程序后,核心将根据用户给定的文件路径名 Path,利用目录检索过程,去查找指定文件的目录项 。
查找目录的方式可以用顺序查找法,也可用 Hash查找法 。 如果在文件目录中找到了指定文件的目录项,表示用户要利用一个已有文件来建立一个新文件 。 但如果在该已有 (存 )文件的属性中有不允许写属性,或者创建者不具有对该文件进行修改的权限,使认为是出错而做出错处理;若不存在访问权限问题,便将已存文件的数据盘块释放掉,准备写入新的数据文件 。 如未找到指名文件,则表示要创建一个新文件,核心便从其目录文件中找出一个空目录项,并初始化该目录项,
包括填写文件名,文件属性,文件建立日期等,然后将新建文件打开 。
第七章 操作系统接口
7.4 UNIX系统调用
7.4.1 UNIX系统调用的类型
1,进程控制
(1) 创建进程 (fork)。
(2) 终止进程 (exit)。
(3) 等待子进程结束 (wait)。
(4) 执行一个文件 (exec)。
(5) 获得进程 ID。
(6) 获得用户 ID。
(7) 进程暂停 (pause)。
第七章 操作系统接口
2,文件操纵
(1) 创建文件 (creat)。
(2) 打开文件 (open)。
(3) 关闭文件 (close)。
(4) 读和写文件 read和 write。
(5) 连接和去连接 (link和 unlink)。
① 文件描述符 fd; ② buf缓冲区首址 。 ③ 用户要求传送的字节数 nbyte。
第七章 操作系统接口
3,进程间通信
(1) 消息机制。
(2) 共享存储器机制。
(3) 信号量机制。
第七章 操作系统接口
4,信息维护
(1) 设置和获得时间。
(2) 获得进程和子进程时间 (times)。
(3) 设置文件访问和修改时间 (utime)。
(4) 获得当前 UNIX系统的名称 (uname)。
第七章 操作系统接口
7.4.2 被中断进程的环境保护
1,CPU环境保护当用户程序处在用户态,且在执行系统调用命令 (即
CHMK命令 )之前,应在用户空间提供系统调用所需的参数表,并将该参数表的地址送入 R0寄存器 。 在执行 CHMK命令后,处理机将由用户态转为核心态,并由硬件自动地将处理机状态长字 (PSL),程序计数器 (PC)和代码操作数 (code)压入用户核心栈,继而从中断和陷入向量表中取出 trap.S的入口地址然后便转入中断和陷入总控程序 trap.S中执行 。
第七章 操作系统接口
trap.S程序执行后,继续将陷入类型 type和用户栈指针 usp压入用户核心栈,接着还要将被中断进程的 CPU环境中的一系列寄存器如 R0~R11的部分或全部内容压入栈中 。 至于哪些寄存器的内容要压入栈中,这取决于特定寄存器中的屏蔽码,该屏蔽码的每一位都与 R0~R11中的一个寄存器相对应 。 当某一位置成 1时,表示对应寄存器的内容应压入栈中 。
第七章 操作系统接口
2,AP和 FP指针图 7 - 7 用户核心栈第七章 操作系统接口
7.4.3 系统调用陷入后需处理的若干公共问题
1.
trap(usp,type,code,PC,PSL)
其中,参数 PSL为陷入时处理机状态字长,PC为程序计数器,
code为代码操作数,type为陷入类型号,usp为用户栈指针 。
对陷入的处理可分为多种情况,如果陷入是由于系统调用所引起的,则对此陷入的第一步处理,便是确定系统调用号 。
通常,系统调用号是包含在代码操作数中,故可利用 code来确定系统调用号 i。 其方法是,令
i=code & 0377
第七章 操作系统接口
2.
这是对因系统调用引起的陷入的第二步处理 。 参数传送是指由 trap.C程序将系统调用参数表中的内容,从用户区传送到 User结构的 U.U-arg[ ] 中,供系统调用处理程序使用 。 由于用户程序在执行系统调用命令之前,已将参数表的首址放入 R0寄存器中,在进入 trap.C程序后,该程序便将该首址赋予
U.U-arg[ ] 指针,因此,trap.C在处理参数传送时,可读取该指针的内容,以获得用户所提供的参数表,并将之送至
U.U-arg[ ] 中 。 应当注意,对不同的系统调用所需传送参数的个数并不相同,trap.C程序应根据在系统调用定义表中所规定的参数个数来进行传送,最多允许 10个参数 。
第七章 操作系统接口
3.
在 UNIX系统中,对于不同 (编号 )的系统调用,都设置了与之相应的处理子程序 。 为使不同的系统调用能方便地转入其相应的处理子程序,也将各处理子程序的入口地址放入了系统调用定义表即 Sysent[ ] 中 。 该表实际上是一个结构数组,在每个结构中包含三个元素,其中第一个元素是相应系统调用所需参数的个数;第二个元素是系统调用经寄存器传送的参数个数;第三个元素是相应系统调用处理子程序的入口地址 。 在系统中设置了该表之后,便可根据系统调用号 i从系统调用定义表中找出相应的表目,再按照表目中的入口地址转入相应的处理子程序,由该程序去完成相应系统调用的特定功能 。 在该子程序执行完后,仍返回到中断和陷入总控程序中的 trap.C程序中,去完成返回到断点前的公共处理部分 。
第七章 操作系统接口
4.
在 UNIX系统中,进程调度的主要依据,是进程的动态优先级 。 随着进程执行时间的加长,其优先级将逐步降低 。
每当执行了系统调用命令,并由系统调用处理子程序返回到 trap.C后,都将重新计算该进程的优先级;另外,在系统调用执行过程中,若发生了错误使进程无法继续运行时,
系统会设置再调度标志 。 处理子程序在计算了进程的优先级后,又去检查该再调度标志是否已又被设置 。 若已设置,
便调用 switch调度程序,再去从所有的就绪进程中选择优先级最高的进程,把处理机让给该进程去运行 。
第七章 操作系统接口
7.5 图形用户接口
7.5.1 桌面、图标和任务栏
1,桌面与图标的初步概念所谓桌面,是指整个屏幕空间,即在运行 Windows时用户所看到的屏幕 。 该桌面是由多个任务共享 。 为了避免混淆,
每个任务都通过各自的窗口显示其操作和运行情况,因此,
Windows允许在桌面上同时出现多个窗口 。 所谓窗口是指屏幕上的一块矩形区域 。 应用程序 (包括文档 )可通过窗口向用户展示出系统所能提供的各种服务及其需要用户输入的信息;
用户可通过窗口中的图标去查看和操纵应用程序或文档 。
第七章 操作系统接口
2,桌面上常见的图标第七章 操作系统接口
3.,开始”按钮和任务栏
(1),开始”按钮。
(2) 任务栏。
(3) 任务栏的隐藏方式。
(4) 任务子栏。
第七章 操作系统接口
7.5.2 窗口
1,窗口的组成
(1) 标题栏和窗口标题。
(2) 菜单栏。
(3) 工具栏。
(4) 控制菜单按钮。
(5) 最大化,最小化和关闭按钮。
(6) 滚动条。
(7) 窗口边框。
(8) 工作区域。
第七章 操作系统接口第七章 操作系统接口
2,窗口的性质
(1) 窗口的状态。
(2) 窗口的改变。
第七章 操作系统接口
7.5.3 对话框
1,对话框的用途对话框的主要用途是实现人 —机对话,即系统可通过对话框提示用户输入与任务有关的信息,比如提示用户输入要打开文件的名字,其所在目录,所在驱动器及文件类型等信息;或者对于对象的属性,窗口等的环境设置的改变等,比如设置文件的属性,设置显示器的颜色和分辨率,
设置桌面的显示效果;还可以提供用户可能需要的信息等 。
第七章 操作系统接口
2,对话框的组成
1)
2) 输入框
3)
(1) 命令按钮。
(2) 选择按钮。
(3) 滑块式按钮。
(4) 数字式增减按钮。
第七章 操作系统接口图 7-10 对话框
( a)“另存为 …” 对话框第七章 操作系统接口图 7-10 对话框