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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

转 进程的调度方式

發(fā)布時間:2024/1/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转 进程的调度方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
http://blog.csdn.net/kavensu/article/details/8075642

進(jìn)程調(diào)度詳細(xì)總結(jié)

一、概念:

無論是在批處理系統(tǒng)還是分時系統(tǒng)中,用戶進(jìn)程數(shù)一般都多于處理機(jī)數(shù)、這將導(dǎo)致它們互相爭奪處理機(jī)。另外,系統(tǒng)進(jìn)程也同樣需要使用處理機(jī)。這就要求進(jìn)程調(diào)度程序按一定的策略,動態(tài)地把處理機(jī)分配給處于就緒隊(duì)列中的某一個進(jìn)程,以使之執(zhí)行。

二、進(jìn)程的四個基本屬性:

1.多態(tài)性 從誕生、運(yùn)行,直至消滅。   2.多個不同的進(jìn)程可以包括相同的程序   3.三種基本狀態(tài) 它們之間可進(jìn)行轉(zhuǎn)換   4.并發(fā)性?并發(fā)執(zhí)行的進(jìn)程輪流占用處理器

三、進(jìn)程的三種基本狀態(tài):

1.等待態(tài):等待某個事件的完成;   2.就緒態(tài):等待系統(tǒng)分配處理器以便運(yùn)行;   3.運(yùn)行態(tài):占有處理器正在運(yùn)行。   運(yùn)行態(tài)→等待態(tài) 往往是由于等待外設(shè),等待主存等資源分配或等待人工干預(yù)而引起的。   等待態(tài)→就緒態(tài) 則是等待的條件已滿足,只需分配到處理器后就能運(yùn)行。   運(yùn)行態(tài)→就緒態(tài) 不是由于自身原因,而是由外界原因使運(yùn)行狀態(tài)的進(jìn)程讓出處理器,這時候就變成就緒態(tài)。例如時間片用完,或有更高優(yōu)先級的進(jìn)程來搶占處理器等。   就緒態(tài)→運(yùn)行態(tài) 系統(tǒng)按某種策略選中就緒隊(duì)列中的一個進(jìn)程占用處理器,此時就變成了運(yùn)行態(tài)

四、進(jìn)程調(diào)度的方式:

非剝奪方式

分派程序一旦把處理機(jī)分配給某進(jìn)程后便讓它一直運(yùn)行下去,直到進(jìn)程完成或發(fā)生? 某事件而阻塞時,才把處理機(jī)分配給另一個進(jìn)程。

剝奪方式

當(dāng)一個進(jìn)程正在運(yùn)行時,系統(tǒng)可以基于某種原則,剝奪已分配給它的處理機(jī),將之分配給其它進(jìn)程。剝奪原則有:優(yōu)先權(quán)原則、短進(jìn)程優(yōu)先原則、時間片原則。   例如,有三個進(jìn)程P1、P2、P3先后到達(dá),它們分別需要20、4和2個單位時間運(yùn)行完畢。   假如它們就按P1、P2、P3的順序執(zhí)行,且不可剝奪,則三進(jìn)程各自的周轉(zhuǎn)時間分別為20、24、   26個單位時間,平均周轉(zhuǎn)時間是23.33個時間單位。   假如用時間片原則的剝奪調(diào)度方式,可得到:   可見:P1、P2、P3的周轉(zhuǎn)時間分別為26、10、6個單位時間(假設(shè)時間片為2個單位時間),平均周轉(zhuǎn)時間為14個單位時間。   衡量進(jìn)程調(diào)度性能的指標(biāo)有:周轉(zhuǎn)時間、響應(yīng)時間、CPU-I/O執(zhí)行期。

五、進(jìn)程調(diào)度算法:

1、先進(jìn)先出算法(FIFO)

算法總是把處理機(jī)分配給最先進(jìn)入就緒隊(duì)列的進(jìn)程,一個進(jìn)程一旦分得處理機(jī),便一直執(zhí)行下去,直到該進(jìn)程完成或阻塞時,才釋放處理機(jī)。   例如,有三個進(jìn)程P1、P2和P3先后進(jìn)入就緒隊(duì)列,它們的執(zhí)行期分別是21、6和3個單位時間,   執(zhí)行情況如下圖:   對于P1、P2、P3的周轉(zhuǎn)時間為21、27、30,平均周轉(zhuǎn)時間為26。   可見,FIFO算法服務(wù)質(zhì)量不佳,容易引起作業(yè)用戶不滿,常作為一種輔助調(diào)度算法。

2、最短CPU運(yùn)行期優(yōu)先調(diào)度算法(SCBF--Shortest CPU Burst First)

  該算法從就緒隊(duì)列中選出下一個“CPU執(zhí)行期最短”的進(jìn)程,為之分配處理機(jī)。   例如,在就緒隊(duì)列中有四個進(jìn)程P1、P2、P3和P4,它們的下一個執(zhí)行?

進(jìn)程調(diào)度

期分別是16、12、4和3個單位時間,執(zhí)行情況如下圖:   P1、P2、P3和P4的周轉(zhuǎn)時間分別為35、19、7、3,平均周轉(zhuǎn)時間為16。   該算法雖可獲得較好的調(diào)度性能,但難以準(zhǔn)確地知道下一個CPU執(zhí)行期,而只能根據(jù)每一個進(jìn)程的執(zhí)行歷史來預(yù)測。

3、時間片輪轉(zhuǎn)法:

前幾種算法主要用于批處理系統(tǒng)中,不能作為分時系統(tǒng)中的主調(diào)度算法,在分時系統(tǒng)中,都采用時間片輪轉(zhuǎn)法。   簡單輪轉(zhuǎn)法:系統(tǒng)將所有就緒進(jìn)程按FIFO規(guī)則排隊(duì),按一定的時間間隔把處理機(jī)分配給隊(duì)列中的進(jìn)程。這樣,就緒隊(duì)列中所有進(jìn)程均可獲得一個時間片的處理機(jī)而運(yùn)行。

4、多級反饋隊(duì)列:

  多級隊(duì)列方法:將系統(tǒng)中所有進(jìn)程分成若干類,每類為一級。 多級反饋隊(duì)列方式是在系統(tǒng)中設(shè)置多個就緒隊(duì)列,并賦予各隊(duì)列以不同的優(yōu)先權(quán)。

六、引起進(jìn)程調(diào)度的原因:

進(jìn)程調(diào)度發(fā)生在什么時機(jī)呢?這與引起進(jìn)程調(diào)度的原因以及進(jìn)程調(diào)度的方式有關(guān)。   (1)正在執(zhí)行的進(jìn)程執(zhí)行完畢。這時,如果不選擇新的就緒進(jìn)程執(zhí)行,將浪費(fèi)處理機(jī)資源。   (2)執(zhí)行中進(jìn)程自己調(diào)用阻塞原語將自己阻塞起來進(jìn)入睡眠等狀態(tài)。   (3)執(zhí)行中進(jìn)程調(diào)用了P原語操作,從而因資源不足而被阻塞;或調(diào)用了v原語操作激活了等待資源的進(jìn)程隊(duì)列。   (4)執(zhí)行中進(jìn)程提出I/O請求后被阻塞。   (5)在分時系統(tǒng)中時間片已經(jīng)用完。   (6)在執(zhí)行完系統(tǒng)調(diào)用等系統(tǒng)程序后返回用戶進(jìn)程時,這時可看作系統(tǒng)進(jìn)程執(zhí)行完畢,從而可調(diào)度選擇一新的用戶進(jìn)程執(zhí)行。   以上都是在不可剝奪方式下的引起進(jìn)程調(diào)度的原因。在CPU執(zhí)行方式是可剝奪時.還有   (7)就緒隊(duì)列中的某進(jìn)程的優(yōu)先級變得高于當(dāng)前執(zhí)行進(jìn)程的優(yōu)先級,從而也將引發(fā)進(jìn)程調(diào)度。

七、各種系統(tǒng)采用的進(jìn)程調(diào)度算法:

1、UNIX系統(tǒng): 

UNIX操作系統(tǒng)采用可剝奪的動態(tài)優(yōu)先級調(diào)度算法。進(jìn)程的優(yōu)先級由賦給它的優(yōu)先數(shù)確定,優(yōu)先數(shù)越小,優(yōu)先級越高。在該算法中,進(jìn)程的優(yōu)先數(shù)隨著它占用CPU的時間增加而增加。當(dāng)進(jìn)程占用CPU的時間減少時,其優(yōu)先數(shù)也隨著減少。 補(bǔ)充:作為一個分時的、多任務(wù)、多用戶操作系統(tǒng),要保證公平地對待各個用戶的進(jìn)程,使各終端用戶的響應(yīng)時間不至太一長.所以UNIX操作系統(tǒng)采用了這種調(diào)度算法。但這種算法不能滿足關(guān)鍵任務(wù)的需求,從而使傳統(tǒng)的UNIXrK操作系統(tǒng)缺乏實(shí)時性。

2、LINUX系統(tǒng):

Linux中的進(jìn)程如果從調(diào)度策略劃分,可以分為兩類,普通進(jìn)程和實(shí)時進(jìn)程。實(shí)時進(jìn)程又可分為兩類,FIFO,RR。實(shí)時進(jìn)程的優(yōu)先級遠(yuǎn)遠(yuǎn)大于普通進(jìn)程。Linux的處理策略是如果有實(shí)時進(jìn)程處于可運(yùn)行狀態(tài),那么優(yōu)先運(yùn)行實(shí)時進(jìn)程,知道所有的實(shí)時進(jìn)程或者結(jié)束,或者被殺掉,或者處于阻塞狀態(tài)。也就是說如果實(shí)時進(jìn)程一直在運(yùn)行,那么普通的進(jìn)程就會被活活餓死。由于實(shí)時進(jìn)程和普通進(jìn)程所采用的調(diào)度策略不同,下面分別介紹。

(一)普通進(jìn)程調(diào)度

每一個普通進(jìn)程都有一個靜態(tài)優(yōu)先級。這個值會被調(diào)度器用來與作為參考來調(diào)度進(jìn)程。在內(nèi)核中調(diào)度的優(yōu)先級的區(qū)間為[100,139],數(shù)字越低,優(yōu)先級越高。

(二)實(shí)時進(jìn)程調(diào)度

?

每一個實(shí)時進(jìn)程都會與一個實(shí)時優(yōu)先級相關(guān)聯(lián)。實(shí)時優(yōu)先級在1到99之間。不同與普通進(jìn)程,系統(tǒng)調(diào)度時,實(shí)時優(yōu)先級高的進(jìn)程總是先于優(yōu)先級低的進(jìn)程執(zhí)行。知道實(shí)時優(yōu)先級高的實(shí)時進(jìn)程無法執(zhí)行。實(shí)時進(jìn)程總是被認(rèn)為處于活動狀態(tài)。

如果有數(shù)個 優(yōu)先級相同的實(shí)時進(jìn)程,那么系統(tǒng)就會按照進(jìn)程出現(xiàn)在隊(duì)列上的順序選擇進(jìn)程。假設(shè)當(dāng)前CPU運(yùn)行的實(shí)時進(jìn)程A的優(yōu)先級為a,而此時有個優(yōu)先級為b的實(shí)時進(jìn)程B進(jìn)入可運(yùn)行狀態(tài),那么只要b<a,系統(tǒng)將中斷A的執(zhí)行,而優(yōu)先執(zhí)行B,直到B無法執(zhí)行(無論A,B為何種實(shí)時進(jìn)程)。

?

不同調(diào)度策略的實(shí)時進(jìn)程只有在相同優(yōu)先級時才有可比性:

1. 對于FIFO的進(jìn)程,意味著只有當(dāng)前進(jìn)程執(zhí)行完畢才會輪到其他進(jìn)程執(zhí)行。由此可見相當(dāng)霸道。
2. 對于RR的進(jìn)程。一旦時間片消耗完畢,則會將該進(jìn)程置于隊(duì)列的末尾,然后運(yùn)行其他相同優(yōu)先級的進(jìn)程,如果沒有其他相同優(yōu)先級的進(jìn)程,則該進(jìn)程會繼續(xù)執(zhí)行。
總而言之,對于實(shí)時進(jìn)程,高優(yōu)先級的進(jìn)程就是大爺。它執(zhí)行到?jīng)]法執(zhí)行了,才輪到低優(yōu)先級的進(jìn)程執(zhí)行。等級制度相當(dāng)森嚴(yán)啊。

?

轉(zhuǎn)載于:https://www.cnblogs.com/njczy2010/p/5800072.html

總結(jié)

以上是生活随笔為你收集整理的转 进程的调度方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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