進(jìn)程調(diào)度的算法及思想

1.先來先服務(wù)調(diào)度算法
  先來先服務(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ī)淌山。

來看一個(gè)例子,假設(shè)有三個(gè)進(jìn)程和它們各自執(zhí)行時(shí)間(以毫秒為單位)如下表:

那么如果三個(gè)進(jìn)程按照P1, P2, P3的順序啟動(dòng)的話顾瞻,按照先到先服務(wù)的調(diào)度算法泼疑,執(zhí)行過程如下:

平均等待時(shí)間就是(0 + 24 + 27) / 3 = 17毫秒。FCFS算法是非搶占式的荷荤,一旦內(nèi)核將CPU分配給一個(gè)進(jìn)程就不會(huì)被釋放
了退渗,除非進(jìn)程結(jié)束或者請(qǐng)求I/O阻塞。這也是我們之前學(xué)習(xí)的多任務(wù)系統(tǒng)的特點(diǎn)蕴纳。

2会油、基于優(yōu)先級(jí)調(diào)度 (Priority Scheduling)
  在優(yōu)先級(jí)調(diào)度算法中,每個(gè)進(jìn)程都關(guān)聯(lián)一個(gè)優(yōu)先級(jí)古毛,內(nèi)核將CPU分配給最高優(yōu)先級(jí)的進(jìn)程翻翩。具有相同優(yōu)先級(jí)的進(jìn)程,按照
先來先服務(wù)的原則進(jìn)行調(diào)度稻薇。假設(shè)進(jìn)程的執(zhí)行時(shí)間和優(yōu)先級(jí)如下嫂冻,并且這些進(jìn)程同時(shí)存在于內(nèi)存中時(shí),內(nèi)核基于優(yōu)先級(jí)的
調(diào)度過程如下:

采取基于優(yōu)先級(jí)調(diào)度算法要考慮進(jìn)程餓死的問題塞椎,因?yàn)楦邇?yōu)先級(jí)的進(jìn)程總是會(huì)被優(yōu)先調(diào)度桨仿,具有低優(yōu)先級(jí)的進(jìn)程可能永遠(yuǎn)
都不會(huì)被內(nèi)核調(diào)度執(zhí)行。Aging是對(duì)于這個(gè)問題的一個(gè)解決方案案狠,所謂Aging就是指逐漸提高系統(tǒng)中長(zhǎng)時(shí)間等待的進(jìn)程的
優(yōu)先級(jí)服傍。比如如果優(yōu)先級(jí)的范圍從127到0(127表示最低優(yōu)先級(jí)),那么我們可以每15分鐘將等待進(jìn)程的優(yōu)先級(jí)加1骂铁。最終
經(jīng)過一段時(shí)間吹零,即便是擁有最低優(yōu)先級(jí)127的進(jìn)程也會(huì)變成系統(tǒng)中最高優(yōu)先級(jí)的進(jìn)程,從而被執(zhí)行从铲。

優(yōu)先級(jí)調(diào)度可以搶占式或者非搶占式的瘪校。當(dāng)一個(gè)進(jìn)程在Ready隊(duì)列中時(shí),內(nèi)核將它的優(yōu)先級(jí)與正在CPU上執(zhí)行的進(jìn)程的優(yōu)先級(jí)
進(jìn)行比較阱扬。當(dāng)發(fā)現(xiàn)這個(gè)新進(jìn)程的優(yōu)先級(jí)比正在執(zhí)行的進(jìn)程高時(shí):對(duì)于搶占式內(nèi)核馍刮,新進(jìn)程會(huì)搶占CPU窃蹋,之前正在執(zhí)行的進(jìn)程
轉(zhuǎn)入Ready隊(duì)列匈辱;對(duì)于非搶占式內(nèi)核树酪,新進(jìn)程只會(huì)被放置在Ready隊(duì)列的頭部,不會(huì)搶占正在執(zhí)行的進(jìn)程滥朱。

3懂版、短進(jìn)程優(yōu)先(SCBF--Shortest CPU Burst First)
  最短CPU運(yùn)行期優(yōu)先[調(diào)度算法]
(http://baike.baidu.com/view/2963962.htm)(SCBF--Shortest CPU Burst First)
該算法從就緒隊(duì)列中選出下一個(gè)“CPU執(zhí)行期最短”的進(jìn)程,為之分配處理機(jī)
最短作業(yè)優(yōu)先調(diào)度是優(yōu)先級(jí)調(diào)度的特例耍贾。在優(yōu)先級(jí)調(diào)度中我們根據(jù)進(jìn)程的優(yōu)先級(jí)來進(jìn)行調(diào)度简肴,在最短作業(yè)優(yōu)先調(diào)度中我們
根據(jù)作業(yè)的執(zhí)行時(shí)間長(zhǎng)短來調(diào)度。通過下面的例子來看看SJF是怎樣調(diào)度的。

進(jìn)程1首先執(zhí)行了1毫秒,當(dāng)執(zhí)行時(shí)間更短的進(jìn)程2進(jìn)入Ready隊(duì)列時(shí)發(fā)生搶占。進(jìn)程3在進(jìn)程2執(zhí)行1毫秒后到來,但是進(jìn)程3的
執(zhí)行時(shí)間比進(jìn)程2長(zhǎng)。同理進(jìn)程4的到來也沒法搶占進(jìn)程2,所以進(jìn)程2可以一直執(zhí)行到結(jié)束。之后是執(zhí)行時(shí)間第二短的進(jìn)程4
執(zhí)行,最后是進(jìn)程1(要看剩余執(zhí)行時(shí)間腺占,還剩7毫秒)和進(jìn)程3嚎研。

SJF調(diào)度是最優(yōu)的調(diào)度教翩,但難點(diǎn)在于如何預(yù)測(cè)進(jìn)程的執(zhí)行時(shí)間(Burst Time)杆勇。對(duì)于批處理系統(tǒng)中的長(zhǎng)期調(diào)度來說饱亿,可以將用戶
提交進(jìn)程時(shí)輸入的執(zhí)行時(shí)間上限作為依據(jù)。但對(duì)于短期調(diào)度來說配猫,沒有辦法能夠提前得知下一個(gè)要被分配CPU的進(jìn)程的執(zhí)行
時(shí)間長(zhǎng)短。我們只能通過歷史數(shù)據(jù)來進(jìn)行預(yù)測(cè)胃惜,公式如下:

α可以取0.5,公式前半部分表示最近一次Burst Time蛹疯,而后半部分表示過去歷史平均的Burst Time饮寞。

該算法雖可獲得較好的調(diào)度性能孝扛,但難以準(zhǔn)確地知道下一個(gè)CPU執(zhí)行期,而只能根據(jù)每一個(gè)進(jìn)程的執(zhí)行歷史來預(yù)測(cè)幽崩。

4苦始、輪轉(zhuǎn)法 (Round-Robin Scheduling) (RR)
  前幾種算法主要用于批處理系統(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)行柒爵。多級(jí)隊(duì)列方法:將系統(tǒng)中所有進(jìn)程分成若干類役电,每類為一級(jí)。
  RR調(diào)度算法轉(zhuǎn)為分時(shí)系統(tǒng)設(shè)計(jì)棉胀,它與FCFS很像法瑟,但是加入了搶占。具體調(diào)度過程是:內(nèi)核從Ready隊(duì)列中選取第一個(gè)進(jìn)程唁奢,
將CPU資源分配給它霎挟,并且設(shè)置一個(gè)定時(shí)器在一個(gè)時(shí)間片后中斷該進(jìn)程,調(diào)度Ready隊(duì)列中的下一進(jìn)程麻掸。很明顯酥夭,RR調(diào)度
算法是搶占式的,并且在該算法的調(diào)度下论笔,沒有一個(gè)進(jìn)程能夠連續(xù)占用CPU超過一個(gè)時(shí)間片,從而達(dá)到了分時(shí)的目的千所。

來看下面的例子狂魔,假設(shè)一個(gè)時(shí)間片的長(zhǎng)度為4毫秒:

5、高響應(yīng)比優(yōu)先調(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)的是先來先服務(wù).
  (3) 對(duì)于長(zhǎng)作業(yè),作業(yè)的優(yōu)先級(jí)可以隨等待時(shí)間的增加而提高,當(dāng)其等待時(shí)間足夠長(zhǎng)時(shí),其優(yōu)先級(jí)便可升到很高, 從而也可獲得處理機(jī).
  該算法照顧了短作業(yè),且不會(huì)使長(zhǎng)作業(yè)長(zhǎng)期得不到服務(wù)

6淫痰、搶占式調(diào)度算法

  1. 非搶占式調(diào)度算法
    為每一個(gè)被控對(duì)象建立一個(gè)實(shí)時(shí)任務(wù)并將它們排列成一輪轉(zhuǎn)隊(duì)列,調(diào)度程序每次選擇隊(duì)列中的第一個(gè)任務(wù)投入運(yùn)行.該任務(wù)完成后便把它掛在輪轉(zhuǎn)隊(duì)列的隊(duì)尾等待下次調(diào)度運(yùn)行.
  2. 非搶占式優(yōu)先調(diào)度算法.
    實(shí)時(shí)任務(wù)到達(dá)時(shí),把他們安排在就緒隊(duì)列的對(duì)首,等待當(dāng)前任務(wù)自我終止或運(yùn)行完成后才能被調(diào)度執(zhí)行.
  3. 搶占式調(diào)度算法
    1)基于時(shí)鐘中斷的搶占式優(yōu)先權(quán)調(diào)度算法.
    實(shí)時(shí)任務(wù)到達(dá)后,如果該任務(wù)的優(yōu)先級(jí)別高于當(dāng)前任務(wù)的優(yōu)先級(jí)并不立即搶占當(dāng)前任務(wù)的處理機(jī),而是等到時(shí)鐘中斷到來時(shí),調(diào)度程序才剝奪當(dāng)前任務(wù)的執(zhí)行,將處理機(jī)分配給新到的高優(yōu)先權(quán)任務(wù).
    2)立即搶占的優(yōu)先權(quán)調(diào)度算法.
    在這種調(diào)度策略中,要求操作系統(tǒng)具有快速響應(yīng)外部時(shí)間中斷的能力.一旦出現(xiàn)外部中斷,只要當(dāng)前任務(wù)未處于臨界區(qū)便立即剝奪當(dāng)前任務(wù)的執(zhí)行,把處理機(jī)分配給請(qǐng)求中斷的緊迫任務(wù)最楷,實(shí)時(shí)進(jìn)程調(diào)度,實(shí)時(shí)進(jìn)程搶占當(dāng)前待错。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末籽孙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子火俄,更是在濱河造成了極大的恐慌犯建,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓜客,死亡現(xiàn)場(chǎng)離奇詭異适瓦,居然都是意外死亡竿开,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門玻熙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來否彩,“玉大人,你說我怎么就攤上這事嗦随×欣螅” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵枚尼,是天一觀的道長(zhǎng)贴浙。 經(jīng)常有香客問我,道長(zhǎng)姑原,這世上最難降的妖魔是什么悬而? 我笑而不...
    開封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮锭汛,結(jié)果婚禮上笨奠,老公的妹妹穿的比我還像新娘。我一直安慰自己唤殴,他們只是感情好般婆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著朵逝,像睡著了一般蔚袍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上配名,一...
    開封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天啤咽,我揣著相機(jī)與錄音,去河邊找鬼渠脉。 笑死宇整,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芋膘。 我是一名探鬼主播鳞青,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼为朋!你這毒婦竟也來了臂拓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤习寸,失蹤者是張志新(化名)和其女友劉穎胶惰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霞溪,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡童番,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年精钮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剃斧。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡轨香,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幼东,到底是詐尸還是另有隱情臂容,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布根蟹,位于F島的核電站脓杉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏简逮。R本人自食惡果不足惜球散,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望散庶。 院中可真熱鬧蕉堰,春花似錦、人聲如沸悲龟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽须教。三九已至皿渗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間轻腺,已是汗流浹背乐疆。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贬养,地道東北人挤土。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像煤蚌,于是被迫代替她去往敵國(guó)和親耕挨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子细卧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 又來到了一個(gè)老生常談的問題尉桩,應(yīng)用層軟件開發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢? 今天就這個(gè)問題開始贪庙,來談?wù)劜?..
    tangsl閱讀 4,124評(píng)論 0 23
  • 引言 當(dāng)計(jì)算機(jī)系統(tǒng)處于就緒狀態(tài)的用戶進(jìn)程數(shù)多于CPU數(shù)時(shí)蜘犁,就會(huì)產(chǎn)生多個(gè)進(jìn)程或線程同時(shí)競(jìng)爭(zhēng)CPU的結(jié)果。假設(shè)現(xiàn)在只有...
    程序猿胖子閱讀 7,751評(píng)論 1 3
  • 15.1處理機(jī)調(diào)度概念 CPU資源的時(shí)分復(fù)用 ■進(jìn)程切換:CPU資源的當(dāng)前占用者切換 保存當(dāng)前進(jìn)程在PCB中的執(zhí)行...
    龜龜51閱讀 888評(píng)論 0 0
  • 一陣微風(fēng)徐來 蒲公英吹落在地 抬頭發(fā)現(xiàn)來到了一個(gè)陌生的環(huán)境 它害怕恐慌 可是卻不能回頭 它努力的讓自己存活下來 那...
    這樣的我懂閱讀 158評(píng)論 0 0
  • 走完一段路止邮,習(xí)慣性的掏出手機(jī)看微信運(yùn)動(dòng)这橙,心想今天應(yīng)該能做排行榜第一奏窑。屏幕上顯示有兩條消息,點(diǎn)開來看屈扎。是他埃唯。他說 我...
    若小離是個(gè)大美人閱讀 293評(píng)論 0 0