作業系統常見演算法

aoxiangguanjun發表於2013-04-29
一、程式(作業)排程演算法
l         先來先服務排程演算法(FCFS):每次排程是從就緒佇列中,選擇一個最先進入就緒佇列的程式,把處理器分配給該程式,使之得到執行。該程式一旦佔有了處理器,它就一直執行下去,直到該程式完成或因發生事件而阻塞,才退出處理器。特點:利於長程式,而不利於短程式。 

l         短程式(作業)優先排程演算法(SPF):它是從就緒佇列中選擇一個估計執行時間最短的程式,將處理器分配給該程式,使之佔有處理器並執行,直到該程式完成或因發生事件而阻塞,然後退出處理器,再重新排程。 

l         時間片輪轉排程演算法 :系統將所有的就緒程式按進入就緒佇列的先後次序排列。每次排程時把CPU分配給隊首程式,讓其執行一個時間片,當時間片用完,由計時器發出時鐘中斷,排程程式則暫停該程式的執行,使其退出處理器,並將它送到就緒佇列的末尾,等待下一輪排程執行。 

l         優先數排程演算法 :它是從就緒佇列中選擇一個優先權最高的程式,讓其獲得處理器並執行。 

l         響應比高者優先排程演算法:它是從就緒佇列中選擇一個響應比最高的程式,讓其獲得處理器執行,直到該程式完成或因等待事件而退出處理器為止。特點:既照顧了短程式,又考慮了程式到達的先後次序,也不會使長程式長期得不到服務,因此是一個比較全面考慮的演算法,但每次進行排程時,都需要對各個程式計算響應比。所以系統開銷很大,比較複雜。 

l         多級佇列排程演算法

基本概念:

   作業週轉時間(Ti)=完成時間(Tei)-提交時間(Tsi)

   作業平均週轉時間(T)=週轉時間/作業個數

   作業帶權週轉時間(Wi)=週轉時間/執行時間

   響應比=(等待時間+執行時間)/執行時間

二、儲存器連續分配方式中分割槽分配演算法
n         首次適應分配演算法(FF):對空閒分割槽表記錄的要求是按地址遞增的順序排列的,每次分配時,總是從第1條記錄開始順序查詢空閒分割槽表,找到第一個能滿足作業長度要求的空閒區,分割這個空閒區,一部分分配給作業,另一部分仍為空閒區。 

n         迴圈首次適應演算法:每次分配均從上次分配的位置之後開始查詢。 

n         最佳適應分配演算法(BF):是按作業要求從所有的空閒分割槽中挑選一個能滿足作業要求的最小空閒區,這樣可保證不去分割一個更大的區域,使裝入大作業時比較容易得到滿足。為實現這種演算法,把空閒區按長度遞增次序登記在空閒區表中,分配時,順序查詢。 

三、頁面置換演算法
l         最佳置換演算法(OPT) :選擇以後永不使用或在最長時間內不再被訪問的記憶體頁面予以淘汰。

l         先進先出置換演算法(FIFO):選擇最先進入記憶體的頁面予以淘汰。 

l         最近最久未使用演算法(LRU):選擇在最近一段時間內最久沒有使用過的頁,把它淘汰。 

l         最少使用演算法(LFU):選擇到當前時間為止被訪問次數最少的頁轉換。

四、磁碟排程
n         先來先服務(FCFS):是按請求訪問者的先後次序啟動磁碟驅動器,而不考慮它們要訪問的物理位置

n         最短尋道時間優先(SSTF):讓離當前磁軌最近的請求訪問者啟動磁碟驅動器,即是讓查詢時間最短的那個作業先執行,而不考慮請求訪問者到來的先後次序,這樣就克服了先來先服務排程演算法中磁臂移動過大的問題

n         掃描演算法(SCAN)或電梯排程演算法:總是從磁臂當前位置開始,沿磁臂的移動方向去選擇離當前磁臂最近的那個柱面的訪問者。如果沿磁臂的方向無請求訪問時,就改變磁臂的移動方向。在這種排程方法下磁臂的移動類似於電梯的排程,所以它也稱為電梯排程演算法。

n         迴圈掃描演算法(CSCAN):迴圈掃描排程演算法是在掃描演算法的基礎上改進的。磁臂改為單項移動,由外向裡。當前位置開始沿磁臂的移動方向去選擇離當前磁臂最近的哪個柱面的訪問者。如果沿磁臂的方向無請求訪問時,再回到最外,訪問柱面號最小的作業請求。

相關文章