9.6.3 多级页表

目录

P571

根据您的描述,我们来详细计算一下为什么在32位地址空间、4KB页面和4字节PTE的情况下,页表大小是4MB。

计算过程:

  1. 虚拟地址空间大小:32位地址空间意味着有 (2^{32}) 个虚拟地址。
  2. 页面大小:4KB,即 (2^{12}) 字节。
  3. 页面数量:虚拟地址空间中的页面数量为 (2^{32} / 2^{12} = 2^{20}) 个页面。这是因为每个页面覆盖4KB的地址范围,所以 (2^{32} / 2^{12} = 2^{20} = 1,048,576) 个页面。
  4. PTE大小:每个页表条目(PTE)为4字节。
  5. 页表总大小:页面数量乘以PTE大小,即 (2^{20} \times 4) 字节 = (4,194,304) 字节。
  6. 转换为MB:(4,194,304) 字节 ÷ (1024 \times 1024) (即除以 (2^{20})) = 4 MB。

P573

对最后一段,我的理解是:这里最后一段说TLB缓存不同层次的页表的PTE,那么假设有k个页表,虚拟地址的VPN会被划分为k段,那么每一段在查询对应页表的PTE的时候都会先询问TLB;如果TLB未命中触发了缺页异常处理程序,那么在异常处理程序结束后,就会会重新执行指令,于是就必须从1级页表开始重新进行查询,从而导致很大的开销
但是deepseek一直说TLB不会缓存中间级别的页表的PTE,只会直接存储VPN与PPN之间的映射

posted @ 2025-08-22 10:01  最爱丁珰  阅读(36)  评论(0)    收藏  举报