选用简单算法先来先服务算法,模拟实现磁盘调度,在程序中采用输入访问序列,磁头位置默认为53,因为是先来先服务算法所以不考虑其他因素,只考虑访问序列的先后顺序,就是你输入的访问序列就是最后磁盘调度的结果(磁头一次访问的磁道号顺序),这里也不对磁盘调度的具体内容做详细介绍,自己可查阅相关资料进行参考。
已下使我自己的简单实现的代码,因为不涉及很难的知识点,在最后的计算磁头移动的总道数的时候需要考虑上一次和本次寻道的道数的大小,并根据大的减去小的(或者直接使用绝对值运行进行减法工作)。
import java.util.*;
public class Disk_test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int poistion;
System.out.println("请输入磁盘访问数目:");
int num = sc.nextInt();
System.out.println("请输入磁盘访问序列:");
Disk[] d1 = new Disk[8];
for(int i = 0;i
= d1[i-1].getPoision()){
sum = sum + d1[i].getPoision()-d1[i-1].getPoision();
}else{
sum = sum + d1[i-1].getPoision()-d1[i].getPoision();
}
}
System.out.println();
System.out.println("磁头走过的总道数:"+sum);
}
}
class Disk {
//选择先来先服务
private int poision; //磁盘访问序列
private int Nowpoision = 53;
public Disk(int poision) {
super();
this.poision = poision;
}
public int getPoision() {
return poision;
}
public void setPoision(int poision) {
this.poision = poision;
}
public int getNowpoision() {
return Nowpoision;
}
public void setNowpoision(int nowpoision) {
Nowpoision = nowpoision;
}
}
这里的数字是我自己瞎写的,可以具体的要求自己编写。在类Disk中默认磁头位置已经设为53,当然你也可以根据具体情况进行设置。这就是这个简单的算法的实现,自己
也没有在代码中有很详细的注释,还是希望读者对这段简单的代码自己进行阅读,并且希望理解它,并最终对其升级,书写更高级一点的算法。