# 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