溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

操作系統(tǒng)常用調(diào)度算法

發(fā)布時(shí)間:2020-09-28 01:46:10 來(lái)源:網(wǎng)絡(luò) 閱讀:2001 作者:I慕藍(lán) 欄目:編程語(yǔ)言

操作系統(tǒng)常用調(diào)度算法

一.先來(lái)先服務(wù)調(diào)度算法

先來(lái)先服務(wù)(FCFS)調(diào)度算法是一種最簡(jiǎn)單的調(diào)度算法,該算法既可用于作業(yè)調(diào)度,也可用于進(jìn)程調(diào)度。當(dāng)在作業(yè)調(diào)度中采用該算法時(shí),每次調(diào)度都是從后備作業(yè)隊(duì)列中選擇一個(gè)或多個(gè)最先進(jìn)入該隊(duì)列的作業(yè),將它們調(diào)入內(nèi)存,為它們分配資源、創(chuàng)建進(jìn)程,然后放入就緒隊(duì)列。在進(jìn)程調(diào)度中采用FCFS算法時(shí),則每次調(diào)度是從就緒隊(duì)列中選擇一個(gè)最先進(jìn)入該隊(duì)列的進(jìn)程,為之分配處理機(jī),使之投入運(yùn)行。該進(jìn)程一直運(yùn)行到完成或發(fā)生某事件而阻塞后才放棄處理機(jī)。

優(yōu)缺點(diǎn):FCFS調(diào)度算法的特點(diǎn)是算法簡(jiǎn)單,但效率低;對(duì)長(zhǎng)作業(yè)比較有利,但對(duì)短作業(yè)不利(相對(duì)SJF和高響應(yīng)比);有利于CPU繁忙型作業(yè),而不利于I/O繁忙型作業(yè)。

二.短作業(yè)優(yōu)先調(diào)度算法

短作業(yè)(進(jìn)程)優(yōu)先調(diào)度算法SJ(P)F,是指對(duì)短作業(yè)或短進(jìn)程優(yōu)先調(diào)度的算法。它們可以分別用于作業(yè)調(diào)度和進(jìn)程調(diào)度。短作業(yè)優(yōu)先(SJF)的調(diào)度算法是從后備隊(duì)列中選擇一個(gè)或若干個(gè)估計(jì)運(yùn)行時(shí)間最短的作業(yè),將它們調(diào)入內(nèi)存運(yùn)行。而短進(jìn)程優(yōu)先(SPF)調(diào)度算法則是從就緒隊(duì)列中選出一個(gè)估計(jì)運(yùn)行時(shí)間最短的進(jìn)程,將處理機(jī)分配給它,使它立即執(zhí)行并一直執(zhí)行到完成,或發(fā)生某事件而被阻塞放棄處理機(jī)時(shí)再重新調(diào)度。

缺點(diǎn):需要事先預(yù)知作業(yè)的運(yùn)行時(shí)間,對(duì)長(zhǎng)作業(yè)非常不利,完全為考慮緊迫程度,因此不能保證緊迫性作業(yè)得到及時(shí)解決,采用短作業(yè)優(yōu)先調(diào)度算法無(wú)法實(shí)現(xiàn)人機(jī)交互。

三.高優(yōu)先權(quán)優(yōu)先調(diào)度算法

1.優(yōu)先權(quán)調(diào)度算法類(lèi)型

(1)非搶占是優(yōu)先權(quán)調(diào)度算法

  在這種方式下,系統(tǒng)一旦把處理機(jī)分配給就緒隊(duì)列中優(yōu)先權(quán)最高的進(jìn)程后,該進(jìn)程便一直執(zhí)行下去,直至完成;或因發(fā)生某事件使該進(jìn)程放棄處理機(jī)時(shí),系統(tǒng)方可再將處理機(jī)重新分配給另一優(yōu)先權(quán)最高的進(jìn)程。這種調(diào)度算法主要用于批處理系統(tǒng)中;也可用于某些對(duì)實(shí)時(shí)性要求不嚴(yán)的實(shí)時(shí)系統(tǒng)中。

(2)搶占式優(yōu)先權(quán)調(diào)度算法

     在這種方式下,系統(tǒng)同樣是把處理機(jī)分配給優(yōu)先權(quán)最高的進(jìn)程,使之執(zhí)行。但在其執(zhí)行期間,只要又出現(xiàn)了另一個(gè)其優(yōu)先權(quán)更高的進(jìn)程,進(jìn)程調(diào)度程序就立即停止當(dāng)前進(jìn)程(原優(yōu)先權(quán)最高的進(jìn)程)的執(zhí)行,重新將處理機(jī)分配給新到的優(yōu)先權(quán)最高的進(jìn)程。因此,在采用這種調(diào)度算法時(shí),是每當(dāng)系統(tǒng)中出現(xiàn)一個(gè)新的就緒進(jìn)程i 時(shí),就將其優(yōu)先權(quán)Pi與正在執(zhí)行的進(jìn)程j 的優(yōu)先權(quán)Pj進(jìn)行比較。如果Pi≤Pj,原進(jìn)程Pj便繼續(xù)執(zhí)行;但如果是Pi>Pj,則立即停止Pj的執(zhí)行,做進(jìn)程切換,使i 進(jìn)程投入執(zhí)行。顯然,這種搶占式的優(yōu)先權(quán)調(diào)度算法能更好地滿(mǎn)足緊迫作業(yè)的要求,故而常用于要求比較嚴(yán)格的實(shí)時(shí)系統(tǒng)中,以及對(duì)性能要求較高的批處理和分時(shí)系統(tǒng)中。

2.高響應(yīng)比優(yōu)先調(diào)度算法

  在批處理系統(tǒng)中,短作業(yè)優(yōu)先算法是一種比較好的算法,其主要的不足之處是長(zhǎng)作業(yè)的運(yùn)行得不到保證。如果我們能為每個(gè)作業(yè)引入前面所述的動(dòng)態(tài)優(yōu)先權(quán),并使作業(yè)的優(yōu)先級(jí)隨著等待時(shí)間的增加而以速率a 提高,則長(zhǎng)作業(yè)在等待一定的時(shí)間后,必然有機(jī)會(huì)分配到處理機(jī)。該優(yōu)先權(quán)的變化規(guī)律可描述為:
操作系統(tǒng)常用調(diào)度算法由于等待時(shí)間與服務(wù)時(shí)間之和就是系統(tǒng)對(duì)該作業(yè)的響應(yīng)時(shí)間,故該優(yōu)先權(quán)又相當(dāng)于響應(yīng)比RP。據(jù)此,又可表示為:


操作系統(tǒng)常用調(diào)度算法

有上式可以看出:

(1) 如果作業(yè)的等待時(shí)間相同,則要求服務(wù)的時(shí)間愈短,其優(yōu)先權(quán)愈高,因而該算法有利于短作業(yè)。

(2) 當(dāng)要求服務(wù)的時(shí)間相同時(shí),作業(yè)的優(yōu)先權(quán)決定于其等待時(shí)間,等待時(shí)間愈長(zhǎng),其優(yōu)先權(quán)愈高,因而它實(shí)現(xiàn)的是先來(lái)先服務(wù)。

(3) 對(duì)于長(zhǎng)作業(yè),作業(yè)的優(yōu)先級(jí)可以隨等待時(shí)間的增加而提高,當(dāng)其等待時(shí)間足夠長(zhǎng)時(shí),其優(yōu)先級(jí)便可升到很高,從而也可獲得處理機(jī)。簡(jiǎn)言之,該算法既照顧了短作業(yè),又考慮了作業(yè)到達(dá)的先后次序,不會(huì)使長(zhǎng)作業(yè)長(zhǎng)期得不到服務(wù)。因此,該算法實(shí)現(xiàn)了一種較好的折衷。當(dāng)然,在利用該算法時(shí),每要進(jìn)行調(diào)度之前,都須先做響應(yīng)比的計(jì)算,這會(huì)增加系統(tǒng)開(kāi)銷(xiāo)。

四.基于時(shí)間片的輪轉(zhuǎn)調(diào)度算法

1.時(shí)間片輪轉(zhuǎn)法

1) 基本原理

在早期的時(shí)間片輪轉(zhuǎn)法中,系統(tǒng)將所有的就緒進(jìn)程按先來(lái)先服務(wù)的原則排成一個(gè)隊(duì)列,每次調(diào)度時(shí),把CPU 分配給隊(duì)首進(jìn)程,并令其執(zhí)行一個(gè)時(shí)間片。時(shí)間片的大小從幾ms 到幾百ms。當(dāng)執(zhí)行的時(shí)間片用完時(shí),由一個(gè)計(jì)時(shí)器發(fā)出時(shí)鐘中斷請(qǐng)求,調(diào)度程序便據(jù)此信號(hào)來(lái)停止該進(jìn)程的執(zhí)行,并將它送往就緒隊(duì)列的末尾;然后,再把處理機(jī)分配給就緒隊(duì)列中新的隊(duì)首進(jìn)程,同時(shí)也讓它執(zhí)行一個(gè)時(shí)間片。這樣就可以保證就緒隊(duì)列中的所有進(jìn)程在一給定的時(shí)間內(nèi)均能獲得一時(shí)間片的處理機(jī)執(zhí)行時(shí)間。換言之,系統(tǒng)能在給定的時(shí)間內(nèi)響應(yīng)所有用戶(hù)的請(qǐng)求。

2.多級(jí)反饋隊(duì)列調(diào)度算法

前面介紹的各種用作進(jìn)程調(diào)度的算法都有一定的局限性。如短進(jìn)程優(yōu)先的調(diào)度算法,僅照顧了短進(jìn)程而忽略了長(zhǎng)進(jìn)程,而且如果并未指明進(jìn)程的長(zhǎng)度,則短進(jìn)程優(yōu)先和基于進(jìn)程長(zhǎng)度的搶占式調(diào)度算法都將無(wú)法使用。而多級(jí)反饋隊(duì)列調(diào)度算法則不必事先知道各種進(jìn)程所需的執(zhí)行時(shí)間,而且還可以滿(mǎn)足各種類(lèi)型進(jìn)程的需要,因而它是目前被公認(rèn)的一種較好的進(jìn)程調(diào)度算法。在采用多級(jí)反饋隊(duì)列調(diào)度算法的系統(tǒng)中,調(diào)度算法的實(shí)施過(guò)程如下所述。

(1) 應(yīng)設(shè)置多個(gè)就緒隊(duì)列,并為各個(gè)隊(duì)列賦予不同的優(yōu)先級(jí)。第一個(gè)隊(duì)列的優(yōu)先級(jí)最高,第二個(gè)隊(duì)列次之,其余各隊(duì)列的優(yōu)先權(quán)逐個(gè)降低。該算法賦予各個(gè)隊(duì)列中進(jìn)程執(zhí)行時(shí)間片的大小也各不相同,在優(yōu)先權(quán)愈高的隊(duì)列中,為每個(gè)進(jìn)程所規(guī)定的執(zhí)行時(shí)間片就愈小。例如,第二個(gè)隊(duì)列的時(shí)間片要比第一個(gè)隊(duì)列的時(shí)間片長(zhǎng)一倍,……,第i+1個(gè)隊(duì)列的時(shí)間片要比第i個(gè)隊(duì)列的時(shí)間片長(zhǎng)一倍。

(2) 當(dāng)一個(gè)新進(jìn)程進(jìn)入內(nèi)存后,首先將它放入第一隊(duì)列的末尾,按FCFS原則排隊(duì)等待調(diào)度。當(dāng)輪到該進(jìn)程執(zhí)行時(shí),如它能在該時(shí)間片內(nèi)完成,便可準(zhǔn)備撤離系統(tǒng);如果它在一個(gè)時(shí)間片結(jié)束時(shí)尚未完成,調(diào)度程序便將該進(jìn)程轉(zhuǎn)入第二隊(duì)列的末尾,再同樣地按FCFS原則等待調(diào)度執(zhí)行;如果它在第二隊(duì)列中運(yùn)行一個(gè)時(shí)間片后仍未完成,再依次將它放入第三隊(duì)列,……,如此下去,當(dāng)一個(gè)長(zhǎng)作業(yè)(進(jìn)程)從第一隊(duì)列依次降到第n隊(duì)列后,在第n 隊(duì)列便采取按時(shí)間片輪轉(zhuǎn)的方式運(yùn)行。

(3) 僅當(dāng)?shù)谝魂?duì)列空閑時(shí),調(diào)度程序才調(diào)度第二隊(duì)列中的進(jìn)程運(yùn)行;僅當(dāng)?shù)?~(i-1)隊(duì)列均空時(shí),才會(huì)調(diào)度第i隊(duì)列中的進(jìn)程運(yùn)行。如果處理機(jī)正在第i隊(duì)列中為某進(jìn)程服務(wù)時(shí),又有新進(jìn)程進(jìn)入優(yōu)先權(quán)較高的隊(duì)列(第1~(i-1)中的任何一個(gè)隊(duì)列),則此時(shí)新進(jìn)程將搶占正在運(yùn)行進(jìn)程的處理機(jī),即由調(diào)度程序把正在運(yùn)行的進(jìn)程放回到第i隊(duì)列的末尾,把處理機(jī)分配給新到的高優(yōu)先權(quán)進(jìn)程。

多級(jí)反饋隊(duì)列的優(yōu)勢(shì)有:

終端型作業(yè)用戶(hù):短作業(yè)優(yōu)先。

短批處理作業(yè)用戶(hù):周轉(zhuǎn)時(shí)間較短。

長(zhǎng)批處理作業(yè)用戶(hù):經(jīng)過(guò)前面幾個(gè)隊(duì)列得到部分執(zhí)行,不會(huì)長(zhǎng)期得不到處理。

五.空閑分區(qū)非配算法

     (1)首次適應(yīng)算法。使用該算法進(jìn)行內(nèi)存分配時(shí),從空閑分區(qū)鏈?zhǔn)组_(kāi)始查找,直至找到一個(gè)能滿(mǎn)足其大小要求的空閑分區(qū)為止。然后再按照作業(yè)的大小,從該分區(qū)中劃出一塊內(nèi)存分配給請(qǐng)求者,余下的空閑分區(qū)仍留在空閑分區(qū)鏈中。

      該算法傾向于使用內(nèi)存中低地址部分的空閑分區(qū),在高地址部分的空閑分區(qū)很少被利用,從而保留了高地址部分的大空閑區(qū)。顯然為以后到達(dá)的大作業(yè)分配大的內(nèi)存空間創(chuàng)造了條件。缺點(diǎn)在于低址部分不斷被劃分,留下許多難以利用、很小的空閑區(qū),而每次查找又都從低址部分開(kāi)始,這無(wú)疑會(huì)增加查找的開(kāi)銷(xiāo)。

    ?。?)循環(huán)首次適應(yīng)算法。該算法是由首次適應(yīng)算法演變而成的。在為進(jìn)程分配內(nèi)存空間時(shí),不再每次從鏈?zhǔn)组_(kāi)始查找,而是從上次找到的空閑分區(qū)開(kāi)始查找,直至找到一個(gè)能滿(mǎn)足要求的空閑分區(qū),并從中劃出一塊來(lái)分給作業(yè)。該算法能使空閑中的內(nèi)存分區(qū)分布得更加均勻,但將會(huì)缺乏大的空閑分區(qū)。

    ?。?)最佳適應(yīng)算法。該算法總是把既能滿(mǎn)足要求,又是最小的空閑分區(qū)分配給作業(yè)。

      為了加速查找,該算法要求將所有的空閑區(qū)按其大小排序后,以遞增順序形成一個(gè)空白鏈。這樣每次找到的第一個(gè)滿(mǎn)足要求的空閑區(qū),必然是最優(yōu)的。孤立地看,該算法似乎是最優(yōu)的,但事實(shí)上并不一定。因?yàn)槊看畏峙浜笫S嗟目臻g一定是最小的,在存儲(chǔ)器中將留下許多難以利用的小空閑區(qū)。同時(shí)每次分配后必須重新排序,這也帶來(lái)了一定的開(kāi)銷(xiāo)。

     ?。?)最差適應(yīng)算法。最差適應(yīng)算法中,該算法按大小遞減的順序形成空閑區(qū)鏈,分配時(shí)直接從空閑區(qū)鏈的第一個(gè)空閑分區(qū)中分配(不能滿(mǎn)足需要?jiǎng)t不分配)。很顯然,如果第一個(gè)空閑分區(qū)不能滿(mǎn)足,那么再?zèng)]有空閑分區(qū)能滿(mǎn)足需要。這種分配方法初看起來(lái)不太合理,但它也有很強(qiáng)的直觀吸引力:在大空閑區(qū)中放入程序后,剩下的空閑區(qū)常常也很大,于是還能裝下一個(gè)較大的新程序。

      最壞適應(yīng)算法與最佳適應(yīng)算法的排序正好相反,它的隊(duì)列指針總是指向最大的空閑區(qū),在進(jìn)行分配時(shí),總是從最大的空閑區(qū)開(kāi)始查尋。

      該算法克服了最佳適應(yīng)算法留下的許多小的碎片的不足,但保留大的空閑區(qū)的可能性減小了,而且空閑區(qū)回收也和最佳適應(yīng)算法一樣復(fù)雜。

六.虛擬頁(yè)式存儲(chǔ)管理中的頁(yè)面置換算法

    1.理想頁(yè)面置換算法(OPT):這是一種理想的算法,在實(shí)際中不可能實(shí)現(xiàn)。該算法的思想是:發(fā)生缺頁(yè)時(shí),選擇以后永不使用或在最長(zhǎng)時(shí)間內(nèi)不再被訪問(wèn)的內(nèi)存頁(yè)面予以淘汰。

    2.先進(jìn)先出頁(yè)面置換算法(FIFO):選擇最先進(jìn)入內(nèi)存的頁(yè)面予以淘汰。

    3.最近最久未使用算法(LRU):選擇在最近一段時(shí)間內(nèi)最久沒(méi)有使用過(guò)的頁(yè),把它淘汰。

   4.最少使用算法(LFU):選擇到當(dāng)前時(shí)間為止被訪問(wèn)次數(shù)最少的頁(yè)轉(zhuǎn)換。

七.磁盤(pán)調(diào)度算法

    1.先來(lái)先服務(wù)算法(FCFS)First Come First Service

這是一種比較簡(jiǎn)單的磁盤(pán)調(diào)度算法。它根據(jù)進(jìn)程請(qǐng)求訪問(wèn)磁盤(pán)的先后次序進(jìn)行調(diào)度。此算法的優(yōu)點(diǎn)是公平、簡(jiǎn)單,且每個(gè)進(jìn)程的請(qǐng)求都能依次得到處理,不會(huì)出現(xiàn)某一進(jìn)程的請(qǐng)求長(zhǎng)期得不到滿(mǎn)足的情況。此算法由于未對(duì)尋道進(jìn)行優(yōu)化,在對(duì)磁盤(pán)的訪問(wèn)請(qǐng)求比較多的情況下,此算法將降低設(shè)備服務(wù)的吞吐量,致使平均尋道時(shí)間可能較長(zhǎng),但各進(jìn)程得到服務(wù)的響應(yīng)時(shí)間的變化幅度較小。

    2、最短尋道時(shí)間優(yōu)先算法(SSTF) Shortest Seek Time First

該算法選擇這樣的進(jìn)程,其要求訪問(wèn)的磁道與當(dāng)前磁頭所在的磁道距離最近,以使每次的尋道時(shí)間最短,該算法可以得到比較好的吞吐量,但卻不能保證平均尋道時(shí)間最短。其缺點(diǎn)是對(duì)用戶(hù)的服務(wù)請(qǐng)求的響應(yīng)機(jī)會(huì)不是均等的,因而導(dǎo)致響應(yīng)時(shí)間的變化幅度很大。在服務(wù)請(qǐng)求很多的情況下,對(duì)內(nèi)外邊緣磁道的請(qǐng)求將會(huì)無(wú)限期的被延遲,有些請(qǐng)求的響應(yīng)時(shí)間將不可預(yù)期。

    3、掃描算法(SCAN)電梯調(diào)度

掃描算法不僅考慮到欲訪問(wèn)的磁道與當(dāng)前磁道的距離,更優(yōu)先考慮的是磁頭的當(dāng)前移動(dòng)方向。例如,當(dāng)磁頭正在自里向外移動(dòng)時(shí),掃描算法所選擇的下一個(gè)訪問(wèn)對(duì)象應(yīng)是其欲訪問(wèn)的磁道既在當(dāng)前磁道之外,又是距離最近的。這樣自里向外地訪問(wèn),直到再無(wú)更外的磁道需要訪問(wèn)才將磁臂換向,自外向里移動(dòng)。這時(shí),同樣也是每次選擇這樣的進(jìn)程來(lái)調(diào)度,即其要訪問(wèn)的磁道,在當(dāng)前磁道之內(nèi),從而避免了饑餓現(xiàn)象的出現(xiàn)。由于這種算法中磁頭移動(dòng)的規(guī)律頗似電梯的運(yùn)行,故又稱(chēng)為電梯調(diào)度算法。此算法基本上克服了最短尋道時(shí)間優(yōu)先算法的服務(wù)集中于中間磁道和響應(yīng)時(shí)間變化比較大的缺點(diǎn),而具有最短尋道時(shí)間優(yōu)先算法的優(yōu)點(diǎn)即吞吐量較大,平均響應(yīng)時(shí)間較小,但由于是擺動(dòng)式的掃描方法,兩側(cè)磁道被訪問(wèn)的頻率仍低于中間磁道。

    4、循環(huán)掃描算法(CSCAN)

循環(huán)掃描算法是對(duì)掃描算法的改進(jìn)。如果對(duì)磁道的訪問(wèn)請(qǐng)求是均勻分布的,當(dāng)磁頭到達(dá)磁盤(pán)的一端,并反向運(yùn)動(dòng)時(shí)落在磁頭之后的訪問(wèn)請(qǐng)求相對(duì)較少。這是由于這些磁道剛被處理,而磁盤(pán)另一端的請(qǐng)求密度相當(dāng)高,且這些訪問(wèn)請(qǐng)求等待的時(shí)間較長(zhǎng),為了解決這種情況,循環(huán)掃描算法規(guī)定磁頭單向移動(dòng)。例如,只自里向外移動(dòng),當(dāng)磁頭移到最外的被訪問(wèn)磁道時(shí),磁頭立即返回到最里的欲訪磁道,即將最小磁道號(hào)緊接著最大磁道號(hào)構(gòu)成循環(huán),進(jìn)行掃描。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI