标准答案

  1. 进程使用虚拟地址,内核和硬件通过多级页表完成到物理地址的转换,并用权限位控制读写和执行。
  2. 页面可以映射到匿名内存、文件或共享内存;访问不存在的映射会产生缺页异常。
  3. 缺页可能是正常的按需分配或文件加载,也可能因为非法地址、权限不符而变成 SIGSEGV。
  4. 性能排查要区分 minor fault 和 major fault,后者通常涉及磁盘 I/O,不能把所有缺页都当作错误。

题目解析

虚拟地址通过页表映射到物理页,TLB 缓存近期的地址转换结果;访问不在当前映射或权限不匹配的页面时会触发缺页异常。缺页可能是首次分配、写时复制、文件映射或真正需要从 swap/文件读入,不能仅凭“发生缺页”推断磁盘 I/O。

大页可以用更少的 TLB 项覆盖更大的地址范围,适合某些连续、大容量访问,但会增加分配粒度、碎片和回收复杂度。排查内存问题时还要区分匿名页、文件页、共享页和页面权限;读写执行权限错误可能直接导致 SIGSEGV,而不是内存不足。

常见误区

  • 误区:把虚拟内存等同于 swap。改正:虚拟内存是地址抽象,swap 只是部分页面的后备存储。
  • 误区:看到缺页就认定发生磁盘读。改正:区分 minor fault、文件映射、写时复制和 major fault。
  • 误区:只看映射是否存在。改正:同时检查读写执行权限、写时复制和访问地址是否合法。

作者信息