虚拟内存让每个进程看到独立连续的地址空间,实际物理页可以分散、共享或暂未分配。地址由虚拟页号和页内偏移组成,页表把页号翻译成物理页框,偏移保持不变,并同时检查读写执行权限。

多级页表只为使用到的地址范围分配下级结构,节省稀疏空间;TLB 缓存近期页表项,命中时避免多次内存访问。上下文切换可能影响 TLB,但地址空间标识等机制可减少完全刷新。

当页表项不在内存时产生缺页异常。内核先判断地址是否合法:若合法,可分配零页、从映射文件读取,或从 Swap 换入;必要时选择受害页,脏页先写回,再更新页表和 TLB,最后重新执行原指令。轻微缺页不需磁盘,重大缺页通常涉及 I/O,代价差异很大。

页面置换希望保留近期仍会访问的工作集。理想 LRU 难以精确实现,系统常用访问位与近似链表。若活跃工作集持续超过物理内存,频繁换页形成抖动,此时增加 Swap 只会延缓失败,未必改善吞吐。

页大小影响页表、TLB 覆盖和内部碎片;大页可减少 TLB 压力,但分配回收更粗。误区是认为虚拟内存等于 Swap、每次地址转换都查磁盘、缺页必然异常退出,以及进程地址空间大小等于驻留内存。小结:虚拟内存的价值是隔离、保护和按需映射,性能关键在 TLB 命中与工作集是否容纳。