知识卡片

按硬件页粒度组织内存兼顾节省空间与访问速度

普通读书笔记卡 · 1811.c

内容

模拟32位机器理论要表示4GB地址空间,但直接分配4GB数组不现实——大多数地址根本没真实内存对应。JPC借鉴IA-32本身按4KB分页管理内存的思路,把模拟地址空间也按4KB切块,只有区域第一次被读写时才分配真实内存(延迟初始化)。未用到的地址范围不占宿主内存,切分粒度和真实硬件页大小一致,也方便实现同样的内存保护机制。

参考来源

- 位置:《架构之美》第9章《JPC:一个纯Java的x86 PC模拟程序》9.5节《把4GB放入4GB:这不起作用》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0201.xhtml) - 结论依据:原文明确"这个CPU的存储器管理单元把地址空间切成不可分的4KB块……所以,显而易见要做的事是按相同的比例分割内存……把地址空间分成4KB的块意味着地址空间不再直接存储数据。数据改为存储在原子存储器单元中",并给出延迟初始化代码示例。 - 原始内容:这个CPU的存储器管理单元把地址空间切成不可分的4KB块(众所周知的页)。所以,显而易见要做的事是按相同的比例分割内存……把地址空间分成4KB的块意味着地址空间不再直接存储数据。