参考:《现代操作系统》page105. 《深入理解计算机操作系统》page567
首先假定我们知道每个进程所需要的内存,那么我们应该如何在内存中寻找合适的内存供进程使用??
1,首次适配算法:
首次适配算法指存储管理器,沿着段链表进行搜索直到找到一个足够大的空闲区域。如果空闲区域和进程所需要的区域刚好相等那么刚好,如果大则将该区域分为两部分,一部分供进程使用,另一部分成为新的空闲区域。首次适配算法很快因为它减少了搜索的次数,只要搜索到就分配。
2,下次适配算法:
它的工作方式和首次适配算法很像,不同点是每次找到合适的内存时都会记录当时的位置,而下次查找时都会从该节点查找,而不会从链表头在开始查找。(Bays 1977)的仿真证明该算法性能略低于首次适配算法。
3,最佳适配算法:
最佳适配算法搜索整个链表找出能够容纳进程的最小区域。最最佳适配算法试图找到最接近实际需要的空闲区域。最佳适配算法比前两个算法都要慢,因为每次都要搜索整个链表。但是让人感到意外的是它比前两个算法都浪费空间,因为它会产生大量的无法使用的小空闲区域。
4, 最差匹配算法:
对于最佳匹配算法会产生小的无法使用的内存,基于此又出现了最差匹配算法即:每次找最大的空闲区域,从而使新的空闲区域比较大可以继续使用。仿真表明该算法也不是一个好主意。
5,快速适配算法:
它为那些经常使用的空闲区维护单独的链表。如一个n项的表,该表的第一项指向内存大小为4k内存区域的表头,第二项指向8k等等。快算适配算法寻找一个大小指定的空闲区域是十分快速的,但是内存区域的合并仍然很慢。