虚拟内存
虚拟内存为进程提供独立的地址空间,通过地址转换把虚拟页映射到物理页框。它同时服务于隔离、权限、共享与按需分配,磁盘交换只是可选的一部分机制。
1. 面试核心
先记住这几条,再读正文- 虚拟地址经页表映射到物理地址,TLB 缓存部分地址转换结果。
- TLB 未命中不等于缺页,缺页也不一定读取磁盘。
- 申请了虚拟地址范围,不代表相同数量的物理页已经驻留。
2. 地址转换路径
把地址分成虚拟页号和页内偏移,页表提供对应物理页框及权限信息,页内偏移保持不变。TLB 命中可直接获得缓存的转换;未命中时需要查页表,具体由硬件或操作系统机制处理。
不同进程可以把同一虚拟地址映射到不同物理页。多个地址也可以有意共享物理页,例如共享内存和只读代码映射。访问权限由页表等机制约束,不是只靠不同地址数值实现隔离。
3. 缺页与按需分配
页尚未建立所需映射或访问触发某类保护异常时,CPU 进入异常处理。内核根据映射信息决定分配零页、执行写时复制、读取文件或交换区,或者因非法访问终止进程。
第一次写入新申请的匿名内存可能触发按需分配,不必从磁盘读取已有内容;访问文件映射缺失的数据页则可能需要 I/O。写时复制允许多个映射先共享页,真正写入时再分配并复制。
4. 使用边界
观察进程内存时,需要区分虚拟地址大小、驻留内存和共享页。虚拟空间很大不必然表示内存泄漏;驻留增长也可能来自正常工作集或页缓存。
当工作集超过可用物理内存时,反复换入换出可能导致抖动,使延迟明显升高。增加虚拟地址空间无法替代物理内存和合理的资源限制。具体页表层级、巨大页和 NUMA 可在目标岗位涉及性能时深入。
5 · 面试题卡片
先想答案,再翻面题目来自公开面经。点任意一张进入翻卡,可左右切换,看完回到这里。
逐张翻看 1 张 →5.1 虚拟内存有什么作用,缺页一定意味着从磁盘读取吗?
出现公司:字节跳动
考察重点:地址空间、地址转换缓存与不同类型缺页的处理。
参考回答
虚拟内存把进程地址空间与物理内存分离,支持隔离、权限控制、共享和按需分配。缺页后的处理取决于映射类型:可能只是分配零页或写时复制,也可能需要从文件或交换区读取;非法访问则不能靠补页继续。TLB 未命中只说明转换缓存没有结果,不等同于缺页。