- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 存储器管理;主要内容:
5.1 程序的装入和链接
5.2 连续分配存储管理方式
5.3 对换
5.4 分页存储管理方式
5.5 分段存储管理
5.6 作业
;5.1 程序的装入和链接;5.1.1 程序的装入
一.绝对装入方式(Absolute Loading Mode)
装入程序按照模块中的地址将程序和数据装入内存。在这种方式下,内存地址对于程序员来说是可见的。
二.可重定位装入方式(Relocatable Loading Mode)
也叫相对装入方式,系统根据当时内存的使用情况将模块装入到内存的适当位置。这种方式下,装入程序需先将目标代码中与地址有关的指令和数据全部重定位,因此这种重定位也叫静态重定位。
三.动态运行时装入方式(Dynamic Run-Time Loading),与上述方式不同的是,动态装入方式是在运行时才临时进行重定位工作,因此也叫动态重定位。;5.1.2 程序的链接
程序的链接的功能是将分散的若干模???及所需库函数链接在一起形成一个完整的可装入模块。
一.静态链接
静态链接所形成的完整的可装入模块也叫可执行文件,形成后不再分开,可多次执行。需解决以下两个问题:
1.按照模块间的调用关系对相对地址进行修改;
2.按照模块间的调用关系变换外部调用符号。
二.装入时动态链接(Load-TimeDynamicinking)
在模块被调用装入内存时才临时链接,其优点是:
1.便于软件版本的修改和更新
2.便于实现目标模块共享
三.运行时动态链接(Run-TimeDynamicLinking)
将部分不常用的模块推迟到运行时才临时链接。;5.2 连续分配存储管理方式;5.2.2 固定分区分配
一.划分分区的方法:
将内存空间划分为若干个固定大小的分区,可用下述两种方法:
1.分区大小相等
2.分区大小不等
二.内存分配
建立分区使用表, 表项包含有每个分区的起始地址.大小及状态(是否已分配)。;5.2.3 动态分区分配
动态分区分配是根据进程的实际需要,动态地为之分配连续的内存空间。在实现可变分区分配存储管理方式时,必须解决下述三个问题:
(1)分区分配中所用的数据结构;
(2)分区的分配算法;
(3)分区的分配和回收操作。
一.分区分配中的数据结构
1.空闲分区表
2.空闲分区链;二.分区分配算法
1.首次适应算法,也叫最先适应法。选择找到的第一个不小于程序空间大小的空闲分区分配给程序。
2.循环首次适应算法,是对首次适应法的发展。
3.最佳适应算法。(区别:最坏适应法)
三.分区分配操作
在动态分区存储管理方式中,主要的操作是分配和回收内存。
1.分配内存
2.回收内存:可能出现下列四种情况
(1)回收区与插入点的前一个分区F1相邻接
(2)回收分区与插入点的后一分区F2相邻接
(3)回收区同时与插入点的前.后两个分区邻接
(4)回收区既不与F1邻接,也不与F2邻接。;5.2.4 动态重定位分区分配
一.紧凑
把不能被利用的小分区称为“零头”或“碎片”。
通过移动,把多个分散的小分区拼接成大分区的方法被称为“拼接”或“紧凑”。但是,由于紧凑后的程序的绝对地址再一次发生改变,导致程序无法继续运行。
二.动态重定位
就是将重定位工作推迟到程序运行时再进行的一种重定位方法。重定位工作由专门的动态地址重定位机构来实现。
三.动态重定位分区分配算法
紧凑动作通常是在找不到足够大的空闲分区来满足用户需求时才进行,具体流程图见教材P145。 ;5.3 对换;5.3.2 对换空间的管理
在具有对换功能的OS中,通常把外存分为文件区和对换区。
为了提高进程换出换入的速度,对对换区的分配采用了连续分配方式,因而对对换区空间的分配与回收,采用了与动态分区方式相同的策略。如采用空闲分区表(链)进行管理;分配算法采用首次适应算法.循环首次适应算法和最佳适应算法等等。操作流程图见教材P142图5-9。
与动态分区管理方式相同,对换区的回收操作也可分为四种情况。;5.3.3 进程的换出与换入
当内核因执行某些操作而发现内存不足时,便调用对换程序或唤醒对换进程,实现进程的换入与换出。
一.进程的换出
就是将内存中的某些进程调至对换区,以腾出内存空间。两个步骤:
1.选出被换出的进程
原则:从处于阻塞或睡眠状态的进程中选择优先级最低的进程换出;若阻塞队列为空,而空闲内存仍不时,便选择优先级最低的就绪进程换出。当然,通常还要考虑的一个因素是进程驻留内存的时间,驻留时间长的换出。 ; 2.换出过程
(1)将非共享的程序和数据段换出;
(2)对于共享的程序
文档评论(0)