计算机操作系统——存储管理(考研复试终极整理版)
一、存储管理核心功能与目标
1. 核心功能
- 内存分配与回收:为进程分配内存空间,回收结束进程的内存(如动态分区分配算法)
- 地址转换:实现逻辑地址到物理地址的映射(通过页表、段表等机制)
- 内存保护:防止进程越界访问(基址/限长寄存器、权限位)
- 虚拟存储扩展:利用磁盘空间扩展逻辑内存(分页/分段虚拟技术)
2. 设计目标
- 有效性:提高内存利用率(如紧凑技术减少碎片)
- 透明性:用户无需感知物理存储细节(虚拟内存技术)
- 共享性:支持代码与数据共享(如动态链接库)
- 安全性:隔离进程内存空间,防止非法访问
二、内存分配策略
1. 连续分配管理
| 类型 |
特点 |
典型算法 |
| 单一连续分配 |
整个用户区供一个进程使用,简单但利用率低 |
无动态分配 |
| 固定分区分配 |
预划分固定大小分区,存在内部碎片 |
静态分区表管理 |
| 动态分区分配 |
按需分配内存,需处理外部碎片 |
首次适应(FF)、最佳适应(BF) |
2. 离散分配管理(重点)
(1)分页存储
- 核心机制:
- 逻辑地址 = 页号 + 页内偏移
- 物理地址 = 页框号 × 页大小 + 页内偏移
- 页表存储页号到页框号的映射
- 优化技术:
- 快表(TLB):缓存常用页表项,加速地址转换
- 多级页表:减少页表占用内存(如二级页表)
(2)分段存储
- 逻辑划分:按程序功能模块分段(代码段、数据段、堆栈段)
- 地址结构:逻辑地址 = 段号 + 段内偏移
- 优点:便于共享与保护,支持动态增长
(3)段页式存储
- 结合分段与分页:
- 程序按逻辑分段
- 每段再划分为固定大小的页
- 地址转换:段表 → 页表 → 物理地址
三、虚拟存储管理(高频考点)
1. 基本原理
- 局部性原理:时间局部性(重复访问) + 空间局部性(邻近访问)
- 实现方式:请求分页、请求分段
- 核心流程:
- 进程部分装入内存
- 缺页时通过页面置换调入内存
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)对算法的影响