【操作系统总结】存储器管理-程序的装入与连接,连续分配存储管理方式
2015-05-31 19:16
495 查看
程序的装入与连接
程序要经过编译,链接,装入才能运行绝对转入方式
将程序装入事先指定的地址,程序装入以后逻辑地址与实际内存地址相同。要求程序员非常熟悉内存地址可重定位方式
根据内存的具体情况将程序装入适当的位置,把装入时对程序和数据的地址修改过程称为重定位。动态运行时的装入方式
程序对换的时候内存是改变的可重定位不允许程序运行时在内存中移动位置。动态运行时的装入程序在把装入模块装入内存后,并不立即把装入模块转换程物理地址,而是吧这中地址转换推迟到程序真正要求执行时进行。
程序的链接
静态链接
在程序运行之前,先将个目标模块及他们所需的库函数链接程一个完整的装配模块,以后不在拆开,就是静态连接方式装入时动态链接
在装入内存时,边装入边链接源程序优点:
便于修改和更新
便于实现对目标模块的共享
运行时动态链接
运行的时候需要哪个模块就链接哪个模块连续分配存储管理方式
单一连续分配
单道程序环境,整个内存都是的空间都是由用户这一个程序独占,就是单一连续分配固定分区分配
把内存划分为几个块,每一个块中装入一个程序,有一个空闲分区,就可以从外部调用一个作业装入该分区划分分区的办法
分区大小相等。缺点:缺少灵活性,造成空间浪费分区大小不等,大小不同的分区装入不同的作业
内存分配
将分区按大小排列,再为其简历一张分区使用表。装入作业的就检索这张表,分配的内存就把状态变为”已分配”;如果没有找到适合的分区,就决绝为该用户程序分配内存动态分区分配
根据进程的需要,动态的分配内存。动态分区分配中的数据结构
空闲分区表。记录每个空闲分区的情况空闲分区链。将空闲分区排成一个双向链,便于检索,分配出去就把状态为由0设为1
动态分配算法
见另一博文分区分配操作
分配内存,从空闲分区链找到适合的大小,然后分区回收内存。①空闲分区与F1相邻,在其后面,合并为F1②分区与F2相邻在F2前面,将F2合并为回收分区
③与F1和F2相信,全部合并为F1.④都不相邻,重新见一个分区表
相关文章推荐
- Delphi编译选项
- svm代码c++——机器学习
- 解读uglifyJS(转载:http://rapheal.sinaapp.com/2014/05/15/uglifyjs-ast-parse/)
- DOM节点——JS总结
- 团队实验用例建模
- 第八篇 SQL Server代理使用外部程序
- 哈夫曼树
- cocos v2.2.6&cocos2d-x-3.6实练
- 15第十三周项目一——动物这样叫
- 我不懂女人我不懂人
- Rails: No such file or directory - getcwd
- Android canvas & shader & path
- 【转】判断UIViewController是否正在显示
- c++虚函数的使用
- 远程操作linux的利器:putty和psftp
- c++链表相关
- 学习 HTML5-目录
- 业界值得关注的公司(开篇)
- MyBatis入门
- JavaScript基于原型的继承