在现代计算机系统中,存储器管理是操作系统的核心功能之一,它直接关系到系统的性能、稳定性以及多任务处理能力。本章将深入探讨存储器管理的基本概念、关键技术及其与计算机系统服务的紧密联系。
一、存储器管理概述
存储器管理的主要目标是高效、公平地分配和使用计算机的物理内存与虚拟内存资源。它需要解决以下几个核心问题:
- 地址映射:将程序中的逻辑地址转换为物理内存中的实际地址。
- 内存分配与回收:为运行的程序分配所需的内存空间,并在程序结束后及时回收。
- 内存保护:确保每个程序只能访问其被分配的内存区域,防止相互干扰和系统崩溃。
- 内存扩充:利用虚拟内存技术,使得程序能够使用比实际物理内存更大的地址空间。
二、关键技术
1. 连续分配管理
早期系统常采用单一连续分配或固定分区分配,但内存碎片化问题严重。随后发展的动态分区分配(如首次适应、最佳适应算法)提高了灵活性,但仍无法完全避免外部碎片。
2. 非连续分配管理
这是现代操作系统的主流方式,主要包括分页管理和分段管理。
- 分页管理:将物理内存和进程的地址空间划分为固定大小的页(Page)和页框(Page Frame)。通过页表实现逻辑地址到物理地址的转换。优点是无外部碎片,管理简单;缺点是存在内部碎片,且页表可能占用较大空间。
- 分段管理:按照程序的逻辑结构(如代码段、数据段)划分为大小不等的段。每个段有独立的段表项,包含基址和界限。优点是符合程序员的直观逻辑,易于实现共享和保护;缺点是容易产生外部碎片。
- 段页式管理:结合了分段和分页的优点。先将程序分段,再将每个段分页。既拥有分段系统的逻辑清晰性和保护性,又具备分页系统的物理内存管理高效性,但地址转换过程更为复杂。
3. 虚拟内存技术
虚拟内存是存储器管理的一次革命。它基于局部性原理,允许程序部分装入内存即可运行。核心机制包括:
- 请求调页/段:当程序访问不在物理内存中的页面或段时,由操作系统将其从磁盘调入。
- 页面置换:当物理内存已满且需要调入新页时,需选择一页换出到磁盘。常用算法有:先进先出(FIFO)、最近最久未使用(LRU)、最佳置换(OPT)等。
- 工作集模型:用于评估进程在特定时间间隔内实际活跃访问的页面集合,是动态内存分配和防止抖动的关键依据。
三、存储器管理与计算机系统服务
存储器管理并非孤立运行,它深度依赖于操作系统提供的核心系统服务,并与之协同工作:
- 进程管理服务:存储器管理为进程的创建、切换和终止提供内存空间支持。进程控制块(PCB)中保存了其页表或段表的指针。当进程调度器切换进程时,存储器管理单元需要同步切换地址空间。
- 文件系统服务:虚拟内存的交换区(Swap Space)通常建立在磁盘的文件系统或独立分区上。操作系统通过文件系统的读写服务,完成页面的换入和换出操作。内存中的缓冲区缓存(Buffer Cache)或页缓存(Page Cache)也依赖存储器管理机制,用于加速对磁盘文件的访问。
- 设备管理服务:直接内存访问(DMA)设备在进行数据传输时,需要操作系统(存储器管理模块)为其分配和锁定特定的物理内存缓冲区,并确保地址映射的正确性,以避免设备访问到非法内存区域。
- 系统调用与接口服务:应用程序通过系统调用(如
brk,mmap)向操作系统申请或释放内存。存储器管理模块响应这些调用,执行具体的分配、映射或回收操作,并向用户程序提供统一、安全的内存访问视图。
- 保护与安全服务:通过硬件支持(如MMU-内存管理单元)与软件结合,存储器管理实现了内存保护。例如,通过页表项中的读写执行权限位,防止用户程序破坏内核空间或其他进程的数据,这是系统安全的基础屏障。
四、
存储器管理是操作系统资源管理的基石。从简单的分区管理到复杂的段页式虚拟内存系统,其发展始终围绕着提升利用率、加快访问速度和保障系统安全稳定这三大目标。它通过精细的算法与硬件协同,并深度整合进程、文件、设备等核心系统服务,共同构建了一个高效、可靠、透明的程序运行环境。理解存储器管理,是理解现代计算机系统如何工作的关键一环。