一 丶意義:良好的排程演算法,能減少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 磁臂的啟動時間約為...