SSTF磁盘调度求平均寻道长度java实现
时间: 2023-11-09 18:05:37 浏览: 83
SSTF(Shortest Seek Time First)磁盘调度算法是一种基于寻道时间最短的磁盘调度算法。下面是Java实现SSTF磁盘调度算法的示例代码,其中requests是一个包含所有磁盘请求的数组,head是磁盘头的初始位置:
```
public static int sstfDiskScheduling(int[] requests, int head) {
int totalSeek = 0;
int currentTrack = head;
int[] temp = Arrays.copyOf(requests, requests.length);
for (int i = 0; i < requests.length; i++) {
int shortest = Integer.MAX_VALUE;
int shortestIndex = 0;
for (int j = 0; j < temp.length; j++) {
int distance = Math.abs(currentTrack - temp[j]);
if (distance < shortest) {
shortest = distance;
shortestIndex = j;
}
}
totalSeek += shortest;
currentTrack = temp[shortestIndex];
temp[shortestIndex] = Integer.MAX_VALUE;
}
return totalSeek;
}
```
其中,totalSeek表示总的寻道长度,currentTrack表示当前磁道的位置,temp是一个使用Arrays.copyOf()函数对原数组进行复制得到的新数组,用于标记已经被选中的磁道。在每一次循环中,我们遍历新数组temp,找到与当前磁道距离最短的磁道,将其加入总的寻道长度中,并将当前磁道移动到该磁道。然后将该磁道在temp中标记为已选中,继续进行下一次循环。最后返回总的寻道长度即可。
阅读全文