极小内存总页数极少场景下的系统页表大小计算问题
结论
你的计算存在两处核心错误,「页表占满全部内存」的结论不成立。
具体问题说明
- 第一,单位换算的前提是主观假设的,没有依据:你直接按
1 word = 4 Bytes把512words主存换算为2KB,但题目没有给出任何字长相关的定义,这个换算结果本身就不可靠。 - 第二,页表大小的计算完全脱离了场景的实际硬件约束:
- 你假设单个页表项大小为4Bytes同样没有依据。按你给出的参数,单页大小为128Bytes,如果主存按你假设的2KB计算,总共只有16个物理页帧,物理页帧号只需要4位就能全覆盖,再加上存在位、读写权限位、脏位这类必要的控制位,单个页表项长度1~2Bytes完全够用,根本不需要4Bytes。
- 你默认要在内存中存放全部512个虚拟页对应的页表项,这是虚拟、物理内存容量差距不大的场景下才会用的单级扁平页表思路。你给出的场景里虚拟地址空间总大小是64KB,物理内存才2KB量级,差了32倍,根本不会用这种浪费空间的全量单级页表:要么用多级页表按需建表,只给当前实际加载到内存的虚拟页分配页表项;要么用反向页表,只按物理页帧的数量存储表项——16个物理页帧就算每个表项占2Bytes,总共才32Bytes,内存占比可以忽略。
就算退一万步,你硬要在这个场景下塞全量单级页表,按页表项1Byte计算,512个表项总共才512Bytes,也只占你假设的2KB主存的四分之一,完全不可能占满整个内存。
内容的提问来源于stack exchange,提问作者Alireza Bayat Khani
相关产品推荐
相关产品推荐

