磁盤調度(先來先服務算法)

選用簡單算法先來先服務算法,模擬實現磁盤調度,在程序中採用輸入訪問序列,磁頭位置默認爲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,當然你也可以根據具體情況進行設置。這就是這個簡單的算法的實現,自己
也沒有在代碼中有很詳細的註釋,還是希望讀者對這段簡單的代碼自己進行閱讀,並且希望理解它,並最終對其升級,書寫更高級一點的算法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章