第四章 存储管理1操作系统.pptVIP

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章 存储管理 学习重点和难点: 1 存储管理的基本概念 2 各种存储管理的基本思想、实现方法和技术 3 地址空间和物理空间的区别 4 虚拟存储器的概念和方法 5 请求分页 程序的装入和链接 程序的装入 绝对装入方式(Absolute Loading Mode) 程序中所使用的相对地址可以在编译或汇编时给出或由程序员直接赋予(单道程序系统) 可重定位装入方式(Relocation Loading Mode) 当一个地址装入与其地址空间不一致的存储空间中,就得要地址变换。也就是说将虚地址映射为内存地址,把这种作法叫做地址重定位 动态运行时的装入方式(Denamle Run-time Loading) 地址转换推迟到程序真正要开始执行时才进行。 程序的链接 静态链接:程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开。 装入时动态链接:将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的方式 运行时的动态链接:对某些目标模块的链接时在程序执行中需要该模块是才对它进行链接。 连续分配方式 单一连续分配 固定分区分配 将内存用户空间划分为若干个固定大小的区域,每个分区中只装入一个作业 划分分区的方法 分区大小相等:(程序太小,内存浪费;程序太大,无法装入内存,不能运行) 分区大小不等:把内存划分成含有多个较小的分区,适量的中等分区和少量大分区,可根据程序大小为它分配适当内存 内存分配 分区分配中的数据结构 空闲分区表:用于记录每个空闲分区的情况,每个空闲分区占一个表目(分区号、分区始址、分区大小) 空闲分区链:通过指针,将所有空闲分区连成一个链表) 分区分配算法 1、 最先适应法(首次适应算法FF):要求可用表或自由链按照地址递增的次序排列。按照某种次序依次检查各个空闲区,把第一个找到能容纳申请要求的内存区分配给申请者,并把余下的部分进行合并(如果有相邻空闲区存在) 2、循环首次适应算法:为进程分配内存空间时,不再是每次都从链首开始查找,而是从上次找到到的空闲分区的下一个空闲分区开始查找(设置一个起始查询指针) 3、最佳适应算法:(空闲区由小到大排列)按照某一从小到大次序依次检查所有的空闲区,把能容纳申请要求的一个最接近尺寸且大于或等于作业大小的分区给申请的作业,剩余的部分留在空闲区。 4、最坏适应算法WF 空闲区按其大小递减的顺序组成空闲区可用表或自由链。当用户作业或进程申请一个空闲区时,先检查空闲区可用表或自由链的第一个空闲可用区的大小是否大于或等于所要求的内存长度,若可用表或自由链的第一个项所有空闲区长度小于申请,则失败,否则从空闲区可用表或自由链分配相应的空间给用户,然后修改和调整空闲区可用表或自由链 几种分配算法的比较: 从搜索速度上看,FF具有最佳性能。 FF的另一个可重定位分区算法与可变式分区算法的差别在于需要将空闲区进行拼接,以减少碎片,提高存储器的利用率。 BF找到的空闲区是最佳的,但在某些情况下,不一定能提高内存的利用率。 WF是基于不留下碎片空闲区为出发点,选择最大的空闲区来满足用户的需求,以及分配后剩余的部分仍能再分配。 系统回收分区的主要步骤: 1 检查回收分区是否与空闲区邻接,如邻接则加以合并; 2 修改说明表 (邻接情况有四种,见课本P110) 释放区邻接的分区情况可能是:释放区邻接的是另一进程的已分配区,或者是空闲区。 下面以首次适应法说明了系统回收该进程占用区存在的四种可能情况。设进程的释放区为R,与R相邻的两个空闲区分别为F1和F2。R的首地址送LOC,R的尾地址送LOC1,R的大小送SIZE。 (a)若释放区R与F1相邻接,即其低地址部分邻接一空闲区。将R与F1合并,合并后的空闲区仍记为F1。 如何判断释放区R 是否与某个空闲区相邻呢?只要从链首开始查找即可:若F1的首地址+F1的大小=R的首地址,说明R与F1相邻接。只要修改F1的大小= F1的大小+SIZE,其它参数不变和在链中的位置不变。 (b)若释放区R与F2相邻接,即其高地址部分邻接一空闲区。将R与F2合并,合并后的空闲区记仍记为F2。 判断释放区R 是否与F2空闲区相邻,只要从链首开始查找。 若LOC+SIZE=F2的首地址,说明R与F2相邻接。需修改F2的首地址=LOC,F2的大小= F2的大小+SIZE。 碎片(零头),就是不能分配给用户进程的、无效的空闲内存空间。碎片分内碎片和外碎片。解决碎片的方法有动态地址重定位和分页存储两种。 可重定位分区算法与可变式分区算法的差别在于需要将空闲区进行拼接,以减少碎片,提高存储器的利用率。 进行拼接的时机选择 分区的存储保护:界限寄存器和存储保护键

您可能关注的文档

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档