TLB 与地址转换与缺页与换入换出

共 22 题
#

1. L1 ITLB/DTLB 与 L2 sTLB(unified TLB)层次关系?

A L1 分离指令/数据 TLB,L2 是统一大容量 TLB,miss 时逐级查找最终触发 page walk ✓ 正确答案
B L1 是统一的,L2 分离指令/数据
C TLB miss 直接走内存,无 L2
D L1 比 L2 容量大
#

2. TLB miss 处理,硬件 page walker vs 软件 TLB miss handler 如何选择?

A 硬件 walker 需要在软件中遍历
B 两者都陷入内核
C x86 使用软件 handler
D 硬件 walker 由 MMU 自动遍历页表,低延迟;软件 handler 陷入内核处理,灵活但慢 ✓ 正确答案
#

3. TLB(Translation Lookaside Buffer)的本质与典型容量?

A TLB 容量无限
B TLB 缓存的是数据而非地址
C TLB 是 MMU 中缓存地址转换的高速缓存,容量小(几十到几千项),覆盖不足则 miss ✓ 正确答案
D TLB 与页表无关
#

4. 为何 ARM 在 big.LITTLE 下 TLB 命中率差异?

A big 核 TLB 较大命中率高,little 核 TLB 较小命中率低,核迁移也会重置 TLB ✓ 正确答案
B 所有核 TLB 完全相同
C TLB 命中率与核类型无关
D little 核 TLB 更大
#

5. 为何 Linux x86 默认 TLB 拍平但 ARM 用 ASID?

A x86 一直用 ASID
B ARM 也全量 flush
C x86 早期无 PCID 只能全量 flush,ARM 用 ASID 给 TLB 条目打地址空间标签避免全量 flush ✓ 正确答案
D ASID 与 TLB 无关
#

6. 为何 x86 CPU 把 TLB 拍平(single-level)?

A 早期 x86 无 PCID,TLB 条目无地址空间标签,切换进程即全量 flush;PCID 后可按进程失效 ✓ 正确答案
B x86 拍平 TLB 是为了提高命中率
C x86 一直有 PCID,从不拍平
D 拍平只影响单核
#

7. 为何大页能减少 TLB miss 但不能消除?

A 大页与 TLB 无关
B 大页增加 TLB 条目数
C 大页能完全消除 miss
D 大页扩大每项覆盖范围,但 TLB 项数有限,工作集分散或超容量时仍会 miss ✓ 正确答案
#

8. Linux 中 anon 与 file 页的 reclaim 顺序?

A file 页回收必须先 swap
B 优先回收 anon 页
C 优先回收可丢弃/写回的 file 页,其次才回收需 swap 的 anon 页,由 swappiness 调节 ✓ 正确答案
D 两者回收成本相同
#

9. readahead 在 major fault 中的角色?

A major fault 不需要 readahead
B readahead 只用于 minor fault
C readahead 会降低吞吐
D major fault 时内核预读相邻页到页缓存,减少后续缺页并隐藏磁盘延迟 ✓ 正确答案
#

10. 为何 Linux OOM killer 触发时优先 kill anonymous-heavy 进程?

A 匿名页无法丢弃/写回重建、回收要 swap,kill 它们能最大释放不可回收内存 ✓ 正确答案
B anon 页最容易回收
C OOM killer 优先 kill 内核进程
D file 页比 anon 页更不可回收
#

11. 为何 PostgreSQL shared_buffers 仍可使用 swap?

A swap 不影响性能
B shared_buffers 永不换出
C 共享内存无法 swap
D shared_buffers 的共享页在内存压力下可被内核换出到 swap,导致性能下降,可用 mlock 避免 ✓ 正确答案
#

12. ASID(Address Space ID)在 TLB 中避免 flush 的角色?

A ASID 使 TLB 命中率下降
B ASID 会强制全量 flush
C ASID 与进程无关
D TLB 条目带 ASID 标签,切换进程只需换 ASID 无需 flush,保留其他进程条目 ✓ 正确答案
#

13. PCID 在 Linux 4-level page table + INVPCID 指令的角色?

A PCID 给 TLB 条目打进程标签,INVPCID 按进程选择性失效,避免全量 flush ✓ 正确答案
B PCID 强制全量 flush
C INVPCID 只能清空所有 TLB
D Linux 不使用 PCID
#

14. 为何 ASID 不足以避免 PCID(Process Context ID)需求?

A x86 的 ASID 足够,无需 PCID
B ARM 原生支持 ASID 隔离 TLB,x86 无此机制故引入 PCID 作为等价物 ✓ 正确答案
C ARM 需要 PCID 才能隔离 TLB
D ASID 与 PCID 功能完全不同
#

15. huge page TLB(如 2MB/1GB)miss 率与 4KB TLB 的关系?

A 大页 TLB 是独立更大的 TLB 硬件
B 大页 TLB 每项覆盖更大范围,同一 TLB 容量下 miss 率更低,但共享同一 TLB 硬件 ✓ 正确答案
C 大页 TLB 比 4KB 覆盖更少
D 大页不影响 TLB miss
#

16. active 与 inactive LRU 链表在 page reclaim 中的角色?

A inactive 页总是被保护
B 回收优先选 active 页
C 两个链表无区别
D 新页进 inactive,再次访问提升到 active,回收优先选 inactive 页以保护活跃页 ✓ 正确答案
#

17. page fault 异常的分类,minor/major/none 如何区分?

A major 无需磁盘 I/O
B minor 只需更新映射无需磁盘 I/O,major 需从磁盘读,none 是直接命中无 fault ✓ 正确答案
C minor 一定导致磁盘 I/O
D 三种分类与 I/O 无关
#

18. swap in(page-in)与 swap out(page-out)过程?

A swap out 不修改 PTE
B swap out 把页写盘并把 swap 位置编码进 PTE,swap in 靠缺页从磁盘读回并更新 PTE ✓ 正确答案
C swap in 是 minor fault
D swap 只在用户态发生
#

19. 为何 Linux 默认使用匿名页 swap 而非文件 swap?

A 匿名页无文件 backing 只能写 swap,文件页可丢弃/写回无需 swap ✓ 正确答案
B 文件页默认写 swap
C 匿名页可丢弃恢复
D 两者都写 swap
#

20. 为何 mmap() 后的匿名页首次访问触发 major fault(file-backed)或 minor fault(anon)?

A 两者都无需磁盘 I/O
B 匿名页首次访问是 major fault
C file-backed 首次访问是 minor fault
D 匿名页首次访问映射零页无需磁盘 I/O 是 minor fault,file-backed 首次访问需读盘是 major fault ✓ 正确答案
#

21. zRAM 在 Android 中的压缩匿名页 swap?

A zRAM 会降低可用内存
B zRAM 写的是磁盘
C zRAM 不做压缩
D zRAM 是 RAM 压缩块设备,把匿名页压缩后作为 swap,以 CPU 压缩换取内存扩展 ✓ 正确答案
#

22. 为何 swap 在 SSD 上比 HDD 上更激进可用?

A 两者 swap 代价相同
B HDD 随机访问比 SSD 快
C SSD 随机访问快、swap 代价低,可更激进使用;HDD 随机寻道慢、swap 代价大 ✓ 正确答案
D SSD 不能作为 swap