SCAN调度求平均寻道长度java实现
时间: 2023-11-09 07:05:37 浏览: 58
下面是一个简单的Java实现,用于计算SCAN磁盘调度算法的平均寻道长度:
```java
import java.util.Arrays;
public class SCAN {
public static int diskSize = 200;
public static int head = 50;
public static void main(String[] args) {
int[] requests = { 82, 170, 43, 140, 24, 16, 190 };
int[] distances = new int[requests.length];
int direction = 1; // 1表示向外,-1表示向内
Arrays.sort(requests);
int index = 0;
while (requests[index] < head) {
index++;
}
int i = index;
int j = index - 1;
for (int k = 0; k < distances.length; k++) {
if (direction == 1) {
if (i < requests.length) {
distances[k] = requests[i] - head;
head = requests[i];
i++;
} else {
direction = -1;
distances[k] = diskSize - head;
head = diskSize;
k--;
}
} else {
if (j >= 0) {
distances[k] = head - requests[j];
head = requests[j];
j--;
} else {
direction = 1;
distances[k] = head;
head = 0;
k--;
}
}
}
int totalDistance = 0;
for (int distance : distances) {
totalDistance += distance;
}
double averageDistance = (double) totalDistance / distances.length;
System.out.println("平均寻道长度:" + averageDistance);
}
}
```
其中,`diskSize`表示磁盘大小,`head`表示磁头当前位置,`requests`表示请求序列。首先,对请求序列进行排序,然后确定磁头的移动方向。在移动过程中,根据请求序列中请求的位置与磁头当前位置的关系,计算出磁头移动的距离,并更新磁头的位置。最后,计算所有移动距离的总和并除以请求序列长度,即可得到平均寻道长度。
注意:此代码仅供参考,实际使用中需要根据具体情况进行修改。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)