32位x86线性地址空间分页分段比特位划分计算问题
32位线性地址分段拆分逻辑推导
前置参数计算
- 单个页表项(PTE)大小计算:
物理内存容量为244B,页大小为212B,因此物理页帧总数为2^44 / 2^12 = 2^32,页帧号(PFN)需要32位(即4字节)存储空间,符合题干「PTE仅存储页帧号」的要求。 - 单页可存储的PTE数量:
单页大小为4KB=2^12B,因此单页最多可存储的PTE数量为2^12B / 4B = 2^10 = 1024个,索引1024个条目需要10位地址。
20位虚页号拆分逻辑
题干要求内层页表大小等于单页大小,因此:
- 内层页表最多包含1024个PTE,需要10位Inner Table索引来定位到内层页表中对应的PTE。
- 外层页目录(DIR)本身也按单页大小存储,最多可存储1024个指向内层页表的PTE,因此需要10位DIR索引来定位到对应的内层页表。
- 两段索引总长度为10+10=20位,刚好匹配32位地址扣除12位页内偏移后的剩余长度,最终分段为:
10位DIR | 10位Inner Table | 12位页内偏移。
内容的提问来源于stack exchange,提问作者Asurii
相关产品推荐
相关产品推荐

