選用簡單算法先來先服務算法,模擬實現磁盤調度,在程序中採用輸入訪問序列,磁頭位置默認爲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;
}
}