我正在通过分页机制,这个问题让我很困惑,问题是 PAGE TABLE 包含页面条目。进程分为页面。假设 1 个进程包含 8 个页面,RAM 中共有 10 个进程。所以页表将包含单个进程的总共 8 个页表条目或所有进程的 10*8 页条目?
请解释一下,这个问题在任何教科书中都没有明确提到。
提前致谢。
我正在通过分页机制,这个问题让我很困惑,问题是 PAGE TABLE 包含页面条目。进程分为页面。假设 1 个进程包含 8 个页面,RAM 中共有 10 个进程。所以页表将包含单个进程的总共 8 个页表条目或所有进程的 10*8 页条目?
请解释一下,这个问题在任何教科书中都没有明确提到。
提前致谢。
每个进程都有自己的页表。由于每个进程具有相同的地址空间,因此将一个虚拟地址映射到不同的物理地址是不可行的。在x86架构中,每次上下文切换时都会设置页目录基址寄存器(cr3),以便处理器可以将当前运行进程的虚拟地址转换为物理地址。
实际上,我还没有完全理解你的问题。在一般情况下,没有固定规则将进程分为 8 页左右。但是,该过程以字节为单位划分为页面。页面大小可以是 4 KB 或 4 MB(在某些情况下,需要在页表中设置一个位以启用 4 MB 页面大小)。那么在分页之后还有一个概念单级分页或多级分页。
在单级分页的情况下,页表将包含与可以在虚拟内存中分配的页数相同数量的页表条目。
在多级分页中,一个页表根据每个页表可以分配的字节大小进一步划分为多个页表。
对于分页的进一步阅读,您可以参考此链接