磁碟排程(先來先服務演算法)
阿新 • • 發佈:2018-12-26
選用簡單演算法先來先服務演算法,模擬實現磁碟排程,在程式中採用輸入訪問序列,磁頭位置預設為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,當然你也可以根據具體情況進行設定。這就是這個簡單的演算法的實現,自己 也沒有在程式碼中有很詳細的註釋,還是希望讀者對這段簡單的程式碼自己進行閱讀,並且希望理解它,並最終對其升級,書寫更高階一點的演算法。