Skip to content

2021年 408 操作系统 第 28 题

操作系统2021年选择题2分

题目

某请求分页存储系统的页大小为 4KB,按字节编址。系统给进程 P 分配 2 个固定的页框并采用改进型 Clock 置换算法,进程 P 页表的部分内容如下表所示:

页号页框号存在位(1:存在;0:不存在)访问位(1:访问;0:未访问)修改位(1:修改;0:未修改)
...............
220H000
360H110
480H111
...............

若 P 访问虚拟地址为 02A01H 的存储单元,则经地址变换后得到的物理地址是( )。

错因

A

把虚拟地址里的 02H 误当成了页框号直接拼上偏移。但 02H 是页号,要先去页表查它对应哪个页框号,再把页框号拼上偏移。直接拿页号当页框号是没走地址变换的常见错。

B

直接拿了页表里页 2 那一行的"页框号 20H"拼上偏移,没看存在位。页 2 的存在位是 0——这说明页 2不在内存,那个 20H 是历史值(也许是上次被换出前的位置),现在不能用。访问页 2 会触发缺页,物理地址里出现的是换入后实际所在页框号,不会是 20H。

D

注意到要发生缺页置换、用了改进型 Clock 算法,但替换对象判反了——把"M=1 的页 4"当成了被替换的对象。改进型 Clock 的核心理念恰恰是优先保留 M=1 的页(脏页换出代价高,要写回磁盘),所以应该先替换 M=0 的页 3,让脏页 4 多留一会儿。把 M 的方向想反就会得到 D。

总解析

整体流程:地址拆分 → 查页表 → 触发缺页 → 改进型 Clock 选受害者 → 拼物理地址

第 1 步:拆分虚拟地址

页大小 4KB = B → 页内偏移 12 位(3 位十六进制)。

虚拟地址 02A01H 拆分:

1912页号8 bits02H110页内偏移12 bitsA01H

→ 页号 2,偏移 A01H

第 2 步:查页表

页 2 行:存在位 = 0 → 页 2 不在内存 → 触发缺页中断。

第 3 步:选受害者(改进型 Clock)

P 只分到 2 个页框,当前住着的是页 3(框 60H)和页 4(框 80H)。两页的 (访问位 A, 修改位 M):

AM类别
360H10(1, 0)
480H11(1, 1)

改进型 Clock 把 (A, M) 分四类,替换优先级从高到低

类别含义替换代价
(0, 0)未访问、未修改最低(直接丢)
(0, 1)未访问、已修改较低(要写回)
(1, 0)近期访问、未修改较高
(1, 1)近期访问、已修改最高(最不该替换)

算法分轮扫描,第一轮找 (0,0) 不动位;第二轮找 (0,1) 沿途清 A 位,没找到就回到第一轮重做:

找的类别走查状态变化
第 1 轮(0, 0)页 3 (1,0) ✗、页 4 (1,1) ✗不动
第 2 轮(0, 1),沿途清 A页 3 不匹配 (0,1),清 A → (0,0);页 4 不匹配 (0,1),清 A → (0,1)页 3 (1,0)→(0,0);页 4 (1,1)→(0,1)
第 3 轮等价回到第 1 轮 找 (0, 0)页 3 (0,0) ✓ 匹配替换页 3

替换页 3 → 页 2 调入页框 60H

第 4 步:拼物理地址

最终答案是 C

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数