1. 程式人生 > >linux磁碟請求電梯排程演算法研究

linux磁碟請求電梯排程演算法研究

1.電梯簡介

       電梯排程演算法主要適用於INUX I/O磁碟請求排程。磁碟結構如下圖所示,磁碟主要由盤面和磁頭組成。磁碟每次進讀寫請求時,需要給磁碟驅動器一個地址,磁碟驅動器根據給定地址計算出相應的扇區,然後將磁頭移動到需要訪問的扇區,開始進行讀寫。                              讀寫磁碟時,轉動磁頭實際上很耗費時間,如果不採用排程策略,磁頭直接根據請求進行直接訪問,則必定會造成時間的浪費。比如以下這種訪問方式,訪問序列為 盤面1的10,70,20,30,50,如果順序訪問,則是10-》70,70-》20,20-》30,30-》50,這樣磁頭實際上轉了2圈,勢必造成一種浪費。採用電梯排程策略,訪問順序變成這樣10->20->30->50->70,磁頭轉動一圈就可以滿足所有的訪問請求,從而節約I/O訪問時間,提高效率。
     

2.理論原理

      電梯排程策略實際上提供了一種思路,在進行資料訪問的同時,如果有新的請求到來,直接將其按照升序插入到等待佇列中。磁碟每次直接從等待佇列中取出相應的邏輯地址,直接進行磁碟訪問。當然這種排程策略也存在缺陷,如果在某一塊地址區域磁碟訪問特別頻繁,可能會造成處在等待序列末尾的請求“飢餓”,也就是隊尾的請求需要等待很長時間才能滿足。排程策略的本質是一種排序演算法,對排序佇列的一種操作,這種佇列採用連結串列實現比較容易。
3.程式碼實現 4.總結