软件设计师 · 高频练习

分页存储中,逻辑地址的页号和页内偏移怎么算?

中级 单选题 第 851 题 中等 软件设计师操作系统分页存储逻辑地址页号页内偏移
题目

某分页存储系统的页面大小为 4KB,逻辑地址为 0x12345。该地址对应的页号和页内偏移分别是()。

A 页号 0x123,页内偏移 0x45
B 页号 0x12,页内偏移 0x345
C 页号 0x1,页内偏移 0x2345
D 页号 0x12345,页内偏移 0
题目类型:原创高频练习题 用途:用于帮助理解软件设计师相关考点和答案解析,不等同于官方真题。
正确答案
B
答案解析

4KB=4096B=2^12B,因此逻辑地址低 12 位是页内偏移,其余高位是页号。十六进制每位表示 4 个二进制位,低 12 位正好是末尾 3 个十六进制数字 345,所以页内偏移为 0x345,剩余高位 0x12 是页号。

选项分析

A

错误。该拆法只给偏移保留了 8 位,相当于页面大小 256B。

B

正确。4KB 页面需要 12 位偏移,即 3 个十六进制数位,得到页号 0x12、偏移 0x345。

C

错误。给偏移保留 16 位相当于页面大小 64KB。

D

错误。只有地址恰好位于页首时偏移才为 0,本地址末 12 位并非全 0。

本题为什么容易错

最容易错在 KB 与位数的换算:4KB 不是 2^4,也不是十进制 4000。存储管理题通常按 1KB=1024B 计算,因此 4KB=2^12B。

先看结论

简短答案

分页存储中,逻辑地址的页号和页内偏移怎么算,正确答案是 B(页号 0x12,页内偏移 0x345)。4KB=4096B=2^12B,因此逻辑地址低 12 位是页内偏移,其余高位是页号。十六进制每位表示 4 个二进制位,低 12 位正好是末尾 3 个十六进制数字 345,所以页内偏移为 0x345,剩余高位 0x12 是页号。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
页号 0x123,页内偏移 0x45 本题干扰项 错误。该拆法只给偏移保留了 8 位,相当于页面大小 256B。 看到该词不要急着选,先判断是否真正解决题干问题
页号 0x12,页内偏移 0x345 本题正确答案 正确。4KB 页面需要 12 位偏移,即 3 个十六进制数位,得到页号 0x12、偏移 0x345。 看到题干核心场景时优先联想到它
页号 0x1,页内偏移 0x2345 本题干扰项 错误。给偏移保留 16 位相当于页面大小 64KB。 看到该词不要急着选,先判断是否真正解决题干问题
页号 0x12345,页内偏移 0 本题干扰项 错误。只有地址恰好位于页首时偏移才为 0,本地址末 12 位并非全 0。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 页号 0x123,页内偏移 0x45:错误。该拆法只给偏移保留了 8 位,相当于页面大小 256B。
  • 页号 0x1,页内偏移 0x2345:错误。给偏移保留 16 位相当于页面大小 64KB。
  • 页号 0x12345,页内偏移 0:错误。只有地址恰好位于页首时偏移才为 0,本地址末 12 位并非全 0。
复习

知识点详解

分页系统把逻辑地址分成页号和页内偏移。页号用于查询页表,获得页框号及有效位、访问权限等信息;页内偏移在地址转换过程中保持不变。若页面大小是 2^n 字节,偏移字段固定为 n 位。得到页框号后,物理地址可按“页框号×页面大小+页内偏移”计算。

备考速记

页面多大先化成 2 的幂,低几位由指数决定。

页内偏移在页内偏移场景中的作用

页内偏移在本题中的核心价值,是解决“某分页存储系统的页面大小为 4KB,逻辑地址为 0x12345。该地址对应的页号和页内偏移分别是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 给定页面大小和逻辑地址,求页号与页内偏移。
  • 给出页表中的页框号,进一步拼接或计算物理地址。
  • 判断某逻辑地址是否越界或对应页面是否在内存。
页内偏移在软件设计师软考中的考法

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

解题思路

这题先别把 0x12345 转成十进制。4KB 是 2^12,而一个十六进制数位正好 4 位二进制,所以从右边切 3 个十六进制数位:345 留在页内,左边的 12 就是页号。这样算得更快,也更不容易在除法里出错。

考点定位

页面大小为 2^n 字节时,逻辑地址低 n 位为页内偏移,高位为页号;也可用页号=floor(地址/页面大小)、偏移=地址 mod 页面大小计算。

易错提醒

  • 把页面大小 4KB 误认为偏移只需要 4 位。
  • 十六进制拆分时忘记每一位等于 4 个二进制位。
  • 把页号和页框号混为一谈;逻辑地址先给出页号,查页表后才得到页框号。

备考提示

  • 遇到 1KB、2KB、4KB、8KB 页面,先分别写成 2^10、2^11、2^12、2^13。
  • 十六进制地址在偏移位数为 4 的倍数时可以直接按数位切分,否则再转二进制。

你可能还想了解

  • 4KB 页面为什么需要 12 位页内偏移?
  • 页号和页框号有什么区别?
  • 怎样由页框号计算物理地址?
  • 页面大小不是十六进制整位时怎样拆地址?

本文小结

4KB=2^12B,逻辑地址低12位是页内偏移。0x12345 的末3个十六进制数位对应12位,所以偏移为0x345,剩余高位0x12为页号。