设有如下磁道访问请求序列: 23,5,98, 14,66,25,78,34,66,74,56,87,12,39,71,49,58 当前磁头在50道,上次访问的磁道是18道。 试计算SSTF算法、SCAN和CSCAN三种调度算法下的平均寻道长度,并比较结果。
时间: 2024-06-13 07:09:55 浏览: 88
以下是三种调度算法下的平均寻道长度的计算过程和比较结果:
1. SSTF算法(最短寻道时间优先):
首先,计算当前磁头到每个请求磁道的距离,得到距离序列:
```
27, 45, 48, 36, 16, 25, 28, 16, 16, 18, 6, 37, 38, 11, 21, 1, 8
```
然后,每次选择距离当前磁头最近的磁道进行访问,得到访问序列:
```
49, 58, 39, 34, 25, 23, 5, 12, 14, 66, 66, 56, 71, 74, 78, 87, 98
```
最后,计算平均寻道长度:
```
(50-49) + (49-58) + (58-39) + (39-34) + (34-25) + (25-23) + (23-5) + (5-12) + (12-14) + (14-66) + (66-66) + (66-56) + (56-71) + (71-74) + (74-78) + (78-87) + (87-98) = 640
640 / 17 ≈ 37.65
```
2. SCAN算法(电梯算法):
首先,将请求序列按照磁道号从小到大排序,得到排序后的序列:
```
5, 12, 14, 23, 25, 34, 39, 49, 56, 58, 66, 66, 71, 74, 78, 87, 98
```
然后,将当前磁头向右移动,直到找到第一个大于当前磁头的请求磁道,然后改变方向,向左移动,直到找到最小的请求磁道,得到访问序列:
```
58, 56, 49, 39, 34, 25, 23, 14, 12, 5, 23, 25, 34, 39, 49, 56, 58, 66, 66, 71, 74, 78, 87, 98
```
最后,计算平均寻道长度:
```
(50-58) + (58-56) + (56-49) + (49-39) + (39-34) + (34-25) + (25-23) + (23-14) + (14-12) + (12-5) + (5-23) + (23-25) + (25-34) + (34-39) + (39-49) + (49-56) + (56-58) + (58-66) + (66-66) + (66-71) + (71-74) + (74-78) + (78-87) + (87-98) = 640
640 / 23 ≈ 27.83
```
3. CSCAN算法(循环扫描算法):
首先,将请求序列按照磁道号从小到大排序,得到排序后的序列:
```
5, 12, 14, 23, 25, 34, 39, 49, 56, 58, 66, 66, 71, 74, 78, 87, 98
```
然后,将当前磁头向右移动,直到找到最大的请求磁道,然后移到最小的请求磁道,再向右移动,直到找到上次访问的磁道,得到访问序列:
```
58, 66, 71, 74, 78, 87, 98, 5, 12, 14, 23, 25, 34, 39, 49, 56, 66, 58
```
最后,计算平均寻道长度:
```
(50-58) + (58-66) + (66-71) + (71-74) + (74-78) + (78-87) + (87-98) + (98-5) + (5-12) + (12-14) + (14-23) + (23-25) + (25-34) + (34-39) + (39-49) + (49-56) + (56-66) + (66-58) = 680
680 / 18 ≈ 37.78
```
综上所述,SSTF算法的平均寻道长度为37.65,SCAN算法的平均寻道长度为27.83,CSCAN算法的平均寻道长度为37.78。可以看出,SCAN算法的平均寻道长度最小,最优秀,而SSTF算法和CSCAN算法的平均寻道长度相近,但都比SCAN算法大。因此,在这个例子中,推荐使用SCAN算法进行磁盘调度。