20.某系统的空闲分区如表5-3所示,采用可变分区分配策略处理作业。现有作业序列96KB、20KB、200KB,若采用首次适应算法和最佳适应算法来处理这些作业序列,则哪种算法能满足该作业序列的请求?为什么?表5-3 空闲分区表[1]分区号 分区大小 分区起始地址 1 32KB 100K 2 10KB 150K 3 5KB 200K 4 218KB 220K 5 96KB 530K
20.某系统的空闲分区如表5-3所示,采用可变分区分配策略处理作业。现有作业序列96KB、20KB、200KB,若采用首次适应算法和最佳适应算法来处理这些作业序列,则哪种算法能满足该作业序列的请求?为什么?
表5-3 空闲分区表[1]
分区号 分区大小 分区起始地址
1 32KB 100K
2 10KB 150K
3 5KB 200K
4 218KB 220K
5 96KB 530K
题目解答
答案
首先,我们来看一下空闲分区表,将其按分区号和分区大小进行排序,得到以下顺序:
32KB,起始地址:100K
10KB,起始地址:150K
5KB,起始地址:200K
218KB,起始地址:220K
96KB,起始地址:530K
现在我们分别用首次适应算法和最佳适应算法来处理作业序列96KB、20KB、200KB。
首次适应算法:
首次适应算法会从最小的空闲分区开始查找,找到第一个大于或等于当前作业大小的空闲分区,并分配该分区。如果找不到足够大的空闲分区,则拒绝该作业。
按照上述空闲分区顺序,处理作业序列96KB、20KB、200KB:
对96KB的作业:从最小的空闲分区(32KB)开始查找,发现32KB太小,继续查找下一个空闲分区(10KB),仍然太小。直到找到5KB的空闲分区,它足够容纳20KB的作业,所以分配5KB的空闲分区给20KB的作业。
对20KB的作业:继续从剩余的空闲分区中查找,发现32KB和10KB都太小,直到找到218KB的空闲分区,它足够容纳96KB和20KB的作业。所以分配218KB的空闲分区给96KB和20KB的作业。
对200KB的作业:剩余的空闲分区中没有足够大的分区可以容纳这个作业,所以无法满足该作业的请求。
最佳适应算法:
最佳适应算法会从所有空闲分区中找出最小的且大于或等于当前作业大小的空闲分区,并分配该分区。如果找不到足够大的空闲分区,则拒绝该作业。
按照上述空闲分区顺序,处理作业序列96KB、20KB、200KB:
对96KB的作业:从最小的空闲分区(32KB)开始查找,发现32KB太小,继续查找下一个空闲分区(10KB),仍然太小。直到找到5KB的空闲分区,它足够容纳20KB的作业,所以分配5KB的空闲分区给20KB的作业。
对20KB的作业:继续从剩余的空闲分区中查找,发现32KB和10KB都太小,直到找到96KB的空闲分区,它足够容纳96KB和20KB的作业。所以分配96KB的空闲分区给96KB和20KB的作业。
对200KB的作业:剩余的空闲分区中没有足够大的分区可以容纳这个作业,所以无法满足该作业的请求。
综上,无论是首次适应算法还是最佳适应算法都无法满足该作业序列的所有请求。
解析
首次适应算法会从最小的空闲分区开始查找,找到第一个大于或等于当前作业大小的空闲分区,并分配该分区。如果找不到足够大的空闲分区,则拒绝该作业。
- 对96KB的作业:从最小的空闲分区(32KB)开始查找,发现32KB太小,继续查找下一个空闲分区(10KB),仍然太小。直到找到5KB的空闲分区,它足够容纳20KB的作业,所以分配5KB的空闲分区给20KB的作业。
- 对20KB的作业:继续从剩余的空闲分区中查找,发现32KB和10KB都太小,直到找到218KB的空闲分区,它足够容纳96KB和20KB的作业。所以分配218KB的空闲分区给96KB和20KB的作业。
- 对200KB的作业:剩余的空闲分区中没有足够大的分区可以容纳这个作业,所以无法满足该作业的请求。
步骤 2:最佳适应算法处理作业序列
最佳适应算法会从所有空闲分区中找出最小的且大于或等于当前作业大小的空闲分区,并分配该分区。如果找不到足够大的空闲分区,则拒绝该作业。
- 对96KB的作业:从最小的空闲分区(32KB)开始查找,发现32KB太小,继续查找下一个空闲分区(10KB),仍然太小。直到找到5KB的空闲分区,它足够容纳20KB的作业,所以分配5KB的空闲分区给20KB的作业。
- 对20KB的作业:继续从剩余的空闲分区中查找,发现32KB和10KB都太小,直到找到96KB的空闲分区,它足够容纳96KB和20KB的作业。所以分配96KB的空闲分区给96KB和20KB的作业。
- 对200KB的作业:剩余的空闲分区中没有足够大的分区可以容纳这个作业,所以无法满足该作业的请求。
步骤 3:比较两种算法的结果
无论是首次适应算法还是最佳适应算法都无法满足该作业序列的所有请求。首次适应算法和最佳适应算法在处理作业序列时,都未能找到足够大的空闲分区来满足200KB的作业请求。