基于顺序搜索动态分区分配算法
首次适应算法(FF)
:每次都从低地址开始查找,找到第一个满足大小的空闲分区。循环首次适应(NF)
:每次分配内存时从上次查找结束的位置开始查找空闲分区链,找到大小能满足要求的第一个空闲分区。最佳适应算法(BF)
:总是把能满足要求、又是最小的空闲分区分配给作业,避免“大材小用”。最坏适应算法(WF)
:和最佳适应相反,最大的空闲分区分配给作业。
基于索引搜索的动态分区分配算法
快速适应算法
:略。伙伴系统
:
具体例题
- 二进制地址为011011110000,块的大小为4和16的伙伴地址分别为多少?
题解:
- 块的大小为4= 2 2 2^2 22
地址011011110000可以被 2 3 2^3 23整除,所以伙伴地址位于下半区,是011011110100;- 块的大小为16= 2 4 2^4 24
地址011011110000不可以被 2 5 2^5 25整除,所以伙伴地址位于上半区,是011011100000;
- 某系统主存空间为1024KB,采用伙伴(Buddy system)系统分配器内存,对于下列请求序列:
作业1请求240KB
作业2请求120KB
作业3请求60KB
作业2释放120KB
作业4请求130KB
作业3释放60KB
请画出进行上述分配和回收后,内存实际使用的情况。
分析:伙伴系统中,当一个进程申请K字节内存空间时,系统会把一个大小为 2 U 2^{U} 2U字节的内存块 ( 2 U < K ≤ 2 U ) (2^{U}< K\leq 2^{U}) (2U<K≤2U)分配给它。如果没找到这样的内存块,但系统中还有更大的空闲块,则需将最接近要求的那个较大空闲块分为两个大小相等的块(这两个块被称作一对伙伴),直至找到合适大小的空闲块为止;回收时,如果两个相邻的空闲块为一对伙伴,则需要将它们合并成一个更大的空闲块。
其中阴影部分表示内部碎片