所谓顺序搜索,指的是依次搜索空闲分区链上的空闲分区,去寻找一个其大小能满足要求的分区。
主要包含以下四种:
(1)首次适应算法(FF):FF要求空闲分区链以地址递增的顺序链接,从链首开始查找,直至找到第一个满足要求的分区,然后按照作业的大小,从该分区中划出一片内存空间。若从链首到链尾都找不到一个空闲分区,则分配失败。
(2)循环首次适应算法(NF):为避免低址部分留下许多小的空闲分区,以及减少查找可用空闲分区的开销,NF在查找时不再每次都从链首开始,而是从上一次找到的空闲分区的下一个空闲分区开始。为实现此算法,应该设置一起始查找指针,用于指示下一次起始查找的位置。该算法能使内存中的空闲分区分布的更加均匀,从而减少了查找空闲分区的开销,但这样会缺乏大的空闲分区。
(3)最佳适应算法(BF):所谓最佳是指,每次分配内存时,总是把能满足要求,又是最小的空闲分区分配给作业。为加速查找,该算法要求将空闲分区按从小到大的顺序排列。孤立的看,最佳适应算法似乎是最佳的,然而宏观上却不一定。因为每次分配后所切割下来的剩余部分总是最小的,这样会在存储器中留下许多难以利用的碎片。
(4)最坏适应算法(WF):与BF算法相比,其策略正好相反,在扫描整个空闲分区时,总是挑选一个最大的空闲分区,从中切割一块空间分配给作业,这样可避免小碎片的产生。