内存管理的基本概念
内存管理的功能
- 主存空间的分配与回收——存放好作业
- 地址转换与重定位——实现对信息的访问
- 存储保护与共享
- 存储扩充
CPU能直接访问的存储设备只有内存(几个CPU时钟周期)和寄存器(内置在CPU里,1个CPU时钟周期。
逻辑地址和物理地址
- 逻辑地址:虚地址,用户程序中使用的地址;
- 物理地址:系统中内存单元的地址;
- 逻辑地址空间、物理地址空间
重定位Relocation:将相对地址变为绝对地址的过程。
MMU:内存管理单元,实现重定位的硬件设备
重定位的方式
- 静态重定位
程序入主存之前由编译/链接程序完成重定位,入主存可立即执行。 - 动态重定位
程序入主存之前不进行重定位,入主存执行到与地址相关项时,再进行重定位。
动态运行时装入方式
- 定义装入程序按照装入模块中的地址,将程序和数据装入内存,执行时重定位。
- 优点:内存利用率高;大规模程序有利;可通过程序设计来实现;无需操作系统的额外支持;
运行时动态链接方式
- 将编译后的目标模块及库函数,在程序执行时进行链接。
- 存根程序stub:用于指出如何定位适当的内存驻留库程序,或者在程序不在内存时如何加载库;
- 特点:可节省内存空间;可用于系统类库的更新(如修改bug);需要操作系统的支持;
交换技术(Swapping)
- 引入目的:解决由于内存不足而无法同时调入多个作业的问题
- 多道程序环境下的交换
① 实现:中级调度
② 类别:进程对换、页/段对换; - 对换空间管理