跳到主要内容
约 2 分钟1 张卡

虚拟内存

虚拟内存为进程提供独立的地址空间,通过地址转换把虚拟页映射到物理页框。它同时服务于隔离、权限、共享与按需分配,磁盘交换只是可选的一部分机制。

1. 面试核心​

先记住这几条,再读正文
  • 虚拟地址经页表映射到物理地址,TLB 缓存部分地址转换结果。
  • TLB 未命中不等于缺页,缺页也不一定读取磁盘。
  • 申请了虚拟地址范围,不代表相同数量的物理页已经驻留。

2. 地址转换路径​

把地址分成虚拟页号和页内偏移,页表提供对应物理页框及权限信息,页内偏移保持不变。TLB 命中可直接获得缓存的转换;未命中时需要查页表,具体由硬件或操作系统机制处理。

不同进程可以把同一虚拟地址映射到不同物理页。多个地址也可以有意共享物理页,例如共享内存和只读代码映射。访问权限由页表等机制约束,不是只靠不同地址数值实现隔离。

3. 缺页与按需分配​

页尚未建立所需映射或访问触发某类保护异常时,CPU 进入异常处理。内核根据映射信息决定分配零页、执行写时复制、读取文件或交换区,或者因非法访问终止进程。

第一次写入新申请的匿名内存可能触发按需分配,不必从磁盘读取已有内容;访问文件映射缺失的数据页则可能需要 I/O。写时复制允许多个映射先共享页,真正写入时再分配并复制。

4. 使用边界​

观察进程内存时,需要区分虚拟地址大小、驻留内存和共享页。虚拟空间很大不必然表示内存泄漏;驻留增长也可能来自正常工作集或页缓存。

当工作集超过可用物理内存时,反复换入换出可能导致抖动,使延迟明显升高。增加虚拟地址空间无法替代物理内存和合理的资源限制。具体页表层级、巨大页和 NUMA 可在目标岗位涉及性能时深入。

5 · 面试题卡片​

先想答案,再翻面题目来自公开面经。点任意一张进入翻卡,可左右切换,看完回到这里。
逐张翻看 1 张 →

5.1 虚拟内存有什么作用,缺页一定意味着从磁盘读取吗?​

出现公司:字节跳动

考察重点:地址空间、地址转换缓存与不同类型缺页的处理。

相关内容:面试核心、地址转换路径、使用边界。

参考回答

虚拟内存把进程地址空间与物理内存分离,支持隔离、权限控制、共享和按需分配。缺页后的处理取决于映射类型:可能只是分配零页或写时复制,也可能需要从文件或交换区读取;非法访问则不能靠补页继续。TLB 未命中只说明转换缓存没有结果,不等同于缺页。

6. 参考资料​