- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章内存管理2
操作系统与实验教程 第3章第4讲 5.2 分区存储管理 预备知识: 单道系统的内存管理 单道环境下内存分配方式 单一连续分配方式: 存储空间占用情况=系统占用+一个用户程序占用(单道)。 5.2.1分区管理基本原理固定分区管理 固定分区是指系统在初始化时,将内存空间划分为若干个固定大小的区域 1. 分区原则 (1)分区大小划分 分区大小相等:适合于多个相同程序的并发执行; 分区大小不等:多个小分区、适量的中等分区、少量的大分区。根据程序的大小,分配当前空闲的、适当大小的分区。 (2)分区个数不变,大小不变 2、固定分区管理 使用的数据结构:分区状态表 用于分配时查找未分配空间 动态分区管理 1. 分区原则 根据用户进程对内存的需求而划分: (1)根据作业的大小动态地划分分区; (2)各分区的大小是不定的; (3)内存中分区的数目也是不定的。 问题:各作业释放后的空间不连续,导致总的空闲空间很大却不能分配的情况发生。易产生碎片(越分越小,直到成为小空闲区不能分配)。 分区说明表 2. 动态分区管理常用数据结构 分区说明表、空闲区链表、位示图 (1)分区说明表 (2)空闲区链表 状态位:0表示空闲,1表示已分配 分区大小: 指针 前向指针:指向下一分区 后向指针:指向上一分区 (3)位图 每个分配单位对应位图中的一位,0表示空闲,1表示占用。 固定分区的分配与回收 分配 多作业队列:将大小相近的作业放在同一个等待队列中。 单作业队列:所有作业放在一个等待队列中。 回收:将分区表中对应分区状态置为未分配。 固定分区问题:内存空间浪费太大。 动态分区的分配与回收 (1)分配 算法:OS在空闲队列中查找满足≥请求主存大小的空闲区实施分配(修改相应的指针和flag)。 常见空闲区查找算法 空闲区表的组织 按空闲区大小的升序(或降序)组织; 按空闲区首址升序(或降序)组织。 查找算法:以空闲区表组织的方法为基础,采用不同的方式选择空闲区。 最佳匹配(最佳适应算法) 首次匹配(首次适应算法) 下次匹配(*) 最坏匹配 快速匹配(*) 1、最佳适应算法 思想:尽可能分配大小与请求相匹配的空闲区。 组织方式:空闲区表按空闲区大小从小到大组织。 分配 按申请的大小逐个与空闲区大小进行比较,找到与申请最接近的空闲区分配。 缺点:分割后的空闲区很小,直至无法使用,而造成浪费。 2、首次适应算法 思想:尽可能在低地址实施分配 保留高地址部分的大空闲区。 组织方式:按空闲区首址从小到大组织 3、最坏适应算法 思想:使分配后剩余空间最大 组织方式:空闲区表按空闲区大小由大到小排列。 分配 取表中的第一个表目,将从该空闲区中分配给申请者,然后修改空闲区的大小,并将它插入到空闲区表的适当位置。 取表中的第一个表目,若不能满足申请者的要求,则表示系统中无满足要求的空闲区,分配失败。 (2) 分区的回收 为了使得相邻的空白区不至于被切分为多个分区,所以回收时应尽可能地让相邻空白区合并成一个空闲区。 释放的空闲区与空闲区相邻有四种情况: 有上邻:将r合并到f1,修改空闲区大小,撤销r的分区描述器; 有下邻:将r合并到f2,修改空闲区大小,撤销f2的分区描述器,空闲区首地址为R的首地址; 有上、下邻:将r、f2 合并到f1,修改空闲区大小, 撤消r、f2分区描述器,空闲区首地址为f1的首地址; 无上、下邻:将r作为一个空闲区,并插入到空闲区表的适当位置。 分区管理的优缺点 主要优点 实现了多道程序共享内存; 实现分区管理的系统设计相对简单,不需要更多的系统软硬件开销; 实现存储保护的手段也比较简单。 主要缺点 内存利用不够充分。系统中总有一部分内存空间得不到利用,存在碎片。 内碎片:指分配给作业的存储空间中未被利用的部分。固定分区分配中存在。 外碎片:系统中无法利用的小存储块。动态分区分配中存在。 无法实现内存的扩充。 当进程的地址空间大于内存空间时,进程无法运行。也即进程的地址空间受实际内存空间的限制。(*) 必须连续存放。进程在内存中总是分配一块连续的存储空间,无法很好地利用碎片,虽然可以通过移动技术来整理内存空间,但代价较高。(*) 必须一次性将作业全部调入内存,若内存没有足够的空间,则等待。(*) 作业 复习本次课程内容 单一连续区内存分配 图5.7内存初始分配情况 图5.8内存分配变化过程 带有表格信息的分区格式 空闲区双向链表 (a)一段有5个进程和3个空闲区的内存 (b)对应的位示图 (c)用空闲区链表表示同样的信息 5.2.2分区的分配与回收 空闲区 * *
文档评论(0)