程序的装入与连接
程序要经过编译,链接,装入才能运行
绝对转入方式
将程序装入事先指定的地址,程序装入以后逻辑地址与实际内存地址相同。要求程序员非常熟悉内存地址
可重定位方式
根据内存的具体情况将程序装入适当的位置,把装入时对程序和数据的地址修改过程称为重定位。
动态运行时的装入方式
程序对换的时候内存是改变的
可重定位不允许程序运行时在内存中移动位置。动态运行时的装入程序在把装入模块装入内存后,并不立即把装入模块转换程物理地址,而是吧这中地址转换推迟到程序真正要求执行时进行。
程序的链接
静态链接
在程序运行之前,先将个目标模块及他们所需的库函数链接程一个完整的装配模块,以后不在拆开,就是静态连接方式
装入时动态链接
在装入内存时,边装入边链接源程序
优点:
- 便于修改和更新
- 便于实现对目标模块的共享
运行时动态链接
运行的时候需要哪个模块就链接哪个模块
连续分配存储管理方式
单一连续分配
单道程序环境,整个内存都是的空间都是由用户这一个程序独占,就是单一连续分配
固定分区分配
把内存划分为几个块,每一个块中装入一个程序,有一个空闲分区,就可以从外部调用一个作业装入该分区
划分分区的办法
- 分区大小相等。缺点:缺少灵活性,造成空间浪费
- 分区大小不等,大小不同的分区装入不同的作业
内存分配
将分区按大小排列,再为其简历一张分区使用表。装入作业的就检索这张表,分配的内存就把状态变为”已分配”;如果没有找到适合的分区,就决绝为该用户程序分配内存
动态分区分配
根据进程的需要,动态的分配内存。
动态分区分配中的数据结构
- 空闲分区表。记录每个空闲分区的情况
- 空闲分区链。将空闲分区排成一个双向链,便于检索,分配出去就把状态为由0设为1
动态分配算法
见另一博文
分区分配操作
- 分配内存,从空闲分区链找到适合的大小,然后分区
- 回收内存。①空闲分区与F1相邻,在其后面,合并为F1②分区与F2相邻在F2前面,将F2合并为回收分区
③与F1和F2相信,全部合并为F1.④都不相邻,重新见一个分区表
时间: 2024-10-08 18:12:15