软件设计师 · 高频练习

32 位虚拟地址、4KB 页面时,10-10-12 地址结构怎么理解?

中级 单选题 第 906 题 中等 软件设计师二级页表虚拟地址页内偏移操作系统
题目

某系统采用 32 位虚拟地址、4KB 页面和二级页表。一级页号与二级页号各占 10 位,则虚拟地址的正确划分是()。

A 一级页号 10 位、二级页号 12 位、页内偏移 10 位
B 一级页号 12 位、二级页号 10 位、页内偏移 10 位
C 一级页号 10 位、二级页号 10 位、页内偏移 12 位
D 一级页号 16 位、二级页号 16 位,不需要页内偏移
题目类型:原创高频练习题 用途:用于帮助理解软件设计师相关考点和答案解析,不等同于官方真题。
正确答案
C
答案解析

页面大小为 4KB=2^12B,因此低 12 位表示页内偏移。32 位地址还剩 20 位虚拟页号,题目说明两级各占 10 位,所以划分为 10+10+12。

选项分析

A

错误。10 位偏移只能表示 1KB 页面,不符合 4KB 条件。

B

错误。把一级页号和页内偏移的位数对调了。

C

正确。10+10+12=32,且 12 位偏移恰好覆盖 4KB 页面。

D

错误。页式存储必须保留页内偏移,两级页号也不能占满全部地址。

本题为什么容易错

有些同学见到两级页表就先把 32 位平分。页表层数只切分页号,页内偏移必须先由页面大小锁定。

先看结论

简短答案

32 位虚拟地址、4KB 页面时,10-10-12 地址结构怎么理解,正确答案是 C(一级页号 10 位、二级页号 10 位、页内偏移 12 位)。页面大小为 4KB=2^12B,因此低 12 位表示页内偏移。32 位地址还剩 20 位虚拟页号,题目说明两级各占 10 位,所以划分为 10+10+12。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
一级页号 10 位、二级页号 12 位、页内偏移 10 位 本题干扰项 错误。10 位偏移只能表示 1KB 页面,不符合 4KB 条件。 看到该词不要急着选,先判断是否真正解决题干问题
一级页号 12 位、二级页号 10 位、页内偏移 10 位 本题干扰项 错误。把一级页号和页内偏移的位数对调了。 看到该词不要急着选,先判断是否真正解决题干问题
一级页号 10 位、二级页号 10 位、页内偏移 12 位 本题正确答案 正确。10+10+12=32,且 12 位偏移恰好覆盖 4KB 页面。 看到题干核心场景时优先联想到它
一级页号 16 位、二级页号 16 位,不需要页内偏移 本题干扰项 错误。页式存储必须保留页内偏移,两级页号也不能占满全部地址。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 一级页号 10 位、二级页号 12 位、页内偏移 10 位:错误。10 位偏移只能表示 1KB 页面,不符合 4KB 条件。
  • 一级页号 12 位、二级页号 10 位、页内偏移 10 位:错误。把一级页号和页内偏移的位数对调了。
  • 一级页号 16 位、二级页号 16 位,不需要页内偏移:错误。页式存储必须保留页内偏移,两级页号也不能占满全部地址。
复习

知识点详解

多级页表不减少虚拟地址空间,而是把庞大的线性页表拆开。对于稀疏地址空间,只需为实际使用的虚拟区域分配对应的下级页表。代价是页表遍历可能增加内存访问次数,因此处理器通常结合 TLB 缓存近期页表项。每个下级页表覆盖一段连续虚拟空间,未使用的区段无需创建对应页表。

备考速记

页面先定偏移,剩余才分几级页号。

操作系统在操作系统场景中的作用

操作系统在本题中的核心价值,是解决“某系统采用 32 位虚拟地址、4KB 页面和二级页表。一级页号与二级页号各占 10 位,则虚拟地址的正确划分是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 根据页面大小和地址长度拆分多级页表字段。
  • 计算单级页表过大时,多级页表按需分配节省了多少空间。
操作系统在软件设计师软考中的考法

软考选择题通常不会只考概念定义,还会把操作系统放到操作系统场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

先把“二级”放一边,第一步只看页面大小。4KB 是 4096 字节,也就是 2^12,所以地址最低 12 位永远留给页内偏移。32 位减去 12 位,还剩 20 位用来找虚拟页。题目已经把这 20 位平均拆成一级 10 位、二级 10 位,答案就是 10-10-12。

考点定位

页面大小直接决定偏移位数,与页表有几级无关;多级页表只是把虚拟页号继续分段。

易错提醒

  • 把 4KB 写成 4000B,导致无法用 2 的幂求位数。
  • 认为二级页表会增加虚拟地址总位数。
  • 混淆页表项大小和页面大小。

备考提示

  • 所有地址转换题先写页面大小等于 2 的多少次方。
  • 再检查一级索引项数、二级索引项数和页表项大小是否能装入一页。

你可能还想了解

  • 多级页表为什么能节省内存?
  • 4KB 页面为什么是 12 位偏移?
  • 二级页表和 TLB 分别解决什么问题?

本文小结

4KB等于2^12字节,因此页内偏移固定为12位;32位虚拟地址剩下20位虚拟页号,再按题意拆成一级10位和二级10位,形成10-10-12结构。