页面table的虚拟地址是如何转换成它的实际物理地址的?

How is the virtual address of the page table is converted to its actual physical address?

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

不是,cr3 有页面table 的物理地址,不是虚拟地址。如果cr3包含table页的虚拟地址,就会陷入逻辑死循环,无法找到table.

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

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

  • 页长为页框长度

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

see to the link