# 计算机操作系统——存储管理(考研复试终极整理版) --- ## 一、存储管理核心功能与目标 ### 1. 核心功能 - **内存分配与回收**:为进程分配内存空间,回收结束进程的内存(如动态分区分配算法) - **地址转换**:实现逻辑地址到物理地址的映射(通过页表、段表等机制) - **内存保护**:防止进程越界访问(基址/限长寄存器、权限位) - **虚拟存储扩展**:利用磁盘空间扩展逻辑内存(分页/分段虚拟技术) ### 2. 设计目标 - **有效性**:提高内存利用率(如紧凑技术减少碎片) - **透明性**:用户无需感知物理存储细节(虚拟内存技术) - **共享性**:支持代码与数据共享(如动态链接库) - **安全性**:隔离进程内存空间,防止非法访问 --- ## 二、内存分配策略 ### 1. 连续分配管理 | **类型** | **特点** | **典型算法** | | ------------ | ---------------------------------------- | ------------------------------ | | 单一连续分配 | 整个用户区供一个进程使用,简单但利用率低 | 无动态分配 | | 固定分区分配 | 预划分固定大小分区,存在内部碎片 | 静态分区表管理 | | 动态分区分配 | 按需分配内存,需处理外部碎片 | 首次适应(FF)、最佳适应(BF) | ### 2. 离散分配管理(重点) #### (1)分页存储 - **核心机制**: - 逻辑地址 = 页号 + 页内偏移 - 物理地址 = 页框号 × 页大小 + 页内偏移 - 页表存储页号到页框号的映射 - **优化技术**: - **快表(TLB)**:缓存常用页表项,加速地址转换 - **多级页表**:减少页表占用内存(如二级页表) #### (2)分段存储 - **逻辑划分**:按程序功能模块分段(代码段、数据段、堆栈段) - **地址结构**:逻辑地址 = 段号 + 段内偏移 - **优点**:便于共享与保护,支持动态增长 #### (3)段页式存储 - **结合分段与分页**: 1. 程序按逻辑分段 2. 每段再划分为固定大小的页 - **地址转换**:段表 → 页表 → 物理地址 --- ## 三、虚拟存储管理(高频考点) ### 1. 基本原理 - **局部性原理**:时间局部性(重复访问) + 空间局部性(邻近访问) - **实现方式**:请求分页、请求分段 - **核心流程**: 1. 进程部分装入内存 2. 缺页时通过页面置换调入内存 ### 2. 页面置换算法 | **算法** | **策略** | **优缺点** | | ----------------------- | ---------------------------- | --------------------------------- | | **OPT(最佳)** | 置换未来最长时间不访问的页面 | 理论最优,无法实现 | | **FIFO(先进先出)** | 置换最早进入内存的页面 | 简单,可能产生Belady异常 | | **LRU(最近最少使用)** | 置换最久未访问的页面 | 性能接近OPT,需硬件支持(访问位) | | **CLOCK(时钟)** | 环形扫描,访问位为0时置换 | 近似LRU,实现简单 | ### 3. 抖动与工作集 - **抖动(Thrashing)**:频繁置换页面导致CPU利用率下降 - **解决方案**:工作集模型(保证进程常驻内存的页面集合) --- ## 四、存储管理高频考点与答题技巧 ### 1. 必背概念对比 - **分页 vs 分段**: - 分页:物理划分,固定大小,无外部碎片 - 分段:逻辑划分,可变大小,支持共享 - **内部碎片 vs 外部碎片**: - 内部碎片:分配单元内未使用的空间(如固定分区) - 外部碎片:内存中分散的小空闲区(如动态分区) ### 2. 经典问题解析 - **Q1:虚拟内存如何实现逻辑地址空间大于物理内存?** - 答:通过页面置换机制将部分页面暂存磁盘,按需调入 - **Q2:分页系统中如何减少页表内存占用?** - 答:多级页表(如二级页表仅需存储活跃页表项) - **Q3:LRU算法的实现方式?** - 答:硬件记录页面访问时间戳,或通过移位寄存器模拟 ### 3. 实验与真题关联 - **Linux内存管理**:Buddy系统(解决外部碎片)、Slab分配器(内核对象缓存) - **真题趋势**:虚拟内存与缓存协同设计、新型存储硬件(SSD)对算法的影响