严蔚敏教材讲义动态存储管理.pptxVIP

  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文档。上传文档
查看更多
第1页/共18页 对操作系统和编译程序来说,存储管理都是一个复杂而又重要的问题。不同语言的编译程序和不同的操作系统可以采用不同的存储管理方法。它们采用的具体做法,将在后续课程——编译原理和操作系统中学习。 动态存储管理的基本问题是系统如何应用户提出的“请求”分配内存?又如何回收那些用户不再使用而“释放”的内存,以备新的“请求”产生时重新进行分配? 下面将简单讨论利用不同策略进行动态存储管理的方法。 第一页,共19页。第2页/共18页8.2 可利用空间表及分配方法 利用可利用空间表进行动态存储分配的方法一般会利用目录表或链表记录所有空闲块。目录表的情况比较简单,这类系统将在操作系统课程中作详细介绍,在此仅就链表的情况进行讨论。 可利用空间表中包含所有可分配的空闲块,每一块是链表中的一个结点。当用户请求分配时,系统从可利用空间表中删除一个结点分配之;当用户释放其所占内存时,系统即回收并将它插入到可利用空间表中。因此,可利用空间表亦称作“存储池”。根据系统运行的不同情况,可利用空间表可以有下列三种不同的结构形式:第二页,共19页。第3页/共18页 第一种情况,系统运行期间所有用户请求分配的存储量大小相同。对此类系统,通常的做法是,在系统开始运行时将归它使用的内存区按所需大小分割成若干大小相同的块,然后用指针链接成一个可利用空间表。 第二种情况,系统运行期间用户请求分配的存储量有若干种大小的规格。对此类系统,一般情况下是建立若干个可利用空间表,同一链表中的结点大小相同。 第三种情况,系统在运行期间分配给用户的内存块的大小不固定,可以随请求而变。因此,可利用空间表中的结点即空闲块的大小也是随意的。通常,操作系统中的可利用空间表属这种类型。第三页,共19页。第4页/共18页 可利用空间表的第三种结构中的结点大小不同,则在分配时就有一个如何分配的问题。假设某用户需大小为n的内存,而可利用空间表中仅有一块大小为m≥n的空闲块,则只需将其中大小为n的一部分分配给申请分配的用户,同时将剩余大小为m-n的部分作为一个结点留在链表中即可。然而,若可利用空间表中有若干个不小于n的空闲块时,该分配哪一块呢?通常,可有三种不同的分配策略: (1)首次拟合法。从表头指针开始查找可利用空间表,将找到的第一个大小不小于 n的空闲块的一部分分配给用户。 (2)最佳拟合法。将可利用空间表中一个不小于”且最接近n的空闲块的一部分分配给用户。 (3)最差拟合法。将可利用空间表中不小于”且是链表中最大的空闲块的一部分分配给用户。 第四页,共19页。第5页/共18页 因此,不同的情景需采用不同的方法,通常在选择时需考虑下列因素:用户的逻辑要求;请求分配量的大小分布;分配和释放的频率以及效率对系统的重要性等等。 在实际使用的系统中回收空闲块时还需考虑一个“结点合并”的问题。这是因为系统在不断进行分配和回收的过程中,大的空闲块逐渐被分割成小的占用块,在它们重又成为空闲块回收之后,即使是地址相邻的两个空闲块也只是作为两个结点插入到可利用空间表中,以致使得后来出现的大容量的请求分配无法进行,为了更有效地利用内存,就要求系统在回收时应考虑将地址相邻的空闲块合并成尽可能大的结点。换句话说,在回收空闲块时,首先应检查地址与它相邻的内存是否是空闲块。第五页,共19页。第6页/共18页8.3边界标识法 边界标识法(boundary tag method)是操作系统中用以进行动态分区分配的一种存储管理方法,它属于上一节讨论中的第三种情况。系统将所有的空闲块链接在一个双重循环链表结构的可利用空间表中;分配可按首次拟合进行,也可按最佳拟合进行。系统的特点在于:在每个内存区的头部和底部两个边界上分别设有标识,以标识该区域为占用块或空闲块,使得在回收用户释放的空闲块时易于判别在物理位置上与其相邻的内存区域是否为空闲块,以便将所有地址连续的空闲存储区组合成一个尽可能大的空闲块。下面分别就系统的可利用空间表的结构及其分配和回收的算法进行简单讨论。第六页,共19页。第7页/共18页 8.3.1 可利用空间表的结构 可利用空间表中的结点结构如下所示: head foot 它表示一个空闲块。整个结点由三部分组成。其中space为一组地址连续的存储单元,是可以分配给用户使用的内存区域,它的大小由head中的size域指示,并以头部head和底部foot作为它的两个边界;在head和foot中分别设有标志域tag,且设定空闲块中tag的值为“0”,占用块中tag的值为“1”;foot位于结点底部,因此它的地址是随结点中space空间的大小而变的。 llinktagsizerlink spaceuplinktag第七页,共19页。第8页/共18页 8.3.2 分配算法 分配的算法比

文档评论(0)

kuailelaifenxian + 关注
官方认证
文档贡献者

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

认证主体太仓市沙溪镇牛文库商务信息咨询服务部
IP属地上海
统一社会信用代码/组织机构代码
92320585MA1WRHUU8N

1亿VIP精品文档

相关文档