操作系统典型题目讲解 下载本文

14、( C)不是Unix系统的特色。

A.“交互的分时系统” B.“以全局变量为中心的模块结构” C.“模块之间调用关系简明” D.“可以分成内核和外壳”

15、实现多道程序系统的最主要硬件支持是什么? 解 中断系统和通道技术。

(1) 很多进程的切换是由时钟中断引起的,尤其是分时系统。用户程序进行系统调用时通过软中断来实现,如TRAP。通道和外设的操作也要向操作系统发送中断。 (2) 在多道程序系统中,当CPU要求在主存和外设间传输数据时,通过发出I/O指令命令通道工作,通道独立地在内存和外设间进行数据传输,I/o操作完成后,通道以中断方式通知CPU,从而实现了CPU计算与I/O操作的并行。

16、填空:在一台主机上同时连接多台终端,多个用户可以通过终端同时交互使用计算机资源,这种系统称为()操作系统;允许多个用户将多个作业提交给计算机集中处理的操作系统称为();计算机系统能及时处理过程控制数据并作出响应的操作系统称为()。 17、分时系统的一个重要性能是响应时间,下述()因素与改善响应时间有关: 选项:CPU速度快;时间片;轮转调度法;优先数+非抢占式调度算法;进程数目增加。

18、衡量整个计算机性能的指标有():用户接口;资源利用率;系统中进程数量;吞吐量;周转时间。

19、判断:单用户系统中,任何时刻,只能有一个用户进程。

20、填空:操作系统的主要性能参数有(系统资源利用率、系统吞吐量)

21、下列作业类型中,适合在分时系统中运行的有_____、______;适合在批处理系统中运行的有_____、______。(选项:学习编程;数据统计;发送电子邮件;整理硬盘) 22、判断:linux是与Unix兼容的操作系统,它不仅仅是只能运行在PC机上。

1.3操作系统的基本特性

1、判断:并发是并行的不同表述,其原理相同。(清华1998) 2、并发性的概念是()。(北京理工01) 3、在单处理机系统中实现并发技术后,判断:

(1)各进程在某一时刻并行运行,cpu与外设间并行工作; (2)各进程在一个时间段内并行运行,cpu与外设间串行工作;

(3)各进程在一个时间段内并行运行,cpu与外设间并行工作。(四川大学01) 2、填空:现代操作系统的两个最基本的特征是()、()。(川大2005)

1.4操作系统的主要功能

1、在用户程序中要将一个字符送到显示器上显示,使用操作系统提供的()接口:(系统调用;函数;原语;子程序)

5

2、系统调用的作用是什么?请给出实现系统调用的步骤。

3、用户程序向系统提出使用外设的请求方式是():作业申请;原语;系统调用;I/O指令。

4、判断:系统调用与用户程序之间的调用不同之处是处理机状态的改变。 5、判断:命令解释程序是操作系统的一个程序,它必须在核心态下运行。

6、用户进程通过系统调用fork创建一个新进程,在执行系统调用前,用户进程运行在();在执行fork过程中,用户进程运行在()。(选项:系统态;用户态;系统态或用户态;内部态)

6、判断:系统调用命令就是访管指令,它的功能是由硬件直接提供的。 7、比较一般的过程调用和系统调用:

答:(1)运行在不同的系统状态:一般过程调用,其调用程序和被调用程序都运行在相同的状态:系统态或用户态。而系统调用的调用过程运行在用户态,被调用过程运行在系统态。(2)通过软中断进入:一般过程调用不涉及系统状态状态转换,可直接由调用过程转向被调用过程;而系统调用通常是通过软中断机制,先由用户态转换为系统态,经核心分析后,再转向相应的系统调用处理子程序。(3)返回问题:一般过程调用在被调用过程执行完后将返回到调用过程继续运行。但对于采用抢占式调度的系统中,当从系统调用返回时,有可能会重新调度。

第二章 进程管理

2.1 进程的基本概念

1、进程申请打印输出完成向系统发出中断后,进程的状态变化为()。(南京邮电01) 2、判断:当一个进程从等待态变为就绪态,则一定有一个进程从就绪态变成运行态。 3、如果一个单处理机系统中有N个进程,

? 运行进程最多几个,最少几个? ? 就绪进程最多几个,最少几个? ? 等待进程最多几个,最少几个?

解答: 运行进程最多1个,最少0个;

就绪进程最多N-1个,最少0个; 等待进程最多N个,最少0个;

4、判断:在一个N个进程的单处理机系统中,有可能出现N个进程都被阻塞的情况。 5、补充内容:

特权指令

指具有特殊权限的指令。这类指令只用于操作系统或其他系统软件,一般不直接提供给用户使用。 在多用户、多任务的计算机系统中特权指令必不可少。它主要用于系统资源的分配和管理,包括改变系统工作方式,检测用户的访问权限,修改虚拟存储器管理的段表、页表,完成任务的创建和切换等。 常见的特权指令有以下几种:

6

(1)有关对I/O设备使用的指令 如启动I/O设备指令、测试I/O设备工作状态和控制I/O设备动作的指令等。

(2)有关访问程序状态的指令 如对程序状态字(PSW)的存取指令等。 (3)存取特殊寄存器指令 如存取中断寄存器、时钟寄存器、设置中断屏蔽、关中断、置基址寄存器等指令。 (4)其他指令:清内存,停机

6、关于进程状态,判断:

(1)进程一旦形成,首先进入的是运行状态。 (2)一个进程必须经过进程的三个基本状态才能结束。 (3)进程可能同时处于某几种基本状态中。

(4)分时系统中,一个正在运行的进程的时间片到,该进程将转入就绪状态。

7、只能在管态下执行的指令有(从内存中取数指令;把运算结果写内存指令;算术运算指令;I/O指令;读时钟指令;置时钟指令、寄存器清零指令;屏蔽所有中断;改变存储器映像图;改变磁盘空间分配位图;) 8、在一个分时系统中,用户提交了一个作业,作业内容包括:请求内存缓冲区;计算并将结果存于内存缓冲区;请求打印机;将缓冲区中的内容在打印机上输出;释放打印机;释放内存;结束。

讨论进程可能的状态变化。

9、判断:在单CPU的系统中,任何时刻都有一个进程处于运行状态。 10、判断:进程申请CPU得不到满足时,其状态变为阻塞态。 11、能从1种状态转变为3种状态的是():就绪;阻塞;完成;执行 12、判断:进程在运行中,可以自行修改自己的PCB。

13、判断:当进程申请CPU得不到满足时,它将处于阻塞状态。

14、判断:当进程由执行状态变为就绪状态时,CPU现场信息必须被保存在PCB中。 15、操作系统通过PCB来控制和管理进程,用户进程可从PCB中读出与本身运行状态相关的信息。

16、若一个进程实体由PCB、正文段、数据段和堆栈段组成,请指出下列C语言程序中的内容位于哪一段中:外部变量、局部变量、函数调用实参传递值、用molloc()要求动态分配的存储器、常数值。

(局部变量:堆栈段;静态局部变量:数据段;外部变量:数据段;函数调用参数:堆栈段;malloc分到的存储区:数据段)

17、unix为什么要把PCB分为进程表项(Proc区)和U区?

提示:因为进程表项中的内容对核心来说必须总是可存取的,而U区中的域只能由正在运行的进程来存取。只有当创建一个进程时,核心才为其分配U区空间,那些不与任何进程相联系的进程表项是不需要U区的。

18、以unix为例,说明Operating System Function Execute Within User Process 的实现模型。

7

提示:unix存在两类进程:系统进程和用户进程。前者在核心态下执行os代码,后者在用户态下执行用户程序。当用户进程因中断或系统调用进入内核态,此时发生了模式切换,但没有发生进程上下文切换。这时,系统进程开始执行,而这两个进程(用户/系统进程)使用同一个PCB,实质是一个进程,仅执行的程序不同,映射的物理地址空间不同,使用的堆栈不同。

19、进程和程序直接可以形成一对一、一对多、多对一、多对多的关系,请分别举例说明在什么情况下会形成这样的关系?

提示:进程与程序一对多:一个进程中执行多个程序;多对一:分时系统中的编译程序为多个终端用户的源程序进行编译;多对多:

20、UNIX系统中进程由三部分组成:进程控制块,正文段和数据段。这意味着一个程序的正文与数据可以是分开的,这种分开的目的是为了( ABC ) A.可共享正文 B.可共享数据

C.可重入 D.方便编程 E.以上全部

21、对于运行于unix系统的以下程序,其执行后 的输出结果是() Void main() { }

22、在分时系统中,导致进程创建的典型事件是(2)(选项:用户注册;用户登录;用户记账);在批处理系统中,导致进程创建的典型事件是(2)(选项:作业录入;作业调度;进程调度);由系统专门为允许中的应用进程创建新进程的事件是()(选项:分配资源;进行通信;共享资源);()(选项:分配PCB;分配内存;分配CPU;分配外设;插入就绪队列)不是创建进程所必需的步骤。

23、系统有n(n>2)个进程,且当前不再执行进程调度程序,判断下述情况十分可能发生: (1)有一个运行进程,没有就绪进程,n-1个阻塞进程。 (2)有一个运行进程,有一个就绪进程,n-2个阻塞进程。 (3)有一个运行进程,n-1个就绪进程,没有阻塞进程。 (4)没有运行进程,有2个就绪进程,n-2个阻塞进程。

24、判断:在单处理机上,进程就绪队列和阻塞队列都只能由一个。 25、判断以下关于unix进程组成的说法:

(1)进程由进程控制块、正文段、数据段三部分组成; (2)进程控制块包括基本控制块和扩充控制块,常驻内存; (3)正文段是指可供多个进程共享的程序;

(4)数据段分为用户栈区、用户数据区和系统工作区。 提示:

8

printf(“hello1”); Fork(); printf(“hello2”);