可变分区

百科

可变分区 存储管理 不是预先把内存中的用户区域划分成若干固定分区,而是在作业要求装入内存时,根来自据用户作业的大小和当架称于引再时内存空间使用情况决360百科定是否为该作业分配一个分区。因此分区大小不是预先固定的,而是按作业需求量来划分的讨蛋针日需而;分区的个数和位置也不是预先确定的。它有效地克服了固定分区方式中,由于分区内部剩余内存空然百找置造成浪费的问年定考城朝题。

  • 中文名称 可变分区
  • 所属学科 计算机

存储管理

基本思想

  在作业要求装入内存时,若当时内存中有足够的存储空间满足该作业的需求,那就划分出一个与作业相对地址空间同样大小的分区分配给它使用。

内、外部碎片

内部碎片外部碎片
存储管理中,把分配给了用户而用户未用的存储区称为"内部碎片"

  存储管理中,把那些无法分配出去满眼虽足作业存储请求的空闲区称为"外来自部碎片"

解决的问题

  1. 采用地址动态重定位技术,使程序能在内存中移动,为空闲区合并提供保证。
  2. 记住各分区的使用情况,当一个分区被释放时,要能判定它的前、后分区是否为空闲区。若是空闲区,就进行合并,形成一个大的空闲区
  3. 给出分区分配算法,在有多个空闲区都满足作业的存储请求时,决定分配哪一个

空闲区的合并

  前后360百科相邻接分区的四种关系

  • 释放分区的前、后邻接分区都是已分配区,没有合并的问题存在。
  • 释放分区的前邻接分区是空闲区,后邻接分区是已分配区。释放区应该和前邻接的空闲区合并成一个新的空闲区。
  • 释放区的前邻接分区是已分配区,后邻接分区是空闲区。因此,释放分区应该和后邻接的空闲区合并成一个新的空闲区。
  • 释放区的前、后邻接分区都是空闲区。因此,释放区应该原矛玉参岩布经迅眼虽金和前、后两个邻接的空闲区合并成一个新的空闲区。

  空闲分区合并的时

  • 一是调度到某作业时,各增轻声整除英鲜罗婷若系统的每个空闲区尺寸都小于它的需要,但空算技身合鲜兵闲区总存储量大于它的存储请求,液工维状阶于是进行空闲区合士磁并,得到一个大的空关效超二闲区,满足该作业的需要。
  • 一是只要有作业运行完归还所占用的存储区,系统就进行空闲区的合并

分区的管理

格法

  1. 设置两张表:"已分配表"和"空闲区表"。其中"序号"是表目项的顺序号,"起始地址"、"尺寸"、"状态" 都是该分区的相应属性。由于系统中分区的数目是变化的,因此每张表格中的表目项数要足够来自的多,暂时不用的表目项的状态被设为"空"。
  2. 作业提出存储需求时,查空闲区表360百科里状态为"空闲"的表目项。若该项的尺寸能满足所求,就将它一分为二乐任搞居权:分配出去的那部分在已分配表里找一个状态胞研那剧且伟方刚今般为"空" 的表目项进行登记,剩下的部分仍在空闲区表里占据一个表目项。
  3. 称困若有作业运行结束,则根据作业名到已分配表里找到它的表目项,将该项的 "状态"改为"空",随之在空闲区表里寻找一个状态为"空"的表目项,把释放分区的信息填入,并将表目项状态改为"空闲"。

单链表穿星兰度群

  1. 基本思想把内存中每个空闲分区视为一个整体,在它里面开辟出两个单元,一个存放该分区的长度(size),一个存放它下一个空闲分区的起址(next),操作系统开辟一个单元,存放第1个决部化复判矛研兴岁春罗空闲分区的起址,这个单元称为"链首指针"。最后一个空闲分区的next里存放标志"NULL" 。这样一来,系统里所有空闲分区被next连接成一个链表。从链首指针出发,顺着各个空闲分区的next往下走,就能到达每一个空闲分区。
  2. 存储分配对提出的任负画快消错素草创决乙何一个存储请求,从空闲区链表首指针开始查看一个个空闲区。若有满足要求的,按尺寸分配,调整next指针;若到达NULL未见满足要求,则分配失败。
  3. 存储释放作业完成任务后,将占用的存储区释放,链入空闲区链表(要调整指针和空闲区合并)。
标签:
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com