可变分区查看源代码讨论查看历史
可变分区 | |
---|---|
可变分区, 存储 管理 不是预先把内存中的用户区域划分成若干固定分区,而是在作业要求装入内存时,根据用户作业的大小和当时内存空间使用情况决定是否为该作业分配一个分区。
因此分区大小不是预先固定的,而是按作业需求量来划分的;分区的个数和位置也不是预先确定的。它有效地克服了固定分区方式中,由于分区内部剩余内存空置造成浪费的问题。
基本信息
属于 存储管理 [1]
存储管理
基本思想
在作业要求装入内存时,若当时内存中有足够的存储空间满足该作业的需求,那就划分出一个与作业相对地址空间同样大小的分区分配给它使用。
内、外部碎片
内部碎片 外部碎片 [2] 存储管理中,把分配给了用户而用户未用的存储区称为"内部碎片" 存储管理中,把那些无法分配出去满足作业存储请求的空闲区称为"外部碎片"
解决的问题
采用地址动态重定位技术,使程序能在内存中移动,为空闲区合并提供保证。
记住各分区的使用情况,当一个分区被释放时,要能判定它的前、后分区是否为空闲区。若是空闲区,就进行合并,形成一个大的空闲区 给出分区分配算法,在有多个空闲区都满足作业的存储请求时,决定分配哪一个
空闲区的合并
前后相邻接分区的四种关系
释放分区的前、后邻接分区都是已分配区,没有合并的问题存在。
释放分区的前邻接分区是空闲区,后邻接分区是已分配区。释放区应该和前邻接的空闲区合并成一个新的空闲区。
释放区的前邻接分区是已分配区,后邻接分区是空闲区。因此,释放分区应该和后邻接的空闲区合并成一个新的空闲区。
释放区的前、后邻接分区都是空闲区。因此,释放区应该和前、后两个邻接的空闲区合并成一个新的空闲区。
空闲分区合并的时机
一是调度到某作业时,若系统的每个空闲区尺寸都小于它的需要,但空闲区总存储量大于它的存储请求,于是进行空闲区合并,得到一个大的空闲区,满足该作业的需要。
一是只要有作业运行完归还所占用的存储区,系统就进行空闲区的合并。
分区的管理
表格法
设置两张表:"已分配表"和"空闲区表"。其中"序号"是表目项的顺序号,"起始地址"、"尺寸"、"状态" 都是该分区的相应属性。由于系统中分区的数目是变化的,因此每张表格中的表目项数要足够的多,暂时不用的表目项的状态被设为"空"。
作业提出存储需求时,查空闲区表里状态为"空闲"的表目项。若该项的尺寸能满足所求,就将它一分为二:分配出去的那部分在已分配表里找一个状态为"空" 的表目项进行登记,剩下的部分仍在空闲区表里占据一个表目项。
若有作业运行结束,则根据作业名到已分配表里找到它的表目项,将该项的 "状态"改为"空",随之在空闲区表里寻找一个状态为"空"的表目项,把释放分区的信息填入,并将表目项状态改为"空闲"。
单链表法
基本思想把内存中每个空闲分区视为一个整体,在它里面开辟出两个单元,一个存放该分区的长度(size),一个存放它下一个空闲分区的起址(next),操作系统开辟一个单元,存放第1个空闲分区的起址,这个单元称为"链首指针"。最后一个空闲分区的next里存放标志"NULL" 。这样一来,
系统里所有空闲分区被next连接成一个链表。从链首指针出发,顺着各个空闲分区的next往下走,就能到达每一个空闲分区。 存储分配对提出的任何一个存储请求,从空闲区链表首指针开始查看一个个空闲区。若有满足要求的,按尺寸分配,调整next指针;若到达NULL未见满足要求,则分配失败。
存储释放作业完成任务后,将占用的存储区释放,链入空闲区链表(要调整指针和空闲区合并)。
什么是战时状态
它是指当国家安全受到严重威胁时,将军队处于最高级的备战准备,并向全国发布战争动员令的一种战斗紧张形势。
交战国之间的敌对状态。一旦进入战争状态,交战国之间的外交关系、经济贸易等关系即告断绝,原签订的协议也告中止。双方将撤外交人员和侨民。战争状态通常以签订停战或和平协定而告结束,也有战胜国单方面宣布结束战争状态的。
通常需要国家间宣战,表示正式进入战争状态,但也有例外。例如,德国突袭波兰,日本偷袭珍珠港。
扩展资料
战时状态开始后,交战国之间的关系由和平关系转变为战时关系,所产生的法律后果是:
①外交和领事关系断绝
②关于战争和中立的条约和习惯法开始实施
③商务关系一般断绝;交战国人民之间的契约废止或停止执行。
④处在敌国领土上或敌国占领区内的交战国人民,过去往往被拘禁,18世纪以后逐渐形成允许在适当期限内撤退的惯例