的空闲分区分配给作业。 但最优适应算法容易出现找到的一个分区可能只比作
业所需求的长度略大一点的情行,这时,空闲区分割后剩下的空闲区就很小以致
很难再使用,降低了存的使用率。为解决此问题,设定一个限值 minsize,如果
空闲区的大小减去作业需求长度得到的值小于等于 minsize,不再将空闲区分成
己分分区和空闲区两局部,而是将整个空闲区都分配给作业。
存分配与回收所使用的构造体:
为便于对存的分配和回收,建立两表记录存的使用情况。一为记录作业占用
分区的“存分配表〞,容包括分区起始地址、长度、作业名/标志〔为 0 时作为
标志位表示空栏目〕;一为记录空闲区的“空闲分区表〞,容包括分区起始地址、
长度、标志〔0 表空栏目,1 表未分配〕。两表都采用顺序表形式。
关于分配留下的存小碎片问题:
当要装入一个作业时,从“空闲分区表〞中查找标志为“1〞〔未分配〕且
满足作业所需存大小的最小空闲区,假设空闲区的大小与作业所需大小的差值小
于或等于 minsize,把该分区全局部配给作业,并把该空闲区的标志改为“0〞
〔空栏目〕。同时,在已分配区表中找到一个标志为“0〞的栏目登记新装人作业
所占用分区的起始地址,长度和作业名。假设空闲区的大小与作业所需大小的差
值大于 minsize。那么把空闲区分成两局部,一局部用来装入作业,另外一局部
仍为空闲区。这时只要修改原空闲区的长度,且把新装人的作业登记到已分配区
表中。
存的回收:
在可变分区方式下回收存空间时,先检查是否有与归还区相邻的空闲区〔上
邻空闲区,下邻空闲区〕。假设有,那么将它们合件成一个空闲区。程序实现时,
评论0
最新资源