计算机内存分页与缓存机制详解
1. 硬件分页基础
在硬件分页中,页表中间 10 位(即 Table 字段)的值范围是从 0 到 0x03f(十进制 0 到 63),这意味着页表中只有前 64 个条目是有效的,其余 960 个条目填充为零。
假设一个进程需要读取线性地址 0x20021406 处的字节,分页单元会按以下步骤处理:
1. 使用 Directory 字段 0x80 选择页目录中的条目 0x80,该条目指向与进程页面相关的页表。
2. 使用 Table 字段 0x21 选择页表中的条目 0x21,该条目指向包含所需页面的页框。
3. 最后,使用 Offset 字段 0x406 选择所需页框中偏移量为 0x406 处的字节。
如果页表中条目 0x21 的 Present 标志被清除,则表示该页面不在主内存中,此时分页单元在转换线性地址时会发出页面错误异常。当进程尝试访问 0x20000000 到 0x2003ffff 范围之外的线性地址时,也会发出相同的异常,因为未分配给该进程的页表条目都填充为零,它们的 Present 标志也都被清除。
2. 物理地址扩展(PAE)分页机制
处理器支持的 RAM 数量受连接到地址总线的地址引脚数量限制。早期从 80386 到奔腾的英特尔处理器使用 32 位物理地址,理论上此类系统最多可安装 4GB 的 RAM,但实际上由于用户模式进程的线性地址空间需求,内核不能直接寻址超过 1GB 的 RAM。
然而,需要同时运行成百上千个进程的大型服务器需要超过 4GB 的 RAM,这促使英特尔将处理器的地址引脚数量从 32 增加到 36。从奔腾 Pro 开始
超级会员免费看
订阅专栏 解锁全文
7397

被折叠的 条评论
为什么被折叠?



