- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 存储器管理 存储器管理的主要目标是为用户提供方便、安全和充分大的存储器。 存储器即主存、内存,分为两大部分: 系统区:供操作系统使用 用户区:划分为一个或多个区域,供用户进程使用。 存储器管理的功能 存储空间的分配和回收: 地址变换:将逻辑地址变换为物理地址 存储保护:防止因用户程序错误破坏系统或其他用户,防止程序之间的相互干扰 存储扩充:在逻辑上为用户提供一个比实际内存更大的存储空间 7.1 存储器管理的基本概念 逻辑地址:用户编程时所使用的地址。又称相对地址、虚地址。 地址空间:逻辑地址的集合。 物理地址:内存中的地址。又称绝对地址、实地址。 主存空间:物理地址的集合。 地址变换 地址变换:将逻辑地址转换为物理地址。又称地址映射、重定位。 地址变换分为两类: 静态地址变换 动态地址变换 静态地址变换 静态地址变换:又称静态地址重定位,地址变换在程序装入时一次完成,以后不再改变。 特点:不需硬件支持,但程序运行时不能在内存移动,程序需要连续存储空间,难以共享。 静态地址变换示意图 动态地址变换 动态地址变换:又称动态重定位,在程序执行过程中,每次访问内存之前将要访问程序地址转换成内存地址。 特点:需要硬件支持,不需连续空间,可以实现虚拟存储。 动态地址变换示意图 7.2 分区存储管理 分区存储管理是多道程序系统中采用的一种最简单的方法。它把系统的内存划分为若干大小不等的区域,操作系统占一个区域,其他区域由并发进程共享,每个进程占一个区域。 分区存储管理分为: 固定分区 动态分区 7.2.1 固定分区存储管理 固定分区存储管理方法将内存空间划分为若干个固定大小的分区,每个分区中可以装入一道程序。分区的位置及大小在运行期间不能改变。 为了便于管理内存,系统需要建立一张分区使用表,其中记录系统中的分区数目、分区大小、分区起始地址及状态。 分区使用表例 固定分区的内存分配 分区分配:当有用户程序要装入时,由内存分配程序检索分区使用表,从中找出一个能满足要求的空闲分区分配给该程序,然后修改分区说明表中相应表项的状态;若找不到大小足够的分区,则拒绝分配内存。 分区回收:当程序执行完毕不再需要内存资源时,释放程序占用的分区,管理程序只需将对应分区的状态置为未分配即可。 特点:最早的多道程序存储管理方式,不能充分利用内存,存在内存碎片。 7.2.2 动态分区存储管理 动态分区存储管理又称为可变分区存储管理,这种存储管理方法的实现思想是根据作业大小动态地建立分区,并使分区的大小正好适应作业的需要。因此系统中分区的大小是可变的,分区的数目也是可变的。 动态分区中的数据结构 在动态分区中常用的数据结构有: 空闲分区表。用一个空闲分区表来登记系统中的空闲分区。其表项类似于固定分区。 空闲分区链。将内存中的空闲分区以链表方式链接起来,构成空闲分区链。 空闲分区表示意图 空闲分区链示意图 分区分配算法 目前常用的分区分配算法有以下几种: 首次适应算法 循环首次适应算法 最佳适应算法 最坏适应算法 首次适应算法 首次适应算法又称最先适应算法,该算法要求空闲分区按地址递增的次序排列。 在进行内存分配时,从空闲分区表(或空闲分区链)首开始顺序查找,直到找到第一个能满足其大小要求的空闲分区为止。 然后,再按照作业大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍然留在空闲分区表(或空闲分区链)中。 首次适应算法的特点 特点:优先利用内存低地址端,高地址端有大空闲区。但低地址端有许多小空闲分区时会增加查找开销。 循环首次适应算法 循环首次适应算法又称下次适应算法,它是首次适应算法的变形。 该算法在为进程分配内存空间时,从上次找到的空闲分区的下一个空闲分区开始查找,直到找到第一个能满足其大小要求的空闲分区为止。 然后,再按照作业大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍然留在空闲分区表(或空闲分区链)中。 循环首次适应算法的特点 特点:使存储空间的利用更加均衡,但会使系统缺乏大的空闲分区。 最佳适应算法 最佳适应算法要求空闲分区按容量大小递增的次序排列。 在进行内存分配时,从空闲分区表(或空闲分区链)首开始顺序查找,直到找到第一个能满足其大小要求的空闲分区为止。 如果该空闲分区大于作业的大小,则从该分区中划出一块内存空间分配给请求者,将剩余空闲区仍然留在空闲分区表(或空闲分区链)中。 最佳适应算法的特点 按最佳适应算法为作业分配内存,就能把既满足作业要求又与作业大小最接近的空闲分区分配给作业。 特点:保留了大的空闲区。但分割后的剩余空闲区很小。 最坏适应算法 最坏适应算法要求空闲分区按容量大小递减的次序排列。 在进行内存分配时,先检查空闲分区表(或空闲分区链)中的第一个空闲分区,若第一个空闲分区小于作业要求的大小,则分
文档评论(0)