返回介绍

原理: 分页内存管理

发布于 2025-02-16 22:47:47 字数 1028 浏览 0 评论 0 收藏 0

在分页内存管理中,一方面把实际物理内存(也称主存)划分为许多个固定大小的内存块,称为物理页面,或者是页框(page frame);另一方面又把 CPU(包括程序员)看到的虚拟地址空间也划分为大小相同的块,称为虚拟页面,或者简称为页面、页(page)。页面的大小要求是 2 的整数次幂,一般在 256 个字节到 4M 字节之间。在本书中,页面的大小设定为 4KB。在 32 位的 86x86 中,虚拟地址空间是 4GB,物理地址空间也也是 4GB,因此在理论上程序可访问到 1M 个虚拟页面和 1M 个物理页面。软件的每一物理页面都可以放置在主存中的任何地方,分页系统(需要 CPU 等硬件系统提供相应的分页机制硬件支持,详见下一节)提供了程序中使用的虚地址和主存中的物理地址之间的动态映射。这样当程序访问一个虚拟地址时,支持分页机制的相关硬件自动把 CPU 访问的虚拟地址虚拟地址拆分为页号(可能有多级页号)和页内偏移量,再把页号映射为页帧号,最后加上页内偏移组成一个物理地址,这样最终完成对这个地址的读/写/执行等操作。

假设程序在运行时要去读地址 0x100 的内容到寄存器 1(用 REG1 表示)中,执行如下的指令:

mov 0x100, REG1

虚拟地址 0x100 被发送给 CPU 内部的内存管理单元(MMU),然后 MMU 通过支持分页机制的相关硬件逻辑就会把这个虚拟地址是位于第 0 个虚拟页面当中(设页大小为 4KB),页内偏移是 0x100;而操作系统的分页管理子系统已经设置好第 0 个虚拟页面对应的是第 2 个物理页帧,物理页帧的起始地址是 0x2000,然后再加上页内的偏移地址 0x100,所以最后得到的物理地址就是 0x2100。然后 MMU 就会把这个真正的物理地址发送到计算机系统中的地址总线上,从而可正确访问相应的物理内存单元。

如果操作系统的分页管理子系统没有设置第 0 个虚拟页面对应的物理页帧,则表示第 0 个虚拟页面当前没有对应的物理页帧,这会导致 CPU 产生一个缺页异常,由操作系统的缺页处理服务例程来选择如何处理。如果缺页处理服务例程认为这是一次非法访问,它将报错,终止软件运行;如果它认为是一次合理的访问,则它会采用分配物理页等手段建立正确的页映射,使得能够重新正确执行产生异常的访存指令。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文