习题10解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题10
10.1何谓操作系统与用户的接口?有哪几种类型?其主要的功能是什么?
操作系统与用户接口的目标就是提供一个友好的用户访问操作系统的接口,使得用户能将自己的要求告诉操作系统,同时也要构造一个反向接口使系统能够利用该接口告知用户目前的工作情况。
一般,操作系统为用户提供两种接口:一类用于程序一级的编程接口,供用户程序和系统程序调用操作系统的服务和功能,由一组系统调用(system call)和高级语言库函数组成。另一类是用于作业(或功能)控制一级,供用户组织和控制自己的作业运行,其中又分为脱机用户和联机用户两种不同的接口。前者对应命令或脚本(脱机);后者体现为交互式联机命令行、菜单式或GUI图形用户接口(联机)。
10.2命令文件是什么?它完成什么功能?如何组织命令文件?
把所需执行的一系列命令组装成文件,然后用文件名作为命令名执行所需命令序列,从而自动控制作业的运行,例如,MS-DOS操作系统中的批处理(扩展名为BA T),用户可预先把一系列命令组织在BA T文件中,一次建立,多次执行。
例如:
echo on
file 25
buffers 20
remark 设置有关文件与缓冲区
copy a:\data\*.exe d:\fox\data > null
edit main.prg
foxplus
echo off
有的操作系统还支持在命令文件使用循环、分支、转移、判别等语法结构,可以写出带形式参数的批命令文件,甚至允许嵌套形式调用其他命令文件。当带形式参数的批命令文件执行时,可用不同的实际参数去替换,因而,此类批命令文件便可以执行不同的命令序列,大大增强了命令接口的处理能力。例如,UNIX和Linux的Shell不但是一种交互型命令解释程序,也是一种命令级程序设计语言解释系统,它允许用户使用Shell简单命令、位置参数和控制流语句编制带形式参数的批命令文件,称作Shell文件或Shell过程,Shell可以自动解释和执行该文件或过程中的命令。
命令文件方式实现了联机状态下的批处理操作,对一些重复运行的作业非常有用。
10.3试说明命令解释程序的主要功能。
命令解释程序是操作系统最重要的系统程序,其主要功能是读人作业控制卡或接收用户输入的命令行,作出相应的解释并执行该命令提出的对作业的处理要求。命令解释程序通常会保存一张命令名字(动词)表,其中记录着所有操作命令及其处理程序的人口地址或相关信息。当一个新的批作业被启动,或新的联机用户登录进系统时,系统就自动地执行命令解释程序(详见第2章有关作业控制部分的讨论)。
10.4什么是系统调用?它的主要功能是什么?请举例说明Linux系统调用的使用。
系统调用是操作系统提供给用户编程的惟一接口,即用户在程序中调用操作系统所提供的相关功能,动态请求和释放系统资源,完成与计算机硬件部分相关的工作以及控制程序的
执行速度等。实际上,系统调用对用户屏蔽了操作系统的具体细节而只提供有关的功能。通常,系统调用程序是一个低级过程,只能由汇编语言直接访问。每个操作系统都提供几百种系统调用
利用系统调用,用户在编写程序时可以使用操作系统所提供的一些子功能如设备管理、输入/输出系统、文件系统和进程控制、通信以及存储管理等,而不必了解系统的内部结构和有关硬件细节,从而减轻用户编程的负担,在提高系统资源利用率的同时又保护了系统的安全。
进程控制类系统调用
这类系统调用主要用于对进程的控制,如创建和终止进程的系统调用、获得和设置进程属性的系统调用等。以UNIX及Linux为例,具体有创建进程的调用fork()、阻塞当前执行进程自己的系统调用wait()、进程自我终止用的exit()、获得进程标识符用的getPid ()、父进程标识获取调用getppid()、进程优先级获取用的getpriority()、改变进程优先数用的nice()、发送和接收信号用的kill()和signal()、暂停当前进程的执行过程的pause ()以及管道通信调用pipe()等。
10.5试比较系统调用与一般的过程调用。系统调用与库函数和实用程序又有何区别?
在操作系统中实现的系统调用是提供给用户的各种系统功能,它有些类似用户程序中一般的调用方式,改变指令流程、重复执行、改变指令流程后需要返回原处等。但它与一般的过程调用有着本质的区别。主要的区别如下:
(1)运行在不同的系统状态。
(2)进入方式不同,通常利用call 或jump 指令进入普通的过程调用,而进行系统调用则需要利用int或trap指令通过软中断进入。
(3)返回方式不尽相同;一般过程调用在被调用过程执行完后,返回调用过程。而在抢占式调度的系统中,被调用过程执行完后,不一定返回到调用进程。
此外,被调用代码的位置也有所不同。
三者所处的层次不同:系统调用在最低层的内核空间,应用程序调用其下同样处于用户空间的库函数,库函数最终再调用系统调用完成特定的功能。
10.6UNIX(Linux)操作系统为用户提供哪些接口?试举例说明。
UNIX(Linux)操作系统为用户提供两种接口:一类用于程序一级的编程接口,供用户程序和系统程序调用操作系统的服务和功能,由一组系统调用(system call)和高级语言库函数组成。如fork()等;另一类是shell命令或脚本如ls 、pwd等。
10.7UNIX(Linux)的Shell有何特点?请举例说明Shell的使用。
UNIX或Linux的Shell是系统的最外层,亦即外壳,是UNIX或Linux操作系统的用户界面。Shell是一种联机命令语言。它既是一种交互式命令解释程序,也是一种命令级程序设计语言解释程序。因此,Shell作为操作系统命令语言时,用户可以通过这些命令在终端上与操作系统交互,直接控制自己的程序的运行;Shell也可以作为作业控制语言使用,像其他高级程序语言一样,具有参数传递、变量设置、字符替换、流程控制、子程序以及中断管理等功能,用户可利用多条shell命令构成一个程序文件,或shell过程。
Shell的使用详见课本本章shell部分。
10.8何谓标准输入、输出重定向?请举例说明。