來自不同進程的磁盤 I/ 0 請求會構成一個隨機分布的請求隊列。
磁盤 I/ 0 調度的主要目標就是減少請求隊列中對應的平均柱面定位時間。
目前常用的磁盤調度算法有:
1. 先來先服務
2. 最短尋道時間優先
3. 掃描算法
4. 循環掃描算法。
先來先服務算法( First Come First Served, FCFS) 算法
- 這是一種最簡單的磁盤調度算法,它根據進程請求訪問磁盤的先后次序進 行調度。
- 此算法的優點是公平、簡單,且每個進程的請求都能依次得到處理,不會出現某一進程的請求長期得不到滿足的情況。
- 但此算法由於未對尋道進行優化,致使平均尋道時間可能很長。當用戶提出的訪問請求比較均勻地遍布整個盤面,而不具有某種集中傾向時(通常是這樣),該算法策 略導致了隨機訪問模式,即無法對訪問進行優化。在對盤的訪問請求比較多的情況 下,此策略將降低設備服務的吞吐量、增加響應時間,但各進程得到服務的 響應時間的變化幅度較小。
- 該算法適用於訪問請求不是很多,磁盤 I/0 負載較輕且每次讀寫多個連續扇區的情況,其算法實現最簡單。
最短尋道時間優先算法( Shortest Seek Time First, SSTF) 算法
- 考慮磁盤 I/ 0 請求隊列中各請求的磁頭定位位置,選擇從當前磁頭位置出發,移動距離或時間最少的磁盤 I/ 0 請求。
- 該算法的目標是使每次磁頭移動時間最少。它不一定是最短平均柱面定位時間,但比先來先服務算法有更好的性能。
- 該策略可以得到比較好的吞吐矗,有較低的平均響應時間。
- 其缺點是對用戶的服務請求的響應機會不是均等的,可能會有進程處於飢餓狀態。對中間磁道的訪問請求一般會得到最好的服務 ,對內、外兩側磁道的服務隨偏離中心磁道的距離而越遠越差 ,因而導致響應時 間的變化幅度很大,在服務 請求很多的情況下,對內 、外邊緣磁道的請求將會無限期地被延遲,因而有些請求的響應時間將不可預期 。
掃描算法( SCAN ) 算法
- 由於這種算法中磁頭移動的規律像電梯的運行,所以又稱為電梯調度算法。
- 在等候電 梯時,我們都希望電梯立即滿足自己的要求,但是,電梯自有它對乘客請求的響應算法。
- 電梯算法考慮兩個因素:
- 首先方向一致,其次距離最短。即先響應其請求方向與電梯移動方向一致的請求;
- 在方向一致的請求中,先響應電梯最先經其所在樓層的請求者。例如電梯在升到三樓時檢測到四個請求:二樓、四樓和六樓有人上樓,五樓有人要下樓,那么在假定未超出電梯容釐而且暫時沒有其他新請求出現的情況下,電梯的響應次序是 :四 樓、六樓、五樓、二樓。
- 選擇在磁頭前進方向上從當前位置移動最少的磁盤 I/ 0 請求執行 ,沒有前進方向上的請求時才改變方向。該算法是對 SSTF 算法的改進,磁盤 I/ 0 性能較好,且沒有進程會餓死。
- 該算法不僅考慮到欲訪問的磁道與當前磁道的柱面距離 ,更優先考慮磁頭的當前移動方向。即當磁頭正在自里向外運動時,該算 法要選擇的下一訪問對象是其欲訪問的磁道在當前磁道之外,又是距離最近的。直至再無更外的磁道需要訪問時,才將磁臂換向,自外向里運動。從而避免了飢餓 現象的出現。
循環掃描算法( Circular Scan, CSCAN ) 算法
- 循環掃描是指總在一個方向上使用掃描算法,當到達邊沿時直接移動到另一邊沿的第一個位置。
- 該算法可改進掃描算法對中間磁道的偏好。實驗表明, 該算法在中負 載或重負 載時 ,磁盤 I/ 0 性能比掃描算法好。循環掃描算法實 際上可以看成源於 C RT 電子束掃描線法。
- 循環掃描策略與基本掃描策略不同之處在於循環掃描是單向反復地掃描。當磁臂向內移動時 ,它對本次移動開始前到達的各訪問要求,自外向內地依次給予服務,直到對最內柱面上的訪問要求滿足后,磁臂直接向外移動,使磁頭停在 所有新的訪問要求的最外邊的柱面上。然后再對本次移動前 到達的各訪問要求依次給予服務。
- 它之所以被稱為循環掃描策略,是因為將磁盤各磁道視為一個環形緩 沖區似的構造一 首尾相連,最后一個磁道與第一個相接。若有磁頭能立即折返的驅動器則此算法才更有意義。