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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

转 进程的调度方式

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

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

一、概念:

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

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

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

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

1.等待態(tài):等待某個(gè)事件的完成;   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)程讓出處理器,這時(shí)候就變成就緒態(tài)。例如時(shí)間片用完,或有更高優(yōu)先級(jí)的進(jìn)程來(lái)?yè)屨继幚砥鞯取?   就緒態(tài)→運(yùn)行態(tài) 系統(tǒng)按某種策略選中就緒隊(duì)列中的一個(gè)進(jìn)程占用處理器,此時(shí)就變成了運(yùn)行態(tài)

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

非剝奪方式

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

剝奪方式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1、UNIX系統(tǒng): 

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

2、LINUX系統(tǒng):

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

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

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

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

?

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

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

?

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

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

?

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

總結(jié)

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

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