页面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 存储在主内存中,内核在模块管理页面解析之前被初始化。
如果在OS中启用分页,则使用一个页面table将虚拟地址映射到实际物理地址。更具体地说,考虑X86上的Linux 32位OS,cr3寄存器具有页面table目录的起始地址。我想这是一个虚拟地址。 CPU 如何将此虚拟地址映射到 RAM 上页面 table 目录的物理地址。 哪个页面 table 将用于此地址转换?
不是,cr3 有页面table 的物理地址,不是虚拟地址。如果cr3包含table页的虚拟地址,就会陷入逻辑死循环,无法找到table.
页分页单元将线性地址转换为物理地址。 一组线性地址组合在一起形成一个页面。这些线性地址本质上是连续的——分页单元将这些连续内存集映射到相应的一组连续物理地址,称为页框。请注意,分页单元被分成固定大小的 RAM 页框。为此,分页有以下优点:
为页面定义的权限将对组成页面的一组线性地址有效
页长为页框长度
将这些页面映射到页框的数据结构,称为页面 table。这些页面 table 存储在主内存中,内核在模块管理页面解析之前被初始化。