动态分区存储管理..ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态分区存储管理..ppt

4.动态分区时的回收与拼接 (b)合并后 低地址 高地址 占用区1 进程 P 空闲区F2 低地址 高地址 空闲区F2 占用区1 4.动态分区时的回收与拼接 (c) 若释放区R的高、低地址部分都邻接一个空闲区。 应将三个分区合并为一个大空闲区,并记为F1。 先将R与F2合并,记为F2。 再将F 2与F1合并,并将F2从链中删除。 空闲区F1 释放区R 空闲区F2 空闲区F1 合并后 4.动态分区时的回收与拼接 (d)若释放区R上下都不邻接空闲区,将其插入空闲区链的适当位置即可。 ?(最先适应法): int malloc(struct map *mp,int size) {//空闲表指针mp,作业大小size register int regint; register struct map *bp; //从mp开始,只要size不等于0,逐个地址检查 动态分区的分配算法提示: … … m_addr m_size m_addr m_size 空闲区 已分配 空闲区 已分配 空闲区 已分配 mp for (bp=mp;bp-m_size;bp++) { if(bp-m_size=size){ { regint=bp-m_addr; bp-m_addr+=size; if((bp-m_size-=size)==0)//赋值并判断 do{ bp++; (bp-1)-m_addr=bp-m_addr; }while((bp-1)-m_size=bp-m_size); return(regint);}} return(0);} … … m_addr m_size m_addr m_size 空闲区 已分配 已分配 空闲区 已分配 mp bp * * * * * 分配算法主要用于动态分区的情况 * 分配算法主要用于动态分区的情况 第四章 存储器管理 第四章 存储器管理 第四章 存储器管理 第四章 存储器管理 4.3.3 动态分区分配 1.分区分配法的思想和数据结构 固定分区主存利用率不高,使用起来不灵活,所以出现了可变分区的管理技术。 动态分区原则:存储空间的划分是在作业装入时进行的。从可用的自由存储空间内,划出一个大小正好等于作业大小的存储区,并分配给这一作业。 动态分区,在系统初启时,除了操作系统中常驻内存部分之外,只有一个空闲分区。 4.3.3 动态分区分配 进程 A(8K) 进程 D(124K) 进程 B(16K) 进程 C(64K) … OS 进程A(8K) 进程B(16K) 进程C(64K) 进程D(124K) OS 进程A(8K) 进程B(16K) 进程C(64K) OS 进程A(8K) 进程B(16K) OS 进程A(8K) 内存分配变化过程 OS A(8K) 8K空闲区 B(16K) E(50K) D(124K) 14K空闲区 F(16K) OS A(8K) 8K空闲区 空闲区16K E(50K) F(16K) 空闲合并 124+14 =138K 进程E(50K) 进程F(16K) 进入内存 进程B(16K) 进程D(124K) 完成 OS A(8K) 24K空闲区 B(16K) C完成(64K) 空闲区 D(124K) 4.3.3 动态分区分配 动态分区存储管理可采用多种数据结构对内存进行管理 图 可用表、自由链及请求表 动态分区优缺点 优点: 内存利用率提高,避免了内碎片 缺点: 出现了外碎片(分区之间未被利用的空间) 2.动态分区分配与回收 对于请求表中要求内存长度,从可用表和自由链中找出合适的空闲区。 分配空间区之后,更新可用表或自由链。 进程或作业释放内存资源时,和相邻的空间区进行链合并,更新可用表或自由链。 3.动态分区分配算法 ① 最先适应法(FF,FirstFit) 要求可用表或自由链按起始地址递增的次序排列。 从表头查询,一旦找到大小满足的分区就结束探索。 例题:如图所示是某一个时刻J1、J2、J3、J4在内存中的分配情况、空闲区表和已分区表,它们的长度分别是15KB、10KB、12KB、10KB。J5和J6两个新作业的长度分别为5KB和13KB。按照最先适应算法进行内存分配,描述分配后内存、空闲区表以及已分区表的情况。 3.动态分区分配算法 最先适应算法分配前的状态 起始地址 长度 状态 0K 15K J1 38K 10K J2 68K 12K J3 110K 10K J4 已分区表 0 J1 J4 J3 J2 15 38 48 68 80 110 120 起始地址 长度 状态 15K 23K 未分配 48K 20K 未分配 80K 30

文档评论(0)

文档资料 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档