存储结构层次
| 层次 | 速度 | 容量 | 成本 | 典型技术 |
|---|
| 寄存器 | 最快(ns) | 最小(字) | 最高 | CPU 内寄存器 |
| Cache(高速缓存) | 快(ns) | 较小(MB) | 高 | SRAM |
| 主存(内存) | 中等(μs) | 中等(GB) | 中 | DRAM |
| 辅存(磁盘) | 慢(ms) | 大(TB) | 低 | 磁介质/SSD |
| 磁带/archive | 最慢(s) | 最大(PB) | 最低 | 磁带/光盘 |
- 速度与成本矛盾:越快越贵,需通过分级存储实现性价比平衡
- 局部性原理:程序执行时仅访问少数热点区域,可通过层次结构提供”大容量+高速度”的近似效果
为什么需要存储管理
- 冯·诺依曼结构中,程序和数据必须在内存中才能被 CPU 执行
- 存储器是珍贵资源,需合理使用
- 程序的逻辑空间和物理空间不同,需映射
存储管理的主要任务
- 内存分配和回收:进程创建时分配空间,撤销时回收
- 地址映射(逻辑地址 → 物理地址):由 MMU(Memory Management Unit)完成
- 地址重定位方式:绝对装入(编译时)、静态重定位(加载时)、动态重定位(执行时)
- 内存保护:防止进程间串扰,防止用户程序跨越到系统空间
- 内存扩充(虚拟内存):借助外存在逻辑上扩充内存
- 覆盖技术(Overlay):程序员手动安排互斥代码段
- 交换技术(Swapping):OS 自动将进程在内存和外存间换入换出
- 虚拟存储:基于局部性原理,按需调入页面,缺页中断处理
地址重定位方式
| 方式 | 时机 | 特点 | 典型应用 |
|---|
| 绝对装入 | 编译时 | 地址一一对应,简单但灵活性差 | 单片机、早期 DOS |
| 静态重定位 | 加载时 | 装入时修改地址值,执行期间不变 | 需连续存储 |
| 动态重定位 | 执行时 | 逻辑地址不变,访问时映射(基址+偏移) | 现代 OS,支持页式/段式/虚拟存储 |