如何将页表的虚拟地址转换为其实际物理地址?

时间:2015-03-12 15:07:47

标签: memory-management linux-kernel paging

如果在OS中启用了分页,则使用页表将虚拟地址映射到实际的物理地址。更具体地说,考虑X86上的Linux 32位操作系统,cr3寄存器具有页表目录的起始地址。我想这是一个虚拟地址。 CPU如何将此虚拟地址映射到RAM上的页表目录的物理地址。 哪个页面表将用于此地址转换?

2 个答案:

答案 0 :(得分:4)

不,cr3具有页表的物理地址,而不是虚拟地址。如果cr3包含页表的虚拟地址,那么您将陷入逻辑死循环,无法找到页表。

答案 1 :(得分:0)

寻呼单元将线性地址转换为物理地址。 一组线性地址被组合在一起以形成页面。这些线性地址本质上是连续的 - 寻呼单元将这些连续存储器集映射到称为页帧的相应的连续物理地址集。请注意,寻呼单元分为固定大小的RAM页帧。因此,分页具有以下优点:

  • 为页面定义的权限对于形成页面的一组线性地址有效

  • 页面长度是页面框架的长度

将这些页面映射到页面框架的数据结构,称为页面表。这些页表存储在主存储器中,并在解析模块管理页面之前初始化内核。

see to the link