操作系统期末真题(一)解析

2026年9月22日 Crystal-Sky 23 min read 操作系统期末复习真题解析

一、(24分)简要回答下列问题。

1.(6分)磁盘空闲存储空间管理

题目 1.1

1.(6分)对于磁盘空闲存储空间管理,下列 2 种方法哪一种好?为什么?

(1)每个空闲块中指出下一个空闲块的块号。

(2)采用多个空闲块构成的链表存放空闲块号。

2.(6分)死锁判断

题目 1.2

2.(6分)下面关于死锁问题的叙述,是否正确?为什么?

(1)若 A、B、C、D 四个进程都处于阻塞状态,则 A、B、C、D 构成的进程集合出现死锁。

(2)若 A、B、C、D 四个进程构成的集合出现死锁,则 A、B、C、D 中的每个进程都一定占有资源。

(3)若系统处于不安全状态,则一定会导致死锁。

3.(6分)共享设备

题目 1.3

3.(6分)I/O 设备按共享属性分类可分为独占设备和共享设备。举一个共享设备的例子,针对你所举的例子,说明共享的含义,给出一种设备分配方法,并说明你的方法存在的不足。

4.(6分)内存管理设计目标的冲突

题目 1.4

4.(6分)在设计操作系统的内存管理功能时,需要考虑多个设计目标,例如内存利用率高、便于实现内存共享等,而有些设计目标之间往往存在冲突,需要权衡。举 2 个与内存管理相关的设计目标(不限于本题所列的设计目标)存在冲突的例子,分别解释可能冲突的情况,并简要阐述在设计时采取什么策略对相互冲突的设计目标进行权衡。

二、(18分)虚拟页式存储管理。

题目 2.1

某计算机系统采用虚拟页式存储管理,虚拟地址为 32 位,页的大小为 4096 个字节。采用请求调页、固定分配和局部置换策略,页的置换以及快表项的置换均采用 FIFO(First-In-First-Out)算法,页表在内存中。产生缺页中断时,系统将缺页调入内存,更新页表(不更新快表),返回到产生缺页中断的指令处重新执行。

1. 假定为进程 P 分配了 3 个物理块(或称页框、页帧,pageframe),快表长度为 2,进程 P 依次有页号为 10H、100H 和 60H 的页面调入内存中。此时,进程 P 被调度执行,快表为空,依次访问下列虚拟地址(假定这些虚拟地址均在进程 P 的虚拟地址空间内):

(1)100860H (2)20E60H (3)100920H (4)60100H (5)100600H

得到这些虚拟地址对应的物理地址各需访问内存几次?说明每次访问内存的功能。

2. 指出该内存管理机制存在的一种不足。针对这种不足,给出一种改进方法,并解释理由。

三、(12分)并发执行与共享变量。

题目 3.1

设有两个程序 P1 与 P2,其执行的代码分别如下。

程序 P1:

int x;
for (i = 0; i < 3; i++)
    x = x + 1;

程序 P2:

int x;
for (i = 0; i < 2; i++)
    x = x - 1;

其中,x 是共享变量,初值为 0。现启动 4 个进程(2 个进程对应程序 P1,2 个进程对应程序 P2)并发执行,请给出这 4 个进程均执行完成后所有可能的 x 值。

四、(16分)文件系统与多级目录。

题目 4.1

某文件系统采用多级目录结构,目录当作文件。目录项只包含文件名和 I 节点号,文件地址(磁盘物理块号)等其它文件属性放在 I 节点中。假定磁盘逻辑块与物理块的大小均为 1K 字节,磁盘物理块(以下简称磁盘块)号用 4 个字节表示,根据 I 节点号可计算出其 I 节点所在的磁盘块号,根据磁盘块号可确定磁盘物理地址。目录项中的文件地址由 10 个地址组成,其中 8 个地址是直接地址,1 个地址是一次间接地址,1 个地址项是二次间接地址,每个地址只包含磁盘块号。设文件 f.dat 存在于目录 /zhang/data 下。

1. 设每个目录文件所占空间不超过 2 个磁盘块,每个 I 节点所占空间不超过 1 个磁盘块,根目录文件的 I 节点号已知。为了获得文件 f.dat 的地址,最少需要读多少个磁盘块?最多需要读多少个磁盘块?要求给出计算过程。

2. 你认为如何提高根据文件名(文件路径名)获得文件地址的速度?请给出一种方法,并解释具体理由。

3. 在获得文件 f.dat 的地址后,若要读文件 f.dat 的第 269K 个字节(字节编号从 0 开始),需要读几个磁盘块?要求给出计算过程。

五、(12分)调度方案分析。

题目 5.1

某应用场景分 2 类任务:交互式任务和后台任务,要求交互式任务绝对优先于后台任务执行,交互式任务之间、后台任务之间没有优先级的区别。小明为该应用场景的专用操作系统设计了一个调度方案:设置 6 个就绪队列 Q[6],i(0$\leq$i<6)越小,Q[i] 的级别越高,调度程序总是选择执行级别高的队首任务,只有 Q[0]-Q[i-1] 为空,才会调度 Q[i] 的任务;就绪的后台任务进入 Q[5] 的队尾,就绪的交互式任务进入 Q[0] 的队尾,每个队列采用时间片轮转调度,执行的时间片到时被剥夺,所有队列的时间片大小相同;当高级队列有任务就绪时,正在执行的低级队列的任务被剥夺。交互式任务被剥夺时,降到下一级队列的队尾(Q[4] 的任务不降级);后台任务被剥夺时,排在 Q[5] 的队尾。

1. 对于交互式任务,小明的设计方案存在饥饿的问题,请说明为什么?给出一种解决该问题的方法,并加以解释。

2. 对于交互式任务,在排除饥饿的情况下,小明的设计方案存在不够公平的问题,请说明为什么?给出一种解决该问题的方法,并加以解释。

3. 对于后台任务,给出一种与小明的设计相比调度开销更小的方法,解释理由,并说明你的方法可能带来的其它方面的不足。

六、(18分)同步算法设计。

题目 6.1

某银行的业务分为现金和转账,这 2 项业务分别由 2 个和 1 个服务员负责办理。业务大厅最多能容纳 20 位等候办理业务的客户(不包括正在办理业务的客户)。客户到来时,若业务大厅已满,则离开;否则进入大厅根据办理的业务取号,然后等候服务员叫号,办理完业务后离开。试用信号量的 P、V 操作设计该问题的同步算法,给出所用共享变量(如果需要)和信号量及其初始值,并说明各自的含义。