本章重点:
- 理解程序的三种链接方式和三种装入方式。
- 掌握分区、分页和分段分配方式的概念,及分配算法和实现(连续与离散)。
- 掌握虚拟存储器的基本概念。
- 掌握请求分页、分段存储管理方式的概念、分配算法和实现
三种链接方式:
静态链接:事先连接
- 对相对地址的修改
- 变换外部调用符号
装入时动态链接:边装入边连接
- 便于修改和更新
- 便于实现对目标模块的共享
运行时动态链接 Run-time Dynamic Linking
- 对某些模块的链接推迟到执行时才进行,如, 错误处理模块
程序的处理顺序:编辑――编译――链接――装入――运行
三种装入方式:
- 绝对装入
- 编译后,装入前已产生了绝对地址(内存地址),装入时不再作地址重定位,装入后不能移动程序
- 适用于单道系统
- 绝对地址的产生:(1)由编译器完成,(2)由程序员编程完成。
- 可重定位装入方式
- 静态重定位:装入时完成,主要工作是对相对地址中的指令和数据地址的调整过程,适用于多道系统
- 不允许程序运行时在内存中移动
- 动态重定位
- 动态重定位一般在执行时才完成“相对——绝对地址”的转换且有硬件的支持,能保证程序的可移动性
磁盘分区方式
- 固定分区
- 各分区等大或从小到大
- 数据结构:将分区按大小排序,建立分区使用表,并将其地址、分配标识作记录
- 动态分区
- 数据结构:1.空闲分区表 2.空闲分区链
分区算法:
- 首次适应算法FF(first fit)
- 要求:分区按低址――高址链接
- 特点:找到第一个大小满足的分区,划分。有外零头,低址内存使用频繁
- 循环首次适应算法NF(next fit)
- 从1中上次找到的空闲分区的下一个开始查找。
- 特点:空闲分区分布均匀,提高了查找速度;缺乏大的空闲分区。
- 最佳适应算法BF(best fit)
- 分区按大小递增排序;分区释放时需插入到适当位置
- 分割后留下小碎片,难以利用
- 最坏适应算法WF(worst fit)
- 总是挑选最大的空闲分区分割给作业使用
- 分区按大小递减排序;
- 优点:剩下碎片不至于太小
- 缺点:缺乏大的空闲分区
快速适应算法QF(quick fit)
- 分类搜索:将空闲分区根据容量大小分类
- 设立管理索引表
- 优点:查找效率高;不要分割
- 缺点:存储空间会有一定的浪费
伙伴系统BS
- 大小:为2k,
- 将相同大小的所有空闲分区,设立一个空闲双向链表
- 要分配一个n的存储空间, 首先求i值,让2i-1