日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统中常见的进程调度算法

發(fā)布時間:2023/12/20 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统中常见的进程调度算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、調度與調度算法

調度:操作系統(tǒng)管理了系統(tǒng)的有限資源,當有多個進程(或多個進程發(fā)出的請求)要使用這些資源時,因為資源的有限性,必須按照一定的原則選擇進程(請求)來占用資源。這就是調度。目的是控制資源使用者的數(shù)量,選取資源使用者許可占用資源或占用資源,實質是一種資源分配。

調度算法:根據(jù)系統(tǒng)的資源分配策略所規(guī)定的資源分配算法。對于不同的的系統(tǒng)和系統(tǒng)目標,通常采用不同的調度算法。

調度算法要求:高資源利用率、高吞吐量、用戶滿意等原則,進程調度所采用的算法是與整個系統(tǒng)的設計目標相一致的:

1.批處理系統(tǒng):增加系統(tǒng)吞吐量和提高系統(tǒng)資源的利用率。(吞吐量是指單位時間內CPU完成的作業(yè)數(shù)量)

2.分時系統(tǒng):保證每個分時用戶能容忍的響應時間。

3.實時系統(tǒng):保證對隨機發(fā)生的外部事件做出實時響應。

?

二、常見的進程調度算法:

1.先來先服務調度算法

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

2.短作業(yè)(進程)優(yōu)先調度算法

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

3.優(yōu)先權調度算法的類型

為了照顧緊迫型作業(yè),使之在進入系統(tǒng)后便獲得優(yōu)先處理,引入了最高優(yōu)先權優(yōu)先(FPF)調度算法。此算法常被用于批處理系統(tǒng)中,作為作業(yè)調度算法,也作為多種操作系統(tǒng)中的進程調度算法,還可用于實時系統(tǒng)中。當把該算法用于作業(yè)調度時,系統(tǒng)將從后備隊列中選擇若干個優(yōu)先權最高的作業(yè)裝入內存。當用于進程調度時,該算法是把處理機分配給就緒隊列中優(yōu)先權最高的進程,這時,又可進一步把該算法分成如下兩種。

1) 非搶占式優(yōu)先權算法

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

2) 搶占式優(yōu)先權調度算法

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

4.高響應比優(yōu)先調度算法

在批處理系統(tǒng)中,短作業(yè)優(yōu)先算法是一種比較好的算法,其主要的不足之處是長作業(yè)的運行得不到保證。如果我們能為每個作業(yè)引入前面所述的動態(tài)優(yōu)先權,并使作業(yè)的優(yōu)先級隨著等待時間的增加而以速率a 提高,則長作業(yè)在等待一定的時間后,必然有機會分配到處理機。該優(yōu)先權的變化規(guī)律可描述為:

由于等待時間與服務時間之和就是系統(tǒng)對該作業(yè)的響應時間,故該優(yōu)先權又相當于響應比RP。據(jù)此,又可表示為:

由上式可以看出:

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

(2) 當要求服務的時間相同時,作業(yè)的優(yōu)先權決定于其等待時間,等待時間愈長,其優(yōu)先權愈高,因而它實現(xiàn)的是先來先服務。

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

5.時間片輪轉法

1) 基本原理

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

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

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

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

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

(3) 僅當?shù)谝魂犃锌臻e時,調度程序才調度第二隊列中的進程運行;僅當?shù)?/span>1(i-1)隊列均空時,才會調度第i隊列中的進程運行。如果處理機正在第i隊列中為某進程服務時,又有新進程進入優(yōu)先權較高的隊列(1(i-1)中的任何一個隊列),則此時新進程將搶占正在運行進程的處理機,即由調度程序把正在運行的進程放回到第i隊列的末尾,把處理機分配給新到的高優(yōu)先權進程。

?

三、linux進程調度算法

1linux內核的三種調度方法:?

1.SCHED_OTHER 分時調度策略。

實時進程將得到優(yōu)先調用,實時進程根據(jù)實時優(yōu)先級決定調度權值。

分時進程則通過nicecounter值決定權值,nice越小,counter越大,被調度的概率越大,也就是曾經(jīng)使用了cpu最少的進程將會得到優(yōu)先調度。

2.SCHED_FIFO實時調度策略,先到先服務

3.SCHED_RR實時調度策略,時間片輪轉

?

SHCED_RRSCHED_FIFO的不同:

當采用SHCED_RR策略的進程的時間片用完,系統(tǒng)將重新分配時間片,并置于就緒隊列尾。放在隊列尾保證了所有具有相同優(yōu)先級的RR任務的調度公平。

SCHED_FIFO一旦占用cpu則一直運行。一直運行直到有更高優(yōu)先級任務到達或自己放棄。如果有相同優(yōu)先級的實時進程(根據(jù)優(yōu)先級計算的調度權值是一樣的)已經(jīng)準備好,FIFO時必須等待該進程主動放棄后才可以運行這個優(yōu)先級相同的任務。而RR可以讓每個任務都執(zhí)行一段時間。

?

SHCED_RRSCHED_FIFO的相同點:

SHCED_RRSHCED_FIFO都只用于實時任務。

2、三種算法的執(zhí)行

所有任務都采用linux分時調度策略時:

1. 創(chuàng)建任務指定采用分時調度策略,并指定優(yōu)先級nice(-20~19)

2. 將根據(jù)每個任務的nice值確定在cpu上的執(zhí)行時間(counter)

3. 如果沒有等待資源,則將該任務加入到就緒隊列中。

4. 調度程序遍歷就緒隊列中的任務,通過對每個任務動態(tài)優(yōu)先級的計算(counter+20-nice)結果,選擇

計算結果最大的一個去運行,當這個時間片用完后(counter減至0)或者主動放棄cpu時,該任務將被放在就緒隊列末尾(時間片用完)或等待隊列(因等待資源而放棄cpu)中。

5. 此時調度程序重復上面計算過程,轉到第4步。

6. 當調度程序發(fā)現(xiàn)所有就緒任務計算所得的權值都為不大于0時,重復第2步。

?

所有任務都采用FIFO:

1. 創(chuàng)建進程時指定采用FIFO,并設置實時優(yōu)先級rt_priority(1-99)

2. 如果沒有等待資源,則將該任務加入到就緒隊列中。

3. 調度程序遍歷就緒隊列,根據(jù)實時優(yōu)先級計算調度權值(1000+rt_priority),選擇權值最高的任務使用cpu,該FIFO任務將一直占有cpu直到有優(yōu)先級更高的任務就緒(即使優(yōu)先級相同也不行)或者主動放棄(等待資源)

4. 調度程序發(fā)現(xiàn)有優(yōu)先級更高的任務到達(高優(yōu)先級任務可能被中斷或定時器任務喚醒,再或被當前運行的任務喚醒,等等),則調度程序立即在當前任務堆棧中保存當前cpu寄存器的所有數(shù)據(jù),重新從高優(yōu)先級任務的堆棧中加載寄存器數(shù)據(jù)到cpu,此時高優(yōu)先級的任務開始運行。重復第3步。

5. 如果當前務因等待資源而主動放棄cpu使用權,則該任務將從就緒隊列中刪除,加入等待隊列,此時重復第3步。

?

所有任務都采用RR調度策略時:

1. 創(chuàng)建任務時指定調度參數(shù)為RR,并設置任務的實時優(yōu)先級和nice(nice值將會轉換為該任務的時間片的長度)

2. 如果沒有等待資源,則將該任務加入到就緒隊列中。

3. 調度程序遍歷就緒隊列,根據(jù)實時優(yōu)先級計算調度權值(1000+rt_priority),選擇權值最高的任務使用cpu

4. 如果就緒隊列中的RR任務時間片為0,則會根據(jù)nice值設置該任務的時間片,同時將該任務放入就緒隊列的末尾。重復步驟3

5. 當前任務由于等待資源而主動退出cpu,則其加入等待隊列中。重復步驟3

?

四、CentOS release 6.5 (Final)

?????? 1輸入"uname -a ",可顯示電腦以及操作系統(tǒng)的相關信息


?????? 2輸入"cat /proc/version",說明正在運行的內核版本。


???????? 3、輸入"cat/etc/issue",?顯示的是發(fā)行版本信息


?

?

總結

以上是生活随笔為你收集整理的操作系统中常见的进程调度算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。