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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将页表的虚拟地址转换为其实际物理地址?相关的知识,希望对你有一定的参考价值。

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

答案

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

另一答案

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

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

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

see to the link

以上是关于如何将页表的虚拟地址转换为其实际物理地址?的主要内容,如果未能解决你的问题,请参考以下文章

虚拟地址转换为物理地址

操作系统的虚拟页面地址转换何时发生?

学习ARM64页表转换流程

学习ARM64页表转换流程

学习ARM64页表转换流程

什么是TLB?