虚拟存储与缺页异常:深入理解Linux内存管理

需积分: 50 2 下载量 13 浏览量 更新于2024-07-18 收藏 2.7MB PPT 举报
"虚拟存储是操作系统内存管理的重要机制,它通过缺页中断技术来实现程序在有限内存中高效运行。本讲主要介绍了虚拟存储的概念、需求背景、以及相关的技术,如覆盖、交换和虚拟页式存储,特别是重点讨论了缺页异常的处理。虚拟存储的需求源于程序规模的快速增长,而存储器容量的发展却相对较慢。为了应对这一问题,引入了存储层次结构,包括寄存器、高速缓存、内存、磁盘和磁带,但理想的存储器应具有大容量、高速度和低成本的特性。 在实际中,操作系统通过虚拟存储抽象出地址空间,使得每个进程都有自己独立的、连续的虚拟地址空间,即使物理内存无法容纳所有虚拟内存。覆盖技术是一种早期的解决方案,它要求程序员手动管理内存,将常用功能的代码和数据常驻内存,不常用的模块仅在需要时装入。然而,这种方法需要对程序结构有深入理解,且效率不高。 交换技术则由操作系统自动执行,将暂时不用的程序或进程换出到磁盘,释放内存给其他活跃任务。虚拟存储进一步发展,采用虚拟页式存储,以页为单位动态装入和换出程序,利用局部性原理,即程序执行时倾向于集中在一部分内存中,从而提高内存利用率。 缺页异常是虚拟存储的核心机制之一,当进程尝试访问尚未加载到内存的虚拟页面时,处理器会引发缺页异常。操作系统接收到这个异常后,会根据页表找到相应的物理页,如果物理内存不足,可能需要通过页面替换算法将不常用或最近最少使用的页面换出到磁盘,然后将所需页面换入。这个过程涉及到匿名页面、KSM(Kernel Samepage Merging,内核页合并)、page cache(用于文件系统缓存的页面)、写时复制(Copy-On-Write)以及私有映射和共享映射等多种内存管理策略。 匿名页面是指没有与文件系统关联的内存页,通常用于进程堆栈和动态分配的数据。KSM是一种优化技术,可以合并内存中相同内容的匿名页面,以减少内存占用。page cache则用于存储文件系统的数据,提高读取速度。写时复制技术允许多个进程共享同一份物理页,直到其中一个进程尝试修改时才复制一份。私有映射和共享映射是两种不同的内存映射方式,私有映射的修改不会影响其他进程,而共享映射的修改则会被所有映射该页的进程看到。 虚拟存储通过缺页中断和一系列复杂的内存管理策略,使得在有限的物理内存中能够运行大且复杂的程序,有效地提高了计算机系统的资源利用率和性能。"