4.1程序的装入和链接
1、创建进程的第一件事:将程序和数据装入内存。
2、程序的装入和链接
1)编译
2)链接
3)装入
3、地址的概念
1)逻辑地址(相对地址,虚地址)
2)物理地址(绝对地址,实地址)
4、程序装入中的地址处理
逻辑地址 ====== 物理地址:
1)绝对装入方式
逻辑地址 ->重定位->物理地址:
2)静态可重定位装入方式
3)动态运行时(重定位)装入方式
5、不同的程序链接装入方式(使用内存的时机)
根据链接时间的不同,分成三种:
①静态链接:装入运行前将多个目标模块及所需库函数链接成一个整体,以后不再拆开。
②装入时动态链接:装入内存时,边装入边链接的链接方式。
③运行时动态链接:对某些目标模块的链接,在执行中需要该目标模块时,才对它进行链接。
4.2连续分配存储管理方式
1、连续分配方式
(1)单一连续分配
(2)固定分区分配
具体实现:
1)如何划分分区大小
2)需要的数据结构
3)分配回收操作
(3)动态分区分配
优点:并发进程数没有固定数的限制,不产生内碎片。
缺点:有外碎片
具体实现:
1)分区分配中的数据结构
2)分区分配算法
①首次适应算法FF
优点:优先利用内存低址部分,保留了高地址部分的大空闲区;
缺点:但低址部分不断划分,会产生较多小碎片;而且每次查找从低址部分开始,会逐渐增加查找开销。
②循环首次适应算法
优点:空闲分区分布均匀,减少查找开销
缺点:缺乏大的空闲分区
③最佳适应算法
缺点:每次找到最合适大小的分区割下的空闲区也总是最小,会产生许多难以利用的小空闲区
④最差适应算法
基本不留下小空闲分区,但会出现缺乏较大的空闲分区的情况。
⑤快速适应算法
能快速找到合适分区,但链表信息会很多;实际上是空间换时间。
3)分区分配操作
(4)动态重定位分区分配
动态重定位分区分配算法与动态分区分配算法基本相同,差别在于增加了紧凑的功能。
(5)内存空间管理之对换