第三章 處理機調(diào)度與死鎖

一? 丶調(diào)度的層次與作用;

處理機調(diào)度:多道程序環(huán)境下,動態(tài)的把處理機分配給就緒隊列中的一個進程使之執(zhí)行。

提高處理機的利用率、改善系統(tǒng)性能,很大程度上取決于處理機調(diào)度的性能

作業(yè)進入系統(tǒng)駐留在外存的后備隊列上,再至調(diào)入內(nèi)存運行完畢,可能要經(jīng)歷下述三級調(diào)度。

?高級調(diào)度(High Scheduling)

?中級調(diào)度(Intermediate-Level Scheduling)

?低級調(diào)度(Low Level Scheduling)

1、高級調(diào)度(High Scheduling)

又稱作業(yè)調(diào)度或長程調(diào)度,接納調(diào)度(Admission

Scheduling)

? 主要在早期批處理階段,處理在外存上的作業(yè)。

?決定外存后備隊列中的哪些作業(yè)調(diào)入內(nèi)存;

?為它們創(chuàng)建進程、分配必要的資源;

?將新創(chuàng)建的進程排在就緒隊列上,準備執(zhí)行。

* 管理的方面比較多。

2、低級調(diào)度(Low Level Scheduling)

也稱為進程調(diào)度、微觀調(diào)度或短程調(diào)度(Short-Term Scheduling)

? 決定內(nèi)存就緒隊列中的哪個進程獲得處理機,進行分配工作。是最基本的一種調(diào)度,在三種基本OS中都有。

3、中級調(diào)度(Intermediate-Level Scheduling)

又稱交換調(diào)度或中程調(diào)度(Medium-Term Scheduling)

? 引入目的:提高內(nèi)存利用率和系統(tǒng)吞吐量。根據(jù)條件將一些進程調(diào)出或再調(diào)入內(nèi)存。

二、常用調(diào)度算法及計算;

1、先來先服務(wù)調(diào)度算法FCFS

(First Come First Service)

? 一種最簡單的調(diào)度算法,按先后順序進行調(diào)度。既可用于作業(yè)調(diào)度,也可用于進程調(diào)度。

v按照作業(yè)提交,或進程變?yōu)榫途w狀態(tài)的先后次序分派CPU;

v新作業(yè)只有當當前作業(yè)或進程執(zhí)行完或阻塞才獲得CPU運行

v被喚醒的作業(yè)或進程不立即恢復(fù)執(zhí)行,通常等到當前作業(yè)或進程出讓CPU。

(所以,默認即是非搶占方式)


2.短作業(yè)優(yōu)先


優(yōu)點:

v通過上表可見采用SJF/SPF算法,平均周轉(zhuǎn)時間、平均帶權(quán)周轉(zhuǎn)時間都有明顯改善。SJF/SPF調(diào)度算法能有效的降低作業(yè)的平均等待時間,提高系統(tǒng)吞吐量。

方式:

v分搶占和非搶占兩種方式,上例為簡單的非搶占式。


vSJF/SPF的不足:

? 1. 對短作業(yè)有利,但同時造成了對長作業(yè)的不利。

???? 2.由于作業(yè)(進程)的長短含主觀因素,不一定能真正做到短作業(yè)優(yōu)先。

???? 3.未考慮作業(yè)的緊迫程度,因而不能保證緊迫性作業(yè)(進程)的及時處理。

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

vHRRN為每個作業(yè)引入動態(tài)優(yōu)先權(quán),使作業(yè)的優(yōu)先級隨著等待時間的增加而以速率a提高:

? 優(yōu)先權(quán) =(等待時間+要求服務(wù)時間)/要求服務(wù)時間 = 響應(yīng)時間 / 要求服務(wù)時間

什么時候計算各進程的響應(yīng)比優(yōu)先權(quán)?

v需要進行調(diào)度選擇的時候比較各自優(yōu)先權(quán)

?作業(yè)完成時

?新作業(yè)產(chǎn)生時(搶占、非搶占)

?時間片完成時

?進程阻塞時


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

(1)時間片輪轉(zhuǎn)算法

1.將系統(tǒng)中所有的就緒進程按照FCFS原則,排成一個隊列。

2.每次調(diào)度時將CPU分派給隊首進程,讓其執(zhí)行一個時間片。時間片的長度從幾個ms到幾百ms。

3.在一個時間片結(jié)束時,發(fā)生時鐘中斷。

4.調(diào)度程序據(jù)此暫停當前進程的執(zhí)行,將其送到就緒隊列的末尾,并通過上下文切換執(zhí)行當前就緒的隊首進程。

v進程阻塞情況發(fā)生時,未用完時間片也要出讓CPU

能夠及時響應(yīng),但沒有考慮作業(yè)長短等問題。

(2)多級反饋隊列算法FB

1)設(shè)置多個就緒隊列,各隊列有不同的優(yōu)先級,優(yōu)先級從第一個隊列依次降低。

2)賦予各隊列進程執(zhí)行時間片大小不同,優(yōu)先權(quán)越高,時間片越短。


3)當一個新進程進入內(nèi)存,引發(fā)的調(diào)度過程

1.準備調(diào)度:先將它放入第一個隊列的末尾,按FCFS原則排隊等待調(diào)度。

2.IF時間片內(nèi)完成,便可準備撤離系統(tǒng);

3.IF時間片內(nèi)未能完成,調(diào)度程序便將該進程轉(zhuǎn)入第二隊列的末尾等待再次被調(diào)度執(zhí)行。

4.當?shù)谝魂犃兄械倪M程都執(zhí)行完,系統(tǒng)再按FCFS原則調(diào)度第二隊列。在第二隊列的稍放長些的時間片內(nèi)仍未完成,再依次將它放入第三隊列。

5.依次降到第n隊列后,在第n隊列中便采取按時間片輪轉(zhuǎn)的方式運行。

注意:

v各隊列的時間片逐漸增大。優(yōu)先級逐漸降低

v僅當優(yōu)先權(quán)高的隊列(如第一隊列)空閑時,調(diào)度程序才調(diào)度第二隊列中的進程運行;僅當?shù)?~(i-1)隊列均空時,才會調(diào)度第i隊列中的進程運行。

v高優(yōu)先級搶占問題:

?第i隊列中為某進程正占有CPU,又有新進程進入優(yōu)先權(quán)較高的隊列(第1~i-1隊中);

被搶占的進程放回原就緒隊列末尾;



三、死鎖的概念、產(chǎn)生的原因及必要條件;

死鎖(Deadlock):指多個進程在運行過程中,因爭奪資源而造成的一種僵局。當進程處于這種狀態(tài)時,若無外力作用,它們都將無法再向前推進。


v產(chǎn)生死鎖的原因可歸結(jié)為如下兩點:

1.競爭資源。系統(tǒng)中供多個進程共享的資源如打印機、公用隊列等的數(shù)目不滿足需要時,會引起資源競爭而產(chǎn)生死鎖。

2.進程間推進順序非法。進程在運行過程中,請求和釋放資源的順序不當,同樣會導(dǎo)致死鎖。

3、 產(chǎn)生死鎖的必要條件

①互斥條件:進程對所分配到的資源進行排他性使用

②請求和保持條件:進程已經(jīng)保持了至少一個資源,又提出新的資源請求,而新請求資源被其他進程占有只能造成自身進程阻塞,但對自己已獲得的其他資源保持不放,必然影響其他進程。

③不剝奪條件:進程已獲得的資源未使用完之前不能被剝奪,只能在使用完時由自己釋放。

④環(huán)路等待條件

四、處理死鎖的基本方法;

事先預(yù)防:

①預(yù)防死鎖

v設(shè)置限制條件,破壞四個必要條件的一個或幾個,預(yù)防發(fā)生死鎖。

v較易實現(xiàn)。限制條件的嚴格也會導(dǎo)致系統(tǒng)資源利用率和系統(tǒng)吞吐量降低。

②避免死鎖

v不須事先限制,破壞四個必要條件,而是在資源的動態(tài)分配過程中,用某種方法去防止系統(tǒng)進入不安全狀態(tài),從而避免發(fā)生死鎖。

v這種事先加以較弱限制的方法,實現(xiàn)上有一定難度,但可獲較高的資源利用率及系統(tǒng)吞吐量,目前在較完善的系統(tǒng)中,常用此方法來避免發(fā)生死鎖。

事后處理:

③檢測死鎖。

v允許系統(tǒng)運行過程中發(fā)生死鎖,但通過系統(tǒng)檢測機構(gòu)可及時的檢測出,能精確確定與死鎖有關(guān)的進程和資源;然后采取適當?shù)拇胧?,從系統(tǒng)中將已發(fā)生的死鎖清除掉。

④解除死鎖。

v與死鎖檢測配套的一種措施。

v常用的實施方法:撤銷或掛起一些進程,以便回收一些資源并將他們分配給已阻塞進程,使之轉(zhuǎn)為就緒以繼續(xù)運行。

v死鎖的檢測與解除措施,有可能使系統(tǒng)獲得較好的資源利用率和吞吐量(死鎖幾率不一定很高),但在實現(xiàn)上難度也最大。

五、銀行家算法及計算;

? 最有代表性的避免死鎖的算法,是Dijkstra的銀行家算法。由于該算法能用于銀行系統(tǒng)現(xiàn)金貸款的發(fā)放而得名。

? 【思路描述】:隨時對系統(tǒng)中的所有資源信息進行統(tǒng)計,包括每種資源的數(shù)量、已分配給各進程的數(shù)量;每當進程提出某種資源請求時判斷該請求分配后是否安全,如果安全才分配。對每個資源請求的處理都要保證系統(tǒng)始終從一個安全狀態(tài)到另一個安全狀態(tài)1)銀行家算法中的數(shù)據(jù)結(jié)構(gòu)

(1)各類可利用資源的數(shù)量

u向量Available:(i1,i2,…,im),含m個元素,每個元素代表一類可利用的資源數(shù)目。

u動態(tài)變化的,初始值是系統(tǒng)配置的該類資源的全部數(shù)目,值隨資源的分配與回收而動態(tài)的改變。

u實現(xiàn):一維數(shù)組。Available【j】=K,表示系統(tǒng)中Rj類資源現(xiàn)有可用數(shù)量為K個。

②已分配矩陣Allocation。

un*m,定義系統(tǒng)中每一進程已獲得的每類資源數(shù)量。

uAllocation【i,j】=K,表示進程i當前已分得Rj類資源數(shù)為K。

③還需求的矩陣Need。

un*m,表示每一進程尚需的各類資源數(shù)。

uNeed【i,j】=K,表示進程i還需要Rj類資源K個,方能完成任務(wù)。

|上述三個矩陣存在關(guān)系:

? Max【i,j】=Allocation【i,j】+Need【i,j】

|每次,給進程 i 分配資源的動作,影響上述數(shù)據(jù)結(jié)構(gòu)的取值:

? Available【μ】,Allocation【i,μ】,Need【i,μ】

算法過程:

就是對各進程的Request向量及資源數(shù)量進行一系列判斷及值操作。

進程Pi發(fā)出資源請求后,系統(tǒng)按下述步驟進行檢查:

首先是兩個基本判斷:

(1)IF Requesti[j]<= Need[i,j]

? THEN轉(zhuǎn)向步驟2;

? ELSE認為出錯,所需資源數(shù)超過宣布的最大值(自我矛盾)

(2)IF Requesti[j]<= Available[j]

? THEN轉(zhuǎn)向步驟3;

? ELSE表示尚無足夠資源,Pi需等待(現(xiàn)實不滿足)

如果上面兩步判斷都通過了,進入實質(zhì)的資源分析

(3)系統(tǒng)試探著把資源分配給進程Pi

,并修改相應(yīng)數(shù)據(jù)結(jié)構(gòu)的值(假設(shè)性操作):

???? Available【j】? =

???? Allocation【i,j】=

???? Need【i,j】=

(4)系統(tǒng)執(zhí)行安全性算法,判斷新的資源分配狀態(tài)是否是安全的。

? 即:找一個安全序列,使這些進程按順序執(zhí)行完)如果能夠找到,則將假設(shè)操作真正實施完成資源分配。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評論 6 540
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,275評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,904評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,368評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,736評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,919評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,481評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,235評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,427評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,656評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,160評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,380評論 2 379

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