2013年408真题操作系统篇
2013年408真题操作系统篇
选择
23. 用户在删除某文件的过程中,操作系统不可能执行的操作是( )。
选项:
A. 删除此文件所在的目录
B. 删除与此文件关联的目录项
C. 删除与此文件对应的文件控制块
D. 释放与此文件关联的内存缓冲区
✅ 答案:A
✏️ 解释:
- A. 删除此文件所在的目录:❌
删除一个文件不应删除其所在目录,因为该目录可能还包含其他文件。如果操作系统删除了整个目录,则会造成其他文件也无法访问,这是不合理且不允许的操作,因此这是操作系统不可能执行的操作。 - B. 删除与此文件关联的目录项:✔️
删除文件时,操作系统会删除目录中的对应目录项,这是合理的行为。 - C. 删除与此文件对应的文件控制块(FCB):✔️
删除文件时会释放相关资源,包括文件控制块(FCB)。 - D. 释放与此文件关联的内存缓冲区:✔️
删除文件时,内存中用于缓存该文件数据的缓冲区会被释放,以回收内存资源。
✅ 最终答案:A
24. 为支持 CD-ROM 中视频文件的快速随机播放,播放性能最好的文件数据块组织方式是( )。
选项:
A. 连续结构
B. 链式结构
C. 直接索引结构
D. 多级索引结构
✅ 答案:A
✏️ 解释:
- CD-ROM(光盘)具有顺序访问特性,即:
- 寻道和旋转延迟时间较长;
- 随机访问代价较高;
- 因此,连续读写性能最好。
- A. 连续结构:✔️
文件数据块在物理上连续排列,可以快速顺序或随机定位任意块,非常适合用于 CD-ROM 上的视频播放。 - B. 链式结构:❌
每个块包含指向下一个块的指针,需要顺序读取、无法高效随机访问。 - C. 直接索引结构:❌
虽然支持一定程度的随机访问,但物理块可能分散,光盘读取效率差。 - D. 多级索引结构:❌
支持大文件访问,但结构复杂,查找路径长,不适合光盘这种顺序访问设备。
✅ 最终答案:A
25. 用户程序发出磁盘 I/O 请求后,系统的处理流程是:用户程序 → 系统调用处理程序 → 设备驱动程序 → 中断处理程序。其中,计算数据所在磁盘的柱面号、磁头号、扇区号的程序是( )。
选项:
A. 用户程序
B. 系统调用处理程序
C. 设备驱动程序
D. 中断处理程序
✅ 答案:C. 设备驱动程序
✏️ 解释:
- 用户程序(A):仅发出I/O请求,不负责计算磁盘物理地址。
- 系统调用处理程序(B):负责把请求传入内核,转给设备驱动,但不处理硬件细节。
- 设备驱动程序(C):✔️ 负责将逻辑地址转换为物理地址(柱面号、磁头号、扇区号),这是它控制硬件的职责。
- 中断处理程序(D):响应设备完成I/O后的中断信号,用于收尾处理,而不是负责计算物理位置。
✅ 正确答案:C
26. 若某文件系统索引结点 (inode) 中有直接地址项和间接地址项,则下列选项中,与单个文件长度无关的因素是( )。
选项:
A. 索引结点的总数
B. 间接地址索引的级数
C. 地址项的个数
D. 文件块大小
✅ 答案:A. 索引结点的总数
✏️ 解释:
设:
- 每个文件块大小为
x
字节; - 每个地址项大小为
y
字节; - inode 中的地址项个数为
n
; - 有 k 级间接索引(含直接索引为第0级);
那么一个文件最大长度约为:
A. 索引结点的总数:✔️
描述的是整个系统中inode的数量,决定了系统最多可有多少文件,与单个文件长度无关。B. 间接地址索引的级数:❌
越多级索引,可寻址的数据块越多,影响单个文件能有多长。C. 地址项的个数:❌
指inode中存储地址的项数,越多能寻址的块越多,影响文件最大长度。D. 文件块大小:❌
每块存储的数据量,直接乘在上式中,影响文件最大可存储的数据量。
✅ **正确答案:A
27.
设系统缓冲区和用户工作区均采用单缓冲,从外设读入 1 个数据块到系统缓冲区的时间为 100,从系统缓冲区读入 1 个数据块到用户工作区的时间为 5,对用户工作区中的 1 个数据块进行分析的时间为 90,如下图所示。
进程从外设读入并分析 2 个数据块的最短时间是( )。
选项:
A. 200
B. 295
C. 300
D. 390
✅ 答案:C. 300
✏️ 解释:
给定时间:
- 外设 → 系统缓冲区:T = 100
- 缓冲区 → 用户工作区:M = 5
- 分析用户工作区数据:C = 90
使用 单缓冲 + 连续处理 + 2 个数据块,我们可以使用如下通用公式:
代入:
- n = 2(两个数据块)
- T = 100, M = 5, C = 90
- $\max(C, T) = \max(90, 100) = 100$
✅ 正确答案:C
28.
下列选项中,会导致用户进程从用户态切换到内核态的操作是( )。
I. 整数除以零
II. sin()
函数调用
III. read
系统调用
选项:
A. 仅 I、II
B. 仅 I、III
C. 仅 II、III
D. I、II 和 III
✅ 答案:B. 仅 I、III
✏️ 解释:
I. 整数除以零:✔️ 正确
这是 硬件异常,CPU 会产生中断请求,进入内核态由内核处理。II.
sin()
函数:❌ 错误
这是标准数学库函数,仅在用户态运行,不涉及系统调用或内核操作。III.
read
系统调用:✔️ 正确read()
是典型的 系统调用,需要操作系统协助访问 I/O 资源,必须从用户态切换到内核态。
✅ 正确答案:B
29.
计算机开机后,操作系统最终被加载到( )。
选项:
A. BIOS
B. ROM
C. EPROM
D. RAM
✅ 答案:D. RAM
✏️ 解释:
开机流程如下:
- BIOS(基本输入输出系统)存在于 ROM 中,是最先执行的固件代码,负责完成自检(POST)和引导加载(Bootstrapping)。
- BIOS 会查找引导设备(如硬盘、U盘、光盘等),读取其 引导扇区(Boot Sector) 中的引导程序。
- 引导程序被加载进 RAM 中并执行,它的任务是继续加载操作系统核心。
- 操作系统被逐步加载进 RAM(随机存取存储器),最终在 RAM 中运行。
🔎 所以:
- BIOS/ROM/EPROM 仅负责启动和引导,不是操作系统运行的地方。
- 操作系统最终必须被加载到 RAM 中才能运行。
✅ 正确答案:D
30.
若用户进程访问内存时产生缺页,则下列选项中,操作系统可能执行的操作是( )。
I. 处理越界错
II. 置换页
III. 分配内存
选项:
A. 仅 I、II
B. 仅 II、III
C. 仅 I、III
D. I、II 和 III
✅ 答案:B. 仅 II、III
✏️ 解释:
缺页是指访问的页面当前不在物理内存中,操作系统需要处理:
- I. 处理越界错:❌ 错误
越界错误是程序试图访问它不被允许访问的地址,属于非法访问,不是缺页处理的一部分。 - II. 置换页:✔️ 正确
如果物理内存已满,需要将一个页面换出(页置换),使用如 FIFO、LRU 等页面置换算法。 - III. 分配内存:✔️ 正确
如果物理内存中还有空闲帧,操作系统可直接分配一页帧来加载所需页面。
✅ 正确答案:B
31.
某系统正在执行三个进程 P1、P2 和 P3,各进程的计算 (CPU) 时间和 I/O 时间比例如下:
进程 | 计算时间占比 | I/O时间占比 |
---|---|---|
P1 | 90% | 10% |
P2 | 50% | 50% |
P3 | 15% | 85% |
为提高系统资源利用率,合理的进程优先级设置应为( )。
选项:
A. P1 > P2 > P3
B. P3 > P2 > P1
C. P2 > P1 = P3
D. P1 > P2 = P3
✅ 答案:B. P3 > P2 > P1
✏️ 解释:
优先级策略中有一个重要原则:I/O 密集型进程优先级应高于 CPU 密集型进程,原因是:
- I/O 密集型进程往往只需要很少的 CPU 时间,但大量时间等待 I/O,如果不及时处理,可能导致 I/O 设备空闲、CPU 也空闲,浪费资源。
- 提高其优先级可加快它的调度,从而在等待 I/O 时尽快释放 CPU,提高整体并发性和资源利用率。
分析本题:
- P1:90% CPU 密集 → 最低优先级
- P2:50% / 50% → 中等
- P3:85% I/O 密集 → 最高优先级
因此合理的优先级设置应为:P3 > P2 > P1
✅ 正确答案:B
32.
下列关于银行家算法的叙述中,正确的是( )。
选项:
A. 银行家算法可以预防死锁
B. 当系统处于安全状态时,系统中一定无死锁进程
C. 当系统处于不安全状态时,系统中一定会出现死锁进程
D. 银行家算法破坏了死锁必要条件中的“请求和保持”条件
✅ 答案:B. 当系统处于安全状态时,系统中一定无死锁进程
✏️ 解释:
银行家算法是一种避免死锁的经典算法。我们逐项分析:
- A 错误:银行家算法是避免死锁的方法,不属于预防死锁(它没有破坏死锁的四个必要条件)。
- B 正确:如果系统处于安全状态,就说明存在一个安全序列,系统能够按这个顺序为每个进程分配资源并最终完成,不会发生死锁。
- C 错误:不安全状态不等于死锁状态,它只是表示存在潜在死锁的风险,并不是一定发生死锁。
- D 错误:银行家算法并未破坏请求和保持条件,进程仍然可以请求资源并保持已分配的资源。
✅ 正确答案:B
PV问题
(7分)
某博物馆最多可以容纳 500 人同时参观,有一个出入口,该出入口一次仅允许一个人通过。参观者的活动描述如下:
1 | cobegin |
请添加必要的信号量和P、V(或wait( )、signal( ))操作,以实现上述过程中的互斥与同步。要求写出完整的过程,说明信号量的含义并赋初值。
✅ 答案:
为实现博物馆参观者进出的互斥与同步操作,可以通过以下信号量操作来控制并发:
- museum: 控制博物馆内当前的参观人数,初值为 500,表示博物馆最多允许 500 人同时参观。
- door: 控制出入口的使用,初值为 1,表示出入口一次只能有一个人通过。
- mutex: 控制出入口资源的互斥使用,初值为 1,保证进出门操作的互斥。
以下是完整的代码:
1 | semaphore museum = 500; // 博物馆可容纳人数 |
✏️ 解释:
- 信号量定义:
- museum:这是一个计数信号量,用来控制博物馆内当前参观的人数。初值为 500,表示最多可以有 500 人进入博物馆。
- door:这是一个二进制信号量,用来控制博物馆的出入口。初值为 1,表示出入口在某一时刻只能允许一个人通过。
- mutex:这是一个互斥信号量,用于控制出入口资源的互斥访问,确保进出门操作的原子性。初值为 1。
- 进程操作:
- P(museum):表示参观者尝试进入博物馆,先检查博物馆是否已满。如果博物馆内人数未满,则允许进入。
- P(door):表示参观者申请出入口的使用权,确保每次只有一个人可以进出。
- 进门:执行进门操作。
- V(door):释放出入口资源,允许其他人进出。
- 参观:参观博物馆的过程。
- P(door):表示参观者准备出门,申请出入口的使用权。
- 出门:执行出门操作。
- V(door):释放出入口资源,允许其他人进出。
- V(museum):释放博物馆容纳的名额,使得其他参观者可以进入。
- 为什么P(museum)和P(door)的顺序要先P(museum)再P(door):
- 如果先P(door)再P(museum),假设有人进入,博物馆刚好满了,而此时有人已经执行了P(door),但是博物馆内已没有空余空间,外面的进程进不去,里面的人也无法出门,造成死锁。
- 先执行P(museum)确保博物馆有空间再执行P(door),可以避免这种死锁情况。
- 为什么V(museum)和V(door)的顺序要先V(door)再V(museum):
- 先V(door)释放出入口资源,再V(museum)释放博物馆名额,避免死锁和不一致的状态。
✅ 正确答案:完整代码和解释如上所示
页表相关
(1) 使用一级页表的分页存储管理方式,逻辑地址结构为:
页号(20位)
页内偏移量(12位)
- 页的大小是多少字节?
- 页表最大占用多少字节?
解答:
页大小:根据给定的逻辑地址结构,页内偏移量为12位。一个字节有8位,因此页大小为 $2^{12}$ 字节 = 4KB。
页表最大占用字节数:页号占20位,因此最多可以有 $2^{20}$ 个页面。每个页表项的大小为4字节,因此页表的最大占用字节数为:
(2) 使用二级页表的分页存储管理方式,逻辑地址结构为:
页目录号(10位)
页表索引(10位)
页内偏移量(12位)
- 页目录号(10位)
- 页表索引(10位)
- 页内偏移量(12位)
设逻辑地址为 LA,请分别给出其对应的页目录号和页表索引的表达式。
解答:
可以通过位运算或除法运算来提取页目录号和页表索引。
页目录号的表达式:
页目录号占高10位,因此可以通过逻辑右移22位来得到:
页表索引的表达式:
页表索引占中间的10位,可以先通过右移12位来去除较低的位,再用掩码取出低10位:
或者通过模运算和除法运算来实现:
(3) 采用(1)中的分页存储管理方式,一个代码段起始逻辑地址为 0000 8000H,其长度为 8KB,被装载到从物理地址 0090 0000H 开始的连续主存空间中。页表从主存 0020 0000H 开始的物理地址处连续存放,计算出该代码段对应的两个页表项的物理地址、这两个页表项中的页框号以及代码页面 2 的起始物理地址。
解答:
逻辑地址分析:代码段的起始逻辑地址为 0000 8000H,其长度为 8KB。每个页面占 4KB,因此代码段需要 2 个页面。
页表项的物理地址:
页表从物理地址 0020 0000H 开始,页表项占 4 字节。
第一个页面的页号为 8H,第二个页面的页号为 9H。
页表项的物理地址:
- 页面1的页表项物理地址:$0020 0000H + 8 \times 4H = 0020 0020H$
- 页面2的页表项物理地址:$0020 0000H + 9 \times 4H = 0020 0024H$
页框号和物理地址:
代码段被加载到物理地址 0090 0000H 开始的连续主存空间中,页面1的物理地址为 0090 0000H,页面2的物理地址为 0090 1000H。
页框号:页面1的页框号为 0090H,页面2的页框号为 0091H。
代码段对应的页表项的物理地址:
- 物理地址 0020 0020H 对应页面1
- 物理地址 0020 0024H 对应页面2
代码页面 2 的起始物理地址为 0090 1000H。
总结:
- (1) 页大小为 4KB,页表最大占用 4MB。
- (2) 提供了页目录号和页表索引的位运算和除法运算表达式。
- (3) 计算了代码段对应的页表项物理地址、页框号以及页面起始物理地址。