磁碟排程演算法簡述

2022-08-26 07:36:07 字數 1857 閱讀 5156

一 丶意義:良好的排程演算法,能減少io讀取時間(磁碟讀取(最慢)+讀取+傳輸)  磁碟訪問時間=尋道時間+旋轉延遲時間+資料傳輸時間,

磁碟讀寫順序:由上直下(柱面磁軌),由外到裡(柱面排序,外磁軌速度最快),依次訪問對應扇區(512bytes)

計算機中,各儲存區域訪問速度為  暫存器約等號≈cache>記憶體》磁碟》其他外接物理裝置

系統每進行一次io中斷,進行資料讀寫,首先要進行命中測試,若不在register,cache,memory中,則進行磁碟讀取,先定址,再進行io讀入記憶體,讀入後才能被cpu使用。

由磁碟中讀寫資料占用時間公式可知,其最主要的是尋道時間,旋轉延遲時間,良好的磁碟排程演算法,能減少io讀寫時間,從而減少程序等待io時間,增加cpu利用率,防止磁臂黏著現象的發生。

二丶名詞解釋: 

1)磁臂粘著--------程式對某些磁軌頻繁訪問,如多次訪問同一磁軌,則io佇列中,多次對同一磁軌進行頻繁的讀取,導致其他磁軌的請求被擱置,即為磁臂黏著現象(類似於程序餓死)

三丶演算法簡述

1.先來先服務演算法(fcfs)----firstcomefirstserver

可使用鍊錶(若有數量上限則單設頭結點記錄請求數,超出則拒絕)和陣列(陣列長度限制為請求數量,防止越界),依據請求時間先後,對io請求進行佇列排列,依次出隊

優劣:公平、簡單;平均尋道時間可能較長

2.最短尋道演算法(sstf)

其訪問規則為距離當前磁頭最近的io請求進行服務,由「最近」一詞和磁碟讀寫順序可知,其可能會返回對乙個柱面的磁軌進行多次讀寫,造成磁碟黏著現象

基本實現:動態處理io請求,可使用鍊錶(雙向鍊錶,避免越界和前置判空操作)或者陣列(記憶體允許則最好用陣列,減少定址時間)實現,使用插入排序演算法,對io請求進行動態排序,

指標p指向磁頭的當前磁軌和扇區對應的線形距離數字,對前置後驅元素進行判定,以距離較短者作為下次磁碟訪問物件。

優劣:平均尋道時間比fcfs演算法短,但可能會出現「飢餓現象」和「磁臂粘著」現象。

3.掃瞄演算法(電梯演算法scan)

演算法實現:外嵌for對各柱面請求進行掃瞄,內嵌while包含倆個for迴圈,對選擇的柱面進行來回掃瞄(乙個增,乙個減,雙向),請求空則break。

優劣:消除了「飢餓」現象,但可能會出現「磁臂粘著」現象

4.迴圈掃瞄演算法(cscan)

原理:改進scan,不改變方向,單方向掃瞄,若無則返回到最外層需要訪問的磁軌(沒就0)

演算法實現:參考scan,while去除內建為單個for,設為單向

優劣: 改進了對於邊緣區磁軌訪問的不公平,但可能會出現「磁臂粘著」現象。

5.nstepscan

原理:為避免磁臂黏著現象發生,演算法將磁碟請求佇列分成若干個長度為n的子佇列,磁碟排程按fcfs演算法依次處理這些子佇列。而每處理乙個子佇列時又是按照scan演算法。

當處理某子佇列時,又有新的磁碟i/o請求,便將新請求程序放入其他佇列中,從而避免了粘臂現象。(邏輯上依然為scan演算法,但是限制了佇列數量,強制跳出某一柱面,減少了頻繁訪問同一磁軌帶來的黏著現象)

演算法實現:依據原理,設定大小為n的指標陣列(取餘訪問,實現迴圈),迴圈訪問各個佇列

6.fscan演算法,

演算法思想是,在掃瞄的過程中所有新產生的序列放在另外的乙個佇列中,當訪問完當前佇列之後,再訪問新產生的乙個佇列。這種演算法可以有效防止磁壁粘著現象。

實現:略

四丶其他策略

緩衝區策略:緩解高速讀寫裝置與低速io裝置帶來的長時間資料等待,設立多緩衝,雙緩衝等策略進行處理。

演算法處理策略:儘量減少io中斷次數,對可批量請求讀寫的資料進行批量請求,而不是乙個個資料進行請求讀寫

(如在大資料排序處理中,使用分治策略,分批處理資料,在記憶體允許的情況下,直接讀一批資料進行處理(多檔案io讀入),處理後在緩衝區儲存,滿後才寫入,減少中斷次數)

磁碟排程演算法

磁碟排程在多道程式設計的計算機系統中,各個程序可能會不斷提出不同的對磁碟進行讀 寫操作的請求。由於有時候這些程序的傳送請求的速度比磁碟響應的還要快,因此我們有必要為每個磁碟裝置建立乙個等待佇列,常用的磁碟排程演算法有以下四種 先來先服務演算法 fcfs 最短尋道時間優先演算法 sstf 掃瞄演算法 ...

磁碟排程演算法

一次磁碟讀寫操作的時間由尋找 尋道 時間 延遲時間和傳輸時間決定 1 尋找時間ts 活動頭磁碟在讀寫資訊前,將磁頭移動到指定磁軌所需要的時間。這個時間除跨越n條磁軌的時間外,還包括啟動磁臂的時間s,即 ts m n s。式中,m是與磁碟驅動器速度有關的常數,約為0.2ms,磁臂的啟動時間約為2ms。...

磁碟排程演算法

一次磁碟讀寫操作的時間由尋找 尋道 時間 延遲時間和傳輸時間決定。1 尋找時間ts 活動頭磁碟在讀寫資訊前,將磁頭移動到指定磁軌所需的時間。這個時間除跨越 n 條磁軌的時間外,還包括啟動磁臂的時間 s 即 ts m n s 備註 m 是與磁碟驅動器速度有關的常數,約為 0.2ms 磁臂的啟動時間約為...