1 一些基本概念
1.1 内存管理
- 内存的分配与回收
- 地址转换
- 内存空间的逻辑扩充
- 内存共享
- 内存保护
1.2 多层结构存储系统
(1)存储系统层次结构图:
(2)进程的内存映像
(3)重定位
- 即逻辑地址转为物理地址(相对地址转为绝对地址);
- 静态重定位和动态重定位最显著的区别就是,二者发生的时机不一样。
- 静态重定位:
- 动态重定位:
(4)程序的链接与装入
- 从源程序到可执行程序的三个步骤:
- 编译:使用相关编译程序编译源程序,形成一系列的目标模块。注意,每个目标模块都有自己的逻辑地址,从0开始。也就是说,逻辑地址在编译前就已经存在了。
- 链接:使用链接程序将编译所形成的目标模块 连同所需要的相关库函数 链接在一起,形成一个完整的装入模块。这期间需要对目标模块的地址数据做修改。
- 装入:使用装入程序把链接所形成的装入模块装入到内存中。
(5)内存保护
- 连续分配管理方式下的内存保护机制
- 上下限寄存器的值会随着占用cpu的进程的变化而变化。
- 界地址寄存器:记录长度。
(6)内存共享
2 连续分配管理方式
(1)连续和非连续分配管理方式图解:
(2)内部碎片和外部碎片:
- 内部碎片:
- 外部碎片:
2.1 单一连续分配
(1)
2.2 固定分区分配
(1)概念:
(2)分区方法:
(3)内存分配方法:
2.3 动态分区分配
(1)举例:
(2)使用外部碎片的方法——紧凑:
(3)需要的数据结构:
- 空闲分区表:
- 空闲分区链:
(4)分配方法:(4种)
- 目标:减少外部碎片的产生;尽可能保留大的空闲空间。
- 首次适应算法: