操做系統經常使用調度算法

操做系統經常使用調度算法算法

一.先來先服務調度算法ide

先來先服務(FCFS)調度算法是一種最簡單的調度算法,該算法既可用於做業調度,也可用於進程調度。當在做業調度中採用該算法時,每次調度都是從後備做業隊列中選擇一個或多個最早進入該隊列的做業,將它們調入內存,爲它們分配資源、建立進程,而後放入就緒隊列。在進程調度中採用FCFS算法時,則每次調度是從就緒隊列中選擇一個最早進入該隊列的進程,爲之分配處理機,使之投入運行。該進程一直運行到完成或發生某事件而阻塞後才放棄處理機。性能

優缺點:FCFS調度算法的特色是算法簡單,但效率低;對長做業比較有利,但對短做業不利(相對SJF和高響應比);有利於CPU繁忙型做業,而不利於I/O繁忙型做業。優化

二.短做業優先調度算法spa

短做業(進程)優先調度算法SJ(P)F,是指對短做業或短進程優先調度的算法。它們能夠分別用於做業調度和進程調度。短做業優先(SJF)的調度算法是從後備隊列中選擇一個或若干個估計運行時間最短的做業,將它們調入內存運行。而短進程優先(SPF)調度算法則是從就緒隊列中選出一個估計運行時間最短的進程,將處理機分配給它,使它當即執行並一直執行到完成,或發生某事件而被阻塞放棄處理機時再從新調度。操作系統

缺點:須要事先預知做業的運行時間,對長做業很是不利,徹底爲考慮緊迫程度,所以不能保證緊迫性做業獲得及時解決,採用短做業優先調度算法沒法實現人機交互。指針

三.高優先權優先調度算法對象

1.優先權調度算法類型blog

(1)非搶佔是優先權調度算法排序

  在這種方式下,系統一旦把處理機分配給就緒隊列中優先權最高的進程後,該進程便一直執行下去,直至完成;或因發生某事件使該進程放棄處理機時,系統方可再將處理機從新分配給另外一優先權最高的進程。這種調度算法主要用於批處理系統中;也可用於某些對實時性要求不嚴的實時系統中。

(2)搶佔式優先權調度算法

     在這種方式下,系統一樣是把處理機分配給優先權最高的進程,使之執行。但在其執行期間,只要又出現了另外一個其優先權更高的進程,進程調度程序就當即中止當前進程(原優先權最高的進程)的執行,從新將處理機分配給新到的優先權最高的進程。所以,在採用這種調度算法時,是每當系統中出現一個新的就緒進程i 時,就將其優先權Pi與正在執行的進程j 的優先權Pj進行比較。若是Pi≤Pj,原進程Pj便繼續執行;但若是是Pi>Pj,則當即中止Pj的執行,作進程切換,使i 進程投入執行。顯然,這種搶佔式的優先權調度算法能更好地知足緊迫做業的要求,故而經常使用於要求比較嚴格的實時系統中,以及對性能要求較高的批處理和分時系統中

2.高響應比優先調度算法

  在批處理系統中,短做業優先算法是一種比較好的算法,其主要的不足之處是長做業的運行得不到保證。若是咱們能爲每一個做業引入前面所述的動態優先權,並使做業的優先級隨着等待時間的增長而以速率a 提升,則長做業在等待必定的時間後,必然有機會分配處處理機。該優先權的變化規律可描述爲:
wKiom1duNrXClwJMAACrvpB1OLo978.png-wh_50因爲等待時間與服務時間之和就是系統對該做業的響應時間,故該優先權又至關於響應比RP。據此,又可表示爲:


wKioL1duNurhVU4HAADrmzAkC44848.png-wh_50

有上式能夠看出:

(1) 若是做業的等待時間相同,則要求服務的時間愈短,其優先權愈高,於是該算法有利於短做業。

(2) 當要求服務的時間相同時,做業的優先權決定於其等待時間,等待時間愈長,其優先權愈高,於是它實現的是先來先服務。

(3) 對於長做業,做業的優先級能夠隨等待時間的增長而提升,當其等待時間足夠長時,其優先級即可升到很高,從而也可得到處理機。簡言之,該算法既照顧了短做業,又考慮了做業到達的前後次序,不會使長做業長期得不到服務。所以,該算法實現了一種較好的折衷。固然,在利用該算法時,每要進行調度以前,都須先作響應比的計算,這會增長系統開銷。

四.基於時間片的輪轉調度算法

1.時間片輪轉法

1) 基本原理

在早期的時間片輪轉法中,系統將全部的就緒進程按先來先服務的原則排成一個隊列,每次調度時,把CPU 分配給隊首進程,並令其執行一個時間片。時間片的大小從幾ms 到幾百ms。當執行的時間片用完時,由一個計時器發出時鐘中斷請求,調度程序便據此信號來中止該進程的執行,並將它送往就緒隊列的末尾;而後,再把處理機分配給就緒隊列中新的隊首進程,同時也讓它執行一個時間片。這樣就能夠保證就緒隊列中的全部進程在一給定的時間內均能得到一時間片的處理機執行時間。換言之,系統能在給定的時間內響應全部用戶的請求。

2.多級反饋隊列調度算法

前面介紹的各類用做進程調度的算法都有必定的侷限性。如短進程優先的調度算法,僅照顧了短進程而忽略了長進程,並且若是並未指明進程的長度,則短進程優先和基於進程長度的搶佔式調度算法都將沒法使用。而多級反饋隊列調度算法則沒必要事先知道各類進程所需的執行時間,並且還能夠知足各類類型進程的須要,於是它是目前被公認的一種較好的進程調度算法。在採用多級反饋隊列調度算法的系統中,調度算法的實施過程以下所述。

(1) 應設置多個就緒隊列,併爲各個隊列賦予不一樣的優先級。第一個隊列的優先級最高,第二個隊列次之,其他各隊列的優先權逐個下降。該算法賦予各個隊列中進程執行時間片的大小也各不相同,在優先權愈高的隊列中,爲每一個進程所規定的執行時間片就愈小。例如,第二個隊列的時間片要比第一個隊列的時間片長一倍,……,第i+1個隊列的時間片要比第i個隊列的時間片長一倍。

(2) 當一個新進程進入內存後,首先將它放入第一隊列的末尾,按FCFS原則排隊等待調度。當輪到該進程執行時,如它能在該時間片內完成,即可準備撤離系統;若是它在一個時間片結束時還沒有完成,調度程序便將該進程轉入第二隊列的末尾,再一樣地按FCFS原則等待調度執行;若是它在第二隊列中運行一個時間片後仍未完成,再依次將它放入第三隊列,……,如此下去,當一個長做業(進程)從第一隊列依次降到第n隊列後,在第n 隊列便採起按時間片輪轉的方式運行。

(3) 僅當第一隊列空閒時,調度程序才調度第二隊列中的進程運行;僅當第1~(i-1)隊列均空時,纔會調度第i隊列中的進程運行。若是處理機正在第i隊列中爲某進程服務時,又有新進程進入優先權較高的隊列(第1~(i-1)中的任何一個隊列),則此時新進程將搶佔正在運行進程的處理機,即由調度程序把正在運行的進程放回到第i隊列的末尾,把處理機分配給新到的高優先權進程。

多級反饋隊列的優點有:

終端型做業用戶:短做業優先。

短批處理做業用戶:週轉時間較短。

長批處理做業用戶:通過前面幾個隊列獲得部分執行,不會長期得不處處理。

五.空閒分區非配算法

     (1)首次適應算法。使用該算法進行內存分配時,從空閒分區鏈首開始查找,直至找到一個能知足其大小要求的空閒分區爲止。而後再按照做業的大小,從該分區中劃出一塊內存分配給請求者,餘下的空閒分區仍留在空閒分區鏈中。

      該算法傾向於使用內存中低地址部分的空閒分區,在高地址部分的空閒分區不多被利用,從而保留了高地址部分的大空閒區。顯然爲之後到達的大做業分配大的內存空間創造了條件。缺點在於低址部分不斷被劃分,留下許多難以利用、很小的空閒區,而每次查找又都從低址部分開始,這無疑會增長查找的開銷。

     (2)循環首次適應算法。該算法是由首次適應算法演變而成的。在爲進程分配內存空間時,再也不每次從鏈首開始查找,而是從上次找到的空閒分區開始查找,直至找到一個能知足要求的空閒分區,並從中劃出一塊來分給做業。該算法能使空閒中的內存分區分佈得更加均勻,但將會缺少大的空閒分區。

     (3)最佳適應算法。該算法老是把既能知足要求,又是最小的空閒分區分配給做業。

      爲了加速查找,該算法要求將全部的空閒區按其大小排序後,以遞增順序造成一個空白鏈。這樣每次找到的第一個知足要求的空閒區,必然是最優的。孤立地看,該算法彷佛是最優的,但事實上並不必定。由於每次分配後剩餘的空間必定是最小的,在存儲器中將留下許多難以利用的小空閒區。同時每次分配後必須從新排序,這也帶來了必定的開銷。

      (4)最差適應算法。最差適應算法中,該算法按大小遞減的順序造成空閒區鏈,分配時直接從空閒區鏈的第一個空閒分區中分配(不能知足須要則不分配)。很顯然,若是第一個空閒分區不能知足,那麼再沒有空閒分區能知足須要。這種分配方法初看起來不太合理,但它也有很強的直觀吸引力:在大空閒區中放入程序後,剩下的空閒區經常也很大,因而還能裝下一個較大的新程序。

      最壞適應算法與最佳適應算法的排序正好相反,它的隊列指針老是指向最大的空閒區,在進行分配時,老是從最大的空閒區開始查尋。

      該算法克服了最佳適應算法留下的許多小的碎片的不足,但保留大的空閒區的可能性減少了,並且空閒區回收也和最佳適應算法同樣複雜。

六.虛擬頁式存儲管理中的頁面置換算法

    1.理想頁面置換算法(OPT):這是一種理想的算法,在實際中不可能實現。該算法的思想是:發生缺頁時,選擇之後永不使用或在最長時間內再也不被訪問的內存頁面予以淘汰。

    2.先進先出頁面置換算法(FIFO):選擇最早進入內存的頁面予以淘汰。

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

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

七.磁盤調度算法

    1.先來先服務算法(FCFS)First Come First Service

這是一種比較簡單的磁盤調度算法。它根據進程請求訪問磁盤的前後次序進行調度。此算法的優勢是公平、簡單,且每一個進程的請求都能依次獲得處理,不會出現某一進程的請求長期得不到知足的狀況。此算法因爲未對尋道進行優化,在對磁盤的訪問請求比較多的狀況下,此算法將下降設備服務的吞吐量,導致平均尋道時間可能較長,但各進程獲得服務的響應時間的變化幅度較小。

    二、最短尋道時間優先算法(SSTF) Shortest Seek Time First

該算法選擇這樣的進程,其要求訪問的磁道與當前磁頭所在的磁道距離最近,以使每次的尋道時間最短,該算法能夠獲得比較好的吞吐量,但卻不能保證平均尋道時間最短。其缺點是對用戶的服務請求的響應機會不是均等的,於是致使響應時間的變化幅度很大。在服務請求不少的狀況下,對內外邊緣磁道的請求將會無限期的被延遲,有些請求的響應時間將不可預期。

    三、掃描算法(SCAN)電梯調度

掃描算法不只考慮到欲訪問的磁道與當前磁道的距離,更優先考慮的是磁頭的當前移動方向。例如,當磁頭正在自裏向外移動時,掃描算法所選擇的下一個訪問對象應是其欲訪問的磁道既在當前磁道以外,又是距離最近的。這樣自裏向外地訪問,直到再無更外的磁道須要訪問纔將磁臂換向,自外向裏移動。這時,一樣也是每次選擇這樣的進程來調度,即其要訪問的磁道,在當前磁道以內,從而避免了飢餓現象的出現。因爲這種算法中磁頭移動的規律頗似電梯的運行,故又稱爲電梯調度算法。此算法基本上克服了最短尋道時間優先算法的服務集中於中間磁道和響應時間變化比較大的缺點,而具備最短尋道時間優先算法的優勢即吞吐量較大,平均響應時間較小,但因爲是擺動式的掃描方法,兩側磁道被訪問的頻率仍低於中間磁道。

    四、循環掃描算法(CSCAN)

循環掃描算法是對掃描算法的改進。若是對磁道的訪問請求是均勻分佈的,當磁頭到達磁盤的一端,並反向運動時落在磁頭以後的訪問請求相對較少。這是因爲這些磁道剛被處理,而磁盤另外一端的請求密度至關高,且這些訪問請求等待的時間較長,爲了解決這種狀況,循環掃描算法規定磁頭單向移動。例如,只自裏向外移動,當磁頭移到最外的被訪問磁道時,磁頭當即返回到最裏的欲訪磁道,即將最小磁道號緊接着最大磁道號構成循環,進行掃描。

相關文章
相關標籤/搜索