2011 年《操作系统》期末真题

我以源目录中的 os.2011.A.doc 和配套参考答案为准;同名 PDF 和“2011 年期末试题(2)”只是相同内容的格式副本,未重复发布。源答案有截断或只给评分点的地方会如实说明。

一、名词解释(每题 5 分,共 25 分)

  1. 文件控制块
  2. 临界资源
  3. 虚拟存储器
  4. 死锁
  5. 页表
查看源答案
  1. 文件控制块是操作系统为管理文件设置的数据结构,保存文件名、类型、物理地址、大小、访问和修改日期、所有者标识、访问权限等,是文件存在的标志。
  2. 临界资源是一次只允许一个进程使用的共享资源。
  3. 虚拟存储技术借助软硬件支持,使主、辅存之间的信息交换、重定位和地址转换自动进行,让主辅存形成统一整体。
  4. 配套答案只保留到“两个以上的进程相互等待一个永远不可能发生的条件出现,这种僵……”,后文在源文件中已经截断。
  5. 页表是页式管理使用的数据结构,主要完成逻辑地址到物理地址的映射。

二、判断题(每题 1 分,共 5 分)

  1. 由于 P、V 操作描述同步、互斥问题的能力不足,所以有必要引入 send、receive、Monitor 等通信原语或机制。( )
  2. 信号量只允许由 P、V 操作访问和修改。( )
  3. 请求页式管理中,页面淘汰所花费的时间不属于系统开销。( )
  4. 预防死锁就是破坏死锁存在的某个必要条件。( )
  5. 磁盘是一类典型的字符设备。( )
查看源答案
  1. 错。
  2. 对。
  3. 错。
  4. 对。
  5. 错。

三、简答题(每题 5 分,共 20 分)

1. 页表保护

如果普通用户程序可以自行修改页表,会产生什么问题?

查看源答案

用户将能把页表项改到任意地址,进而访问不属于自己的内存,造成安全问题。

2. 进程与线程

进程与线程有什么区别?

查看源答案

进程既是并发单位,也是资源分配单位;线程是进程内部的执行路线,只能使用所在进程范围内的资源,主要独立获得处理机时间片,因此又称轻量级进程。

3. 磁盘调度

简述并比较 SCAN 与 SSTF。

查看源答案

SSTF 总选择距离当前磁头最近的请求,可能使远处请求饥饿;SCAN 优先保持当前移动方向,处理该方向上的请求后再反向。

4. 信号量

信号量的物理意义是什么?

查看源答案

正值表示系统中某类可用资源的数量;负值的绝对值表示等待该资源的进程数。

四、资源分配(10 分)

系统有 8 台打印机,kk 个进程竞争使用,每个进程最多需要 3 台。可能发生死锁的最小 kk 是多少?说明理由。

查看源答案

k=4k=4。三个进程即使各拿 2 台,仍余 2 台,至少一个进程可以得到第 3 台并完成;四个进程若各拿 2 台,8 台全部占用,每个进程都再等待 1 台,可能死锁。

五、进程同步(15 分)

  1. 写出 P、V 操作定义。(5 分)
  2. 银行有 1 个窗口和 10 个等候座位。顾客有空座才取号等待,取号机一次只允许一人使用;营业员空闲时叫号服务。用 P、V 操作同步顾客与营业员。(10 分)
查看源答案

源答案给出:

P(S): while S <= 0 do skip
      S := S - 1
V(S): S := S + 1

第二问只保留“程序结构 2 分、信号量初值 2 分、程序逻辑 6 分”的评分点,没有源代码答案。

六、存储管理(15 分)

计算机提供 2322^{32} 字节虚拟空间,采用一级页表,页面 4 KB。一个进程最多占 2 页物理内存,采用 LRU 和局部置换。当前页表为:

页号页框号存在位
010H1
1—0
241H1

访问串为 2111H、191AH、2315H。

  1. 进程页表占多少内存?说明理由。(5 分)
  2. 191AH 的物理地址是多少?说明理由。(10 分)
查看源答案
  1. 一级页表占 4 MB。
  2. 191AH 的页号为 1、页内偏移为 91AH。工作集只有 2 页,按源答案应换出第 0 页,页 1 使用页框 10H,物理地址为 10H × 4K + 91AH = 1091AH。

七、并发问题(10 分)

下面两个过程并发执行,能否正确运行?若不能,举例并改正。

shared integer x

P1:                   P2:
  x := 1                x := 0
  y := 0                t := 0
  if x >= 1             if x <= 1
    y := y + 1            t := t + 2
  z := y                u := t
查看源答案

不能。若先完整执行 P1,则 y=1;若 P1 执行 x:=1 后切到 P2 把 x 改为 0,再回到 P1,则 y=0,相同输入会得到不同结果。

源答案给出的改法是用一个互斥信号量把两个过程对共享变量 x 的整段操作串行化。

评论