页表如何存储在主内存中?

时间:2014-06-20 07:30:38

标签: virtual-memory

我知道页面表存储在内存中,每个进程都有自己的表,但是每个表都有条目作为虚拟内存中虚拟页面的数量,所以每个进程如何有一个表,每个表都驻留在主内存中此外,每个表中的条目数量大于主存储器中的物理页面数量......有人可以解释一下,我很困惑, 在此先感谢。

1 个答案:

答案 0 :(得分:8)

通常,页表被称为存储在内核拥有的物理内存中。但是,由于每个进程都有自己的页表(除非操作系统使用反向分页方案),因此页表可能会变得非常大。对于具有典型4KB页面大小的32位地址空间,我们将需要20位虚拟页面编号和12位偏移。 20位VPN(虚拟页码)意味着将有2 ^ 20个翻译。即使每个转换,即Page Table条目需要4个字节的内存,它也相当于4x(2 ^ 20)= 4MB的内存,所有这些只是地址转换,这很糟糕。

因此,现代操作系统将这样大的页表放在虚拟内核内存(即硬盘)中,并在需要时将它们交换到物理内存。因此,页面表的虚拟化方式与每个页面虚拟化的方式相同。

我建议你阅读这本精彩而简单的书籍,以便清楚了解内存虚拟化和分页相关概念: http://pages.cs.wisc.edu/~remzi/OSTEP