操作系统5-107211.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
存储器管理的功能 存储空间的分配和回收: 地址变换:将逻辑地址变换为物理地址 存储保护:防止因用户程序错误破坏系统或其他用户,防止程序之间的相互干扰 存储扩充:在逻辑上为用户提供一个比实际内存更大的存储空间 存储器管理的基本概念 逻辑地址:用户编程时所使用的地址。又称相对地址、虚地址。 地址空间:逻辑地址的集合。 物理地址:内存中的地址。又称绝对地址、实地址。 主存空间:物理地址的集合。 地址变换 地址变换:将逻辑地址转换为物理地址。又称地址映射、重定位。 地址变换分为两类: 静态地址变换 动态地址变换 静态地址变换 静态地址变换:又称静态地址重定位,地址变换在程序装入时一次完成,以后不再改变。 特点:不需硬件支持,但程序运行时不能在内存移动,程序需要连续存储空间,难以共享。 静态地址变换示意图 动态地址变换 动态地址变换:又称动态重定位,在程序执行过程中,每次访问内存之前将要访问程序地址转换成内存地址。 特点:需要硬件支持,不需连续空间,可以实现虚拟存储。 动态地址变换示意图 动态地址变换 动态地址变换:又称动态重定位,在程序执行过程中,每次访问内存之前将要访问程序地址转换成内存地址。 特点:需要硬件支持,不需连续空间,可以实现虚拟存储。 动态地址变换示意图 补充:程序的装入和链接 为将一个用户源程序变为一个在内存中可执行的文件,通常要经历以下步骤:编译、链接、装入。 将装入模块装入内存有3种方式: 绝对装入方式 可重定位装入方式 动态运行时装入方式 绝对装入方式 编译时产生绝对地址的目标代码,绝对装入程序按照装入模块中的地址将程序及数据装入内存,不需对地址进行变换。 程序中使用的绝对地址可以在编译时给出,也可以由程序员直接赋予。 特点:使用绝对地址不方便,适于单道程序环境。 可重定位装入方式 编译时产生相对地址的目标代码,由装入程序根据内存当时的实际使用情况,将装入模块装入到内存的适当地方。 动态运行时装入方式 在将装入模块装入内存时并不进行地址变换,在程序执行过程中进行地址变换。 特点:需要硬件支持,可以部分装入。 程序链接的方式 静态链接:在程序运行之前,将各目标模块及其所需的库函数装配成一个完整的装入模块。 装入时动态链接:源程序编译后所得到的目标模块在装入内存时边装入边链接。 特点:便于软件版本的修改和更新,便于目标模块的共享。 运行时动态链接:将某些目标模块的链接推迟到执行时才进行。即在执行过程中,若发现一个被调用模块尚未装入内存时,由OS去找到该模块,将它装入内存并链接到调用者模块上。 特点:加快了程序装入,节省了内存。 分区存储管理 分区存储管理是多道程序系统中采用的一种最简单的方法。它把系统的内存划分为若干大小不等的区域,操作系统占一个区域,其他区域由并发进程共享,每个进程占一个区域。 分区存储管理分为: 固定分区 动态分区 动态分区中的数据结构 在动态分区中常用的数据结构有: 空闲分区表。用一个空闲分区表来登记系统中的空闲分区。其表项类似于固定分区。 空闲分区链。将内存中的空闲分区以链表方式链接起来,构成空闲分区链。 空闲分区表示意图 空闲分区链示意图 分区分配 以首次适应算法及空闲链表为例,申请分区大小为x, e是规定的不再分割的剩余区大小。 分区回收 回收分区时,应将空闲区插入适当位置,此时有以下四种: 回收分区r上面邻接一个空闲分区 回收分区r下面邻接一个空闲分区 回收分区r上面、下面各邻接一个空闲分区 回收分区r不与任何空闲分区相邻 回收分区r上邻接一个空闲分区 此时应将回收区r与上邻接分区F1合并成一个连续的空闲区; 合并分区的首地址为空闲区F1的首地址, 其大小为二者之和。 回收分区r下邻接一个空闲分区 此时应将回收区r与下邻接分区F2合并成一个连续的空闲区; 合并分区的首地址为回收分区r的首地址, 其大小为二者之和。 回收分区r上下邻接空闲分区 此时应将回收区r与上、下邻接分区合并成一个连续的空闲区; 合并分区的首地址为与r上邻接空闲区F1的首地址, 其大小为三者之和, 且应将与r下邻接的空闲区F2从空闲分区表(或空闲分区链)中删去。 回收分区r不与任何空闲分区相邻 这时应为回收区单独建立一个新表项,填写分区大小及起始地址等信息,并将其加入到空闲分区表(或空闲分区链)中的适当位置。 分区分配算法 目前常用的分区分配算法有以下几种: 首次适应算法 循环首次适应算法 最佳适应算法 最坏适应算法 首次适应算法 首次适应算法又称最先适应算法,该算法要求空闲分区按地址递增的次序排列。 在进行内存分配时,从空闲分区表(或空闲分区链)首开始顺序查找,直到找到第一个能满足其大小要求的空闲分区为止。 然后,再按照作业大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍然留在空闲分区表(或空

文档评论(0)

锦绣中华 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档