Skip to content

2019年 408 操作系统 第 31 题

操作系统2019年选择题2分

题目

某计算机主存按字节编址,采用二级分页存储管理,地址结构如下所示:

页目录号(10 位)页号(10 位)页内偏移(12 位)

虚拟地址 20501225H 对应的页目录号、页号分别是( )。

错因

B

页目录号算对了(081H),但页号算错。可能是把"中间 10 位"按十六进制简单切——直接拿 2050 1225H 中"5012"附近某 10 位的低位算成 401H,没意识到 10 位不是 4 位的整数倍,必须先转二进制再切。

C

把"页目录号 10 位"误按"前 12 位 ÷ 4 = 前 3 位十六进制"切——直接取 205H 当页目录号、再凑出页号。这是把 16 进制和 10 位的位数关系混了:每 4 位二进制对应 1 位十六进制,10 位横跨 2.5 个十六进制数字,不能整切。

D

页目录号、页号双错,多半是按 12 位 + 12 位 + 12 位(每段 3 位十六进制数字)这种"看着整齐"的切法做的——但题面明确是 [10][10][12],不能凑成方便切的整数倍。

总解析

地址结构 [页目录号 10 位][页号 10 位][偏移 12 位] = 32 位。关键点:10 位不是 4 的倍数,必须先把整个虚拟地址展开成二进制再切

第 1 步:32 位虚拟地址 → 二进制

20501225H 每位十六进制展开 4 位二进制:

3122页目录号10 bits081H2112页号10 bits101H110偏移12 bits225H

二进制布局:

16进制20501225
4 位二进制00100000010100000001001000100101

连起来 32 位:0010 0000 0101 0000 0001 0010 0010 0101

第 2 步:按 [10][10][12] 切

字段二进制位段二进制十六进制
页目录号(高 10 位)bit[31:22]00 1000 0001081H
页号(中 10 位)bit[21:12]01 0000 0001101H
页内偏移(低 12 位)bit[11:0]0010 0010 0101225H

验证算法(不展开二进制时的捷径):

  • 页内偏移 = 低 12 位 = 后 3 位十六进制 =
  • 剩余高 20 位 =
  • (即 )除:
  • 因此页目录号 = (即 )✓,页号 =

最终答案是 A

最后更新:

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

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