假设某计算机系统的内存大小为256K,在某一时刻内存的使用情况如下表所示
起始地址 | 0K | 20K | 50K | 90K | 100K | 105K | 135K | 160K | 175K | 195K |
状态 | 已用 | 未用 | 已用 | 已用 | 未用 | 已用 | 未用 | 已用 | 未用 | 已用 |
容量 | 20K | 30K | 40K | 10K | 5K | 30K | 25K | 15K | 20K | 25K |
此时,若进程顺序请求20K和5K的存储空间,系统采用某种算法为进程分配内存,分配后的内存情况如下表所示。
起始地址 | 0K | 20K | 50K | 90K | 100K | 105K | 135K | 160K | 175K | 195K |
状态 | 已用 | 未用 | 已用 | 已用 | 已用 | 已用 | 未用 | 已用 | 已用 | 已用 |
容量 | 20K | 30K | 40K | 10K | 5K | 30K | 25K | 15K | 20K | 25K |
那么系统采用的是什么分配算法
最佳适配
最差适配
首次适配
下次适配
答案
最佳适配
解析
从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。
为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。
该算法保留大的空闲区,但造成许多小的空闲区。