文档库 最新最全的文档下载
当前位置:文档库 › 第3章习题及答案

第3章习题及答案

第3章习题及答案
第3章习题及答案

第三章习题及解答

3-3 处理应用程序分为哪几个步骤?这些步骤之间有什么关系?

答:处理应用程序分为四个步骤:编辑,编译,连接和运行。这些步骤是相互关联、顺序执行的。具体表现为:

每个步骤处理的结果产生下一个步骤所需要的文件;

每一个步骤能否正确地执行,依赖于前一个步骤是否成功地完成。

3-5 用户与操作系统的接口是什么?一个分时系统提供什么接口?一个批处理系统又提供什么接口?

答:用户与操作系统的接口是操作系统提供给用户与计算机打交道的外部机制。一个分时系统提供的接口有系统功能调用和键盘操作命令。一个批处理系统提供的接口有系统功能调用和作业控制语言。

3-8 什么是系统调用?对操作系统的服务请求与一般的子程序调用有什么区别?

答:系统调用是用户在程序一级请求操作系统服务的一种手段。编程人员利用系统调用,在源程序一级动态请求和释放系统资源,调用系统中已有的系统功能来完成那些与机器硬件部分相关的工作以及控制程序的执行等。因此,系统调用像一个黑箱子那样,对用户屏蔽了操作系统的具体动作而只提供有关的功能。

系统调用与一般过程调用的主要区别如下:(1)程序的性质不同。系统调用服务例程是操作系统程序的一部分,它在核态下执行。而用户子程序是用户程序的一部分,它在用户态下执行。(2)调用方式不同。系统调用是通过陷入到操作系统内核来实现的,调用它们需要中断处理机制来提供系统服务。而子程序调用是在用户程序中直接调用。

3-10 简述系统调用的执行过程。

答:系统调用命令的具体格式因系统而异,但由用户程序进入系统调用的步骤及执行过程大体相同。其执行过程如下:

1.保护用户程序的现场信息,同时把系统调用命令的编号等参数放入指定的存储单元;2.根据系统调用命令的编号查找系统调用入口表,找到相应系统功能调用子程序的入口地址;

3.转到该子程序执行,当系统调用命令执行完毕,相应的结果通常返回给参数,这些参数放在指定的存储单元里;

4.系统调用命令执行完毕后恢复用户程序执行的现场信息,同时把系统调用命令的返回参数或参数区首址放入指定的寄存器中,供用户程序使用。

3-12 在Linux系统中,增加一个新的系统调用需要做哪些工作?

答:在Linux系统中,增加一个新的系统调用需要做的工作包括如下几个方面。

(1) 编写一个新增加的功能的服务例程。编写新增的服务例程,并加到内核中去,即在/usr/src/linux/kernel/sys.c文件中增加一个新的函数。

(2) 增加一个新的系统调用号。在linux中,每个系统调用被赋予一个唯一的系统调用号。找到linux中定义系统调用号定义的文件 (在include/asm-i386/unistd.h头文件中)。在此文件中按其规定的格式添加一项。

(3) 在系统调用表中登记新的系统调用号以及对应的服务例程。系统调用表记录了内核中所有已注册过的系统调用,它是系统调用的跳转表,实际上是一个函数指针数组,表中依次保存所有系统调用的函数指针。找到linux中的系统调用表 (Linux系统调用表保存在arch/i386/kernel/下的entry.S中)。在此文件中按其规定的格式增加一个新的系统调用号以及对应的服务例程。

(4) 新增加的服务例程要为Linux系统接受,必须重新编译内核,生成新的包含新增服务例程的内核。

相关文档