当前位置:问答库>考研试题

2017年北京市培养单位计算技术研究所408计算机学科专业基础综合之计算机操作系统考研题库

  摘要

一、选择题

1. 文件系统中设立打开(Open )系统调用的主要目的是( )。

A. 把文件从辅存读到内存

B. 把文件的控制信息从辅存读到内存

C. 把文件的FA T 表信息从辅存读到内存

D. 把磁盘文件系统的控制管理信息从辅存读到内存

【答案】A

【解析】Open 操作是将基本文件目录中的内容读入到用户活动文件表中,并在系统活动文件表中记录文件的打开次数。

2. 一个多道批处理系统中仅有P1和P2两个作业,P2比P1晚5ms 到达。它们的计算和I/O操作顺序如下:

P1:计算60ms ,I/O80ms,计算20ms 。

P2:计算120ms ,I/O40ms,计算40ms 。

若不考虑调度和切换时间,则完成两个作业需要的时间最少是( )。

A.240ms

B.260ms

C.340ms

D.360ms

【答案】B

【解析】画出PI 和P2的运行甘特图如图所示。P2晚到,因此先从PI 开始执行,由图可知最少时间为

260ms.

图 P1和P2的运行甘特图

3. 下列选项中,在用户态执行的是( )。

A. 命令解释程序

B. 缺页处理程序

C. 进程调度程序

D. 时钟中断处理程序

【答案】A

【解析】CPU 状态分为管态和目态,管态又称为特权状态、系统态或核心态。通常,操作系统在管态下运行。CPU 在管态下可以执行指令系统的全集。目态又称为常态或用户态,当机器处于目态时,程序只能执行非特权指令,用户程序只能在目态下运行。

CPU 将指令分为特权指令和非特权指令,对于那些危险的指令,只允许操作系统及其相关模块使用,普通的应用程序不能使用。

缺页处理与时钟中断都属于中断处理程序,处理不当会对系统造成不良影响,因此只能在系统态执行。进程调度属于系统的一部分,也只能在系统态执行。命令解释程序属于命令接口,是操作系统提供给用户所使用的接口,因此可以用在用户态执行。因此选A 项。

另一个提供给用户程序的接口-系统调用也是在用户态执行。

4. 采用段式存储管理时,一个程序如何分段是在( )决定的。

A. 分配主存时

B. 用户编程时

C. 装作业时

D. 程序执行时

【答案】B

【解析】段式存储管理是为了方便编程,满足用户需求而引入的,所以分段必须在用户编程时决定。

5. 中断处理和子程序调用都需要压栈以保护现场。中断处理一定会保存而子程序调用不需要保存其内容的是( )。

A. 程序计数器

B. 程序状态字寄存器

C. 通用数据寄存器

D. 通用地址寄存器

【答案】B

【解析】本题考查的是中断处理和子程序调用所保存内容的区别,可以先从两者的作用不同来考虑。中断的发生通常是突然的,如地址越界等,往往是系统无法预知的(外部输入中断也是无法预知的,计算机不会知道用户什么时候用键盘输入)。当系统发生中断时要转入中断处理程序,处理完之后要返回到发生中断时的指令处继续执行,由于处理中断时CPU 可能会切换状态(如果

,在系统态发生中断则始终为系统态,不需要切换)所以中断处理返回时就需要还原当时的程序状

态,包括处理器信息等,这就用到了程序状态字(PSW )寄存器所存储的内容。程序状态字寄存器用于记录当前处理器的状态和控制指令的执行顺序,并且保留和指示与运行程序有关的各种信

息,其主要作用是实现程序状态的保护和恢复。所以中断处理时一定要将PSW 压栈保存。

子程序调用是系统能够预知的,而且子程序调用通常是在进程内部执行,不会更改程序状态,即便更改程序状态,只要更新寄存器就行,而不需要保存,因为一切都是系统预料到的,不需要保护和恢复。因此,子程序调用主要保存局部参数信息等,不需要将PSW 压栈。

中断处理和子程序调用对其他3个选项的操作都是相同的。

6. 一个正在运行的进程,当发生某一事件,将其挂在( )。

A. 等待队列

B. 运行队列

C. 就绪队列

D. 任意一个队列

【答案】A

【解析】只有在分时系统时间片完时,进程由运行转为就绪状态。一般来说,有事件发生时,进程会被挂在等待队列。

7. 在存储管理中采用对换和覆盖,目的是( )。

A. 物理上扩充

B. 实现主存共享

C. 节省存储空间

D. 提高CPU 利用率

【答案】D

【解析】对换和覆盖是在逻辑上扩充内存的方法,从而解决内存容量不足和有效利用内存的问题。所以它不是物理上扩充,与实现主存共享无关,不能节省存储空间,最终目的是提高CPU 利用率。

8. 可变式分区又称为动态分区,它是在系统运行过程中( )时动态建立的。

A. 在作业装入

B. 在作业创建

C. 在作业完成

D. 在作业未装入

【答案】A

【解析】动态分区分配是根据进程的实际需要,动态地为之分配内存空间。为把一个新作业装入内存,须按照一定的分配算法,从空闲分区表或空闲分区链中选出一分区分配给该作业,故它是在作业装入时动态建立的。