- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本章学习目标 理解程序从编译、链接到被装入执行的过程; 理解逻辑地址和物理地址; 几种基本的连续分配方案,理解内部碎片和外部碎片; 掌握基本分页管理的地址变换过程及页表的作用; 了解快表和多级页表的作用和原理; 掌握基本分段管理的逻辑地址结构、段表结构、地址变换过程; 理解分页和分段管理的区别和联系; 掌握基本段页式管理方案的地址变换过程。 重点回顾 死锁避免:银行家算法 死锁的检测与解除 相对地址与相对地址空间 绝对地址与绝对地址空间 地址重定位 重点回顾 程序的装入 绝对装入方式 可重定位装入方式 动态运行时装入方式 5.2.3 程序的链接 根据链接时间的不同,可把链接分成如下三种: (1) 静态链接。在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开。我们把这种事先进行链接的方式称为静态链接方式。 (2) 装入时动态链接。这是指将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式。 (3) 运行时动态链接。这是指对某些目标模块的链接,是在程序执行中需要该(目标)模块时,才对它进行的链接。 1.静态链接方式(Static Linking) (1) 对相对地址进行修改。在由编译程序所产生的所有目标模块中,使用的都是相对地址,其起始地址都为0,每个模块中的地址都是相对于起始地址计算的。 (2) 变换外部调用符号。将每个模块中所用的外部调用符号也都变换为相对地址,如图4-4(b)所示。这种先进行链接所形成的一个完整的装入模块,又称为可执行文件。通常都不再拆开它,要运行时可直接将它装入内存。这种事先进行链接,以后不再拆开的链接方式,称为静态链接方式。 2.装入时动态链接(Load-time Dynamic Linking) 用户源程序经编译后所得的目标模块,是在装入内存时边装入边链接的,即在装入一个目标模块时,若发生一个外部模块调用事件,将引起装入程序去找出相应的外部目标模块,并将它装入内存,还要修改目标模块中的相对地址。 装入时动态链接方式有以下优点: (1) 便于修改和更新。 (2) 便于实现对目标模块的共享。 3.运行时动态链接(Run-time Dynamic Linking) 在许多情况下,应用程序在运行时,每次要运行的模块可能是不相同的。 但由于事先无法知道本次要运行哪些模块,故只能是将所有可能要运行到的模块都全部装入内存,并在装入时全部链接在一起。 显然这是低效的。 运行时动态链接方式,是将对某些模块的链接推迟到程序执行时才进行链接,亦即,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存,把它链接到调用者模块上。 5.3.2 固定分区分配 当用户程序要装入执行时,通过请求表提出内存分配要求和所要求的内存空间大小。从分区说明表中查询,从中找出一个大小满足要求的空闲分区,并将其分配给申请者。 固定分区的回收,只需将对应的分区状态置为未使用即可。 5.3.2 固定分区分配 优点: 实现简单、开销小 缺点: 必须预先能够估计作业要占用的空间,分区总数固定,限制了并发作业的的数目; 内碎片(占用分区之内未被利用的空间)造成浪费 3.动态分区分配算法 ① 首次适应算法(FF,FirstFit) 要求可用表或自由链按起始地址递增的次序排列。 从表头查询,一旦找到大小满足的分区就结束探索。 例题:如图所示是某一个时刻J1、J2、J3、J4在内存中的分配情况、空闲区表和已分区表,它们的长度分别是15KB、10KB、12KB、10KB。J5和J6两个新作业的长度分别为5KB和13KB。按照最先适应算法进行内存分配,描述分配后内存、空闲区表以及已分区表的情况。 3.动态分区分配算法 ④循环首次适应算法(next fit) 该算法是由首次适应算法演变而成的。在为进程分配内存空间时,不再是每次都从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直至找到一个能满足要求的空闲分区。 为实现该算法,应设置一起始查寻指针,用于指示下一次起始查寻的空闲分区。 该算法能使内存中的空闲分区分布得更均匀,从而减少了查找空闲分区时的开销,但这样会缺乏大的空闲分区。 重点回顾 程序链接 (1) 静态链接 (2) 装入时动态链接 (3) 运行时动态链接 连续分配方式是指为用户进程分配连续内存空间的内存管理方式。 连续分配方式: 单一连续分配 固定分区分配:分区大小和个数固定 重点回顾 可变分区分配:分区大小和个数随内存的动态分配和回收变化 可变分区分配算法 ① 首次适应(first fit)算法 ② 最佳适应(best fit)算法 ③ 最差适应(worst fit)算法 2.具有快表的地址变换机构 从上述地址转换过程可以看出,
文档评论(0)