进程P有8个页面,页号分别为0~7,页面大小为4K ,假设系统给进程P分配了4个存储块,进程P的页面变换表如下所示。表中状态位等于1和0分别表示页面在内存和不在内存。若进程P要访问的逻辑地址为十六进制 5148H,则该地址经过变换后, 其物理地址应为十六进制 (问题1) ;如果进程P要访问的页面6不在内存,那么应该淘汰页号为 (问题2) 的页面。

在分页及段页式存储管理机制中,若页面大小为2的整数次幂,逻辑地址可按位拆分,高位部分为页号,低部位数与页大小的二进制位数一致的部分为页内偏移;物理地址通过页表映射得到,计算方式为对应页帧号乘以页面大小后加上页内偏移。进行页面置换时,通常优先选择最近未被访问(访问位为0)的页面淘汰,若多个页面访问状态相同,则优先淘汰未修改(修改位为0)的页面——这是因为已修改页面淘汰前需写回外存,会额外增加系统开销;这类结合访问位与修改位的置换逻辑,是Clock等高效置换算法的核心思路,能在保证内存利用率的同时降低置换的系统消耗。
本题考察的是段页式地址变换与页面置换策略。
问题 1:逻辑地址转换为物理地址
页面大小为 4KB,即 2^12 字节,因此逻辑地址低 12 位为页内偏移,高位为页号。
逻辑地址:5148H = 0101 0001 0100 1000B
高位(页号)为:5H
页内偏移地址:148H
查页面变换表,页号 5 在内存中,对应页帧号为 3。
物理地址 = 页帧号 × 页大小 + 页内地址 = 3 × 1000H + 148H = 3148H
所以第一空选择 A. 3148H
问题 2:页面置换选择
当前在内存的页面有:页号 1、2、5、7(状态位为 1)。
如果访问页面 6,需要置换一个已有页面。
根据页面置换策略,一般先淘汰:
- 最近未被访问的页面(访问位为 0)
- 若访问位相同,则淘汰未修改的页面(修改位为 0)。因为修改了的页面你要把它腾退,需要把它写回到硬盘上,多一步步骤。
对比在内存的页面: - 页号 1:访问位 1,修改位 0
- 页号 2:访问位 0,修改位 1
- 页号 5:访问位 1,修改位 1
- 页号 7:访问位 1,修改位 0
只有页号 2 的访问位为 0,说明最近没有被访问,应当被淘汰。
所以第二空选择 B. 2
