1. 程式人生 > >磁碟尋道排程問題

磁碟尋道排程問題

常用的磁碟排程演算法有四種:

     1. 先來先服務 (**FCFS**-first come first service)
     2. 最短尋道時間優先演算法(**FSST**-shorest seek time first)
     3. 掃描演算法(SCAN)也稱為電梯排程
     4. 迴圈掃描演算法(CSCAN)

先來先服務演算法:
按照請求訪問磁碟的先後順序進行排程,最簡單的一種排程演算法。
優點:簡單、公平
缺點:效率較低,存在磁頭反覆移動問題,增加服務時間,有損機械。

最短尋道時間優先演算法
每次尋找與當前磁軌距離最近的磁軌,使得每次尋道時間最短。演算法有較好的吞吐量,但是不能保證平均尋道時間最短。
優點:改善磁軌平均服務時間。
缺點:訪問不均勻,造成某些訪問請求長期無法響應。

掃描演算法
先考慮當前移動方向(自裡向外/自外向裡),再考慮與當前磁軌距離最近的。
自裡向外:下一磁軌在當前磁軌外側,且距離最近,依次類推,直到最外側磁軌才將磁臂換向為自外向裡。移動原則同前一致。
自外向裡:下一磁軌在當前磁軌內側且距離最近,依次類推,到最內側將磁臂換向為自裡向外,再按上述原則移動。
優點:克服最短尋道優先的缺點,同時考慮方向和距離,吞吐量較大,平均響應時間較少。
缺點:由於是擺動式的掃描方法,兩側磁軌被訪問的頻率仍低於中間磁軌。

迴圈掃描演算法
迴圈掃描演算法是對掃描演算法的改進。
自裡向外掃描,則尋道為當前磁軌外側且距離最近磁軌,直到最外側磁軌;再返回剩餘等待服務的最內側磁軌,自裡向外掃描。
自外向裡

掃描,則尋道為當前磁軌內側且距離最近磁軌,直到最內側磁軌;再返回剩餘等待服務的最外側磁軌,自外向裡掃描。

例項:
1、假設移動頭磁碟有200個磁軌(從0號到199號)。目前正在處理125號磁軌上的請求,而剛剛處理結束的請求是143號,如果下面給出的順序是按FIFO排成的等待服務佇列順序:
86,147,91,177,94,150,102,175,130

(1)先來先服務演算法
(125),86,147,91,177,94,150,102,175,130
移動距離=(125-86)+(147-86)+(147-91)+(177-91)+(177-94)+(150-94)+(150-102)+(175-102)+(175-130)=547


(2)最短尋道時間優先演算法
(125),130,147,150,175,177,102,94,91,86
移動距離=130-125+147-130+150-147+175-150+177-175+177-102+102-94+94-91+91-86=143
(3)掃描演算法
由於剛結束磁軌是143,目前是125,因此磁軌方向是減小方向,到最小;再從剩餘中最小到最大
(125),102,94,91,86,130,147,150,175,177

移動距離=125-102+102-94+94-86+130-86+147-130+150-147+175-150+177-175=130

(4)迴圈掃描演算法
由於剛結束磁軌是143,目前是125,因此磁軌方向是減小方向,到最小;再從剩餘中最大到最小。
(125),102,94,91,86,177,175,150,147,130
移動距離=125-102+102-94+94-91+91-86+177-86+177-175+175-150+150-147+147-130=177

2、當前磁軌100號,正向磁軌增加方向移動(右外向裡),請求佇列:23,376,205,132,61,190,29,4,40.若用SCAN演算法,則磁軌移動順序和距離分別為:
移動順序:(100),132,190,205,376,61,40,29,23,4
舉動距離:648