3.计算机操作系统——存储管理.md 4.6 KB

计算机操作系统——存储管理(考研复试终极整理版)


一、存储管理核心功能与目标

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)对算法的影响