虚拟地址和物理地址

虚拟地址和物理地址

每一个进程都有自己的虚拟地址

虚拟地址通过页表来映射物理地址

页大小(212=4KB)

位段 名称 位数 含义
[47–39] PML4 索引 9 页表第 4 级索引
[38–30] PDPT 索引 9 页表第 3 级索引
[29–21] PD 索引 9 页表第 2 级索引
[20–12] PT 索引 9 页表第 1 级索引
[11–0] 页内偏移 12 页内字节偏移

具体流程:

当 CPU 访问一个虚拟地址(VA)时:

1 取出页表基址寄存器 CR3(指向当前进程页表的根——PML4 表的物理地址)
2 按上表分解虚拟地址成四个索引(PML4, PDPT, PD, PT)
3逐级查表

  • 从 CR3 指向的物理地址(PML4)中找到 PML4 索引对应的项,得到下一层(PDPT)的物理地址;
  • 在 PDPT 中查 PDPT 索引 → 得 PD;
  • 在 PD 中查 PD 索引 → 得 PT;
  • 在 PT 中查 PT 索引 → 得最终物理页框号(frame number)。
    4 组合
  • 把物理页框号 左移 12 位 加上页内偏移,即物理地址。
    5放入 TLB 缓存,以后访问相同页不必再查页表。

具体流程图如下:

CPU发出VA


查TLB —— 命中? ───────► 直接得到PA
│Miss

MMU读取页表(从CR3开始逐级查)


找到物理页帧号 + 偏移


组合成PA ——> 访问内存或Cache

页表项的高速缓存TLB:让 VA→PA 的过程不必每次都走多级页表。