操作系统:4KB页面大小下计算十进制地址21235的页号与页偏移量
分页地址转换逻辑说明
- 分页存储的核心逻辑是把整个地址空间按固定大小的页拆分,任意地址都可以拆分为页号(标识该地址属于第几个页)和页内偏移量(标识该地址在对应页中的位置)两个部分。
- 本次计算的页大小为4KB,换算为字节数为
4 * 2^10 = 4096 B
你提供的原始计算逻辑刚好把两个参数的计算式写反了,正确的计算规则如下:
- 页号 = 十进制地址 整除 页大小(仅取整数部分,舍弃小数)
- 页内偏移量 = 十进制地址 对页大小取余
实际计算验证
- 计算页号:
21235 / 4096 = 5
前5页(编号0到4)的总地址覆盖范围是0 ~ (5*4096 -1) = 0~20479,21235大于20479,因此属于第5页,和计算结果一致。 - 计算页内偏移量:
21235 % 4096 = 755
等价于运算21235 - 5*4096 = 21235 -20480 = 755,即该地址是第5页的第755个字节位置,结果正确。
原理说明
- 整除操作的本质是统计目标地址之前能放下多少个完整的页,得到的整数就是页的编号
- 取余操作的本质是扣除所有完整页占用的地址长度后,剩下的地址长度就是该地址在当前页里的相对位置,也就是页内偏移量
内容的提问来源于stack exchange,提问作者Cosmos Lee
相关产品推荐
相关产品推荐

