分為六大部分:
一.處理機(jī)調(diào)度相關(guān)基本概念
二.常用調(diào)度算法
三.實(shí)時(shí)調(diào)度
四.產(chǎn)生死鎖的原因和必要條件
五.預(yù)防死鎖的方法
六.死鎖的檢測(cè)與解除
一、處理機(jī)調(diào)度的基本概念
處理機(jī)調(diào)度:多道程序環(huán)境下,動(dòng)態(tài)的把處理機(jī)分配給就緒隊(duì)列中的一個(gè)進(jìn)程使之執(zhí)行私痹。
提高處理機(jī)的利用率匈棘、改善系統(tǒng)性能坝咐,很大程度上取決于處理機(jī)調(diào)度的性能解虱。
處理機(jī)調(diào)度便成為OS設(shè)計(jì)的中心問題之一掐禁。分配的任務(wù)由處理機(jī)調(diào)度程序完成渐溶。
1辉浦、高級(jí)調(diào)度(High Scheduling)
又稱作業(yè)調(diào)度或長(zhǎng)程調(diào)度(Long-Term Scheduling),接納調(diào)度(Admission Scheduling)。主要在早期批處理階段茎辐,處理在外存上的作業(yè)宪郊。
決定外存后備隊(duì)列中的哪些作業(yè)調(diào)入內(nèi)存;
為它們創(chuàng)建進(jìn)程、分配必要的資源;
將新創(chuàng)建的進(jìn)程排在就緒隊(duì)列上拖陆,準(zhǔn)備執(zhí)行弛槐。
*系統(tǒng)運(yùn)行并不一定存在高級(jí)調(diào)度
批處理系統(tǒng):作業(yè)進(jìn)入系統(tǒng)后先駐留外存,故需要有作業(yè)調(diào)度依啰。
分時(shí)系統(tǒng):為及時(shí)響應(yīng)乎串,作業(yè)由終端直接送入內(nèi)存,故不需作業(yè)調(diào)度速警。
實(shí)時(shí)系統(tǒng)中叹誉,通常也不需作業(yè)調(diào)度鸯两。
2、低級(jí)調(diào)度(Low Level Scheduling)
也稱為進(jìn)程調(diào)度长豁、微觀調(diào)度或短程調(diào)度(Short-Term Scheduling)決定內(nèi)存就緒隊(duì)列中的哪個(gè)進(jìn)程獲得處理機(jī)钧唐,進(jìn)行分配工作。是最基本的一種調(diào)度匠襟,在三種基本OS中都有钝侠。
?進(jìn)程調(diào)度方式
1)非搶占方式(Non-preemptive Mode)
? 一旦處理機(jī)分配給某進(jìn)程,該進(jìn)程一直執(zhí)行酸舍。決不允許其他進(jìn)程搶占已分配運(yùn)行進(jìn)程的處理機(jī)帅韧。
2)搶占方式(Preemptive Mode)
? 允許調(diào)度程序根據(jù)某種原則,暫停某個(gè)正在執(zhí)行的進(jìn)程啃勉,將處理機(jī)重新分配給另一進(jìn)程忽舟。
3、中級(jí)調(diào)度(Intermediate-Level Scheduling)
又稱交換調(diào)度或中程調(diào)度(Medium-Term Scheduling)
? 引入目的:提高內(nèi)存利用率和系統(tǒng)吞吐量璧亮。根據(jù)條件將一些進(jìn)程調(diào)出或再調(diào)入內(nèi)存萧诫。
三種調(diào)度的頻率和復(fù)雜度
進(jìn)程調(diào)度:運(yùn)行頻率最高,算法不能太復(fù)雜枝嘶,以免占用太多的CPU時(shí)間。分時(shí)系統(tǒng)通常10~100ms便進(jìn)行一次哑诊。
作業(yè)調(diào)度:一個(gè)作業(yè)運(yùn)行完畢退出系統(tǒng)時(shí)即觸發(fā)重新調(diào)度一個(gè)新作業(yè)入內(nèi)存群扶,周期較長(zhǎng),大約幾分鐘一次镀裤。因而也允許作業(yè)調(diào)度算法花費(fèi)較多的時(shí)間竞阐。
中級(jí)調(diào)度:運(yùn)行頻率基本上介于上述兩種調(diào)度之間。
4暑劝、調(diào)度隊(duì)列模型
?不論高級(jí)骆莹、中級(jí)或者低級(jí)調(diào)度,都涉及到進(jìn)程隊(duì)列担猛,由此形成了三類調(diào)度隊(duì)列模型幕垦。從這三種方式中體驗(yàn)調(diào)度的過程。
①僅有進(jìn)程調(diào)度的調(diào)度隊(duì)列模型
常見情況:分時(shí)系統(tǒng)傅联。
通常僅設(shè)置進(jìn)程調(diào)度先改,用戶鍵入的命令和數(shù)據(jù),都直接送入內(nèi)存蒸走。
調(diào)度對(duì)象:
處于就緒狀態(tài)的進(jìn)程仇奶。
組織形式:
棧、樹或一個(gè)無(wú)序鏈表
用何種形式取決于OS類型和采用的調(diào)度算法比驻。如:分時(shí)系統(tǒng)中把就緒進(jìn)程組織成FIFO隊(duì)列形式:按時(shí)間片輪轉(zhuǎn)方式運(yùn)行该溯。
②具有高級(jí)和低級(jí)調(diào)度的調(diào)度隊(duì)列模型
批處理系統(tǒng)中岛抄,還需要作業(yè)調(diào)度
③同時(shí)具有三級(jí)調(diào)度的調(diào)度隊(duì)列模型
引入中級(jí)調(diào)度后,進(jìn)程的狀態(tài)變化:
就緒狀態(tài):分為內(nèi)存就緒和外存就緒狈茉。
阻塞狀態(tài):分為內(nèi)存阻塞和外存阻塞弦撩。
? 中級(jí)調(diào)度使進(jìn)程在上述狀態(tài)間變化,并使數(shù)據(jù)在內(nèi)外存間互換论皆。
5.選擇調(diào)度方式和調(diào)度算法的若干準(zhǔn)則
1)面向用戶的準(zhǔn)則
周轉(zhuǎn)時(shí)間短益楼;
響應(yīng)時(shí)間快:針對(duì)分時(shí)系統(tǒng)。用戶輸入一個(gè)請(qǐng)求(如擊鍵)到系統(tǒng)給出首次響應(yīng)(如屏幕顯示)的時(shí)間
均衡性:系統(tǒng)響應(yīng)時(shí)間的快慢與用戶所請(qǐng)求的復(fù)雜性相適應(yīng)点晴。
截止時(shí)間的保證:針對(duì)實(shí)時(shí)系統(tǒng)的性能指標(biāo)感凤。開始截止時(shí)間和完成截止時(shí)間。任務(wù)必須按規(guī)定的時(shí)間開始或完成粒督,調(diào)度方式和算法必須能保證該要求陪竿。
優(yōu)先權(quán)準(zhǔn)則:三大基本OS在調(diào)度算法的選擇時(shí)都可遵循⊥篱希可以使關(guān)鍵任務(wù)達(dá)到更好的指標(biāo)族跛。
2)面向系統(tǒng)的準(zhǔn)則
系統(tǒng)吞吐量高:批處理系統(tǒng)的重要指標(biāo)。
單位時(shí)間內(nèi)所完成的作業(yè)數(shù)锐墙,跟作業(yè)本身(與作業(yè)平均長(zhǎng)度密切相關(guān))和調(diào)度算法都有關(guān)系礁哄;處理機(jī)利用率好(主要針對(duì)大中型主機(jī))。各類資源的平衡利用(主要針對(duì)大中型主機(jī))溪北。
二:常用調(diào)度算法
調(diào)度的實(shí)質(zhì)就是一種資源分配桐绒。不同的系統(tǒng)和系統(tǒng)目標(biāo),通常采用不同的調(diào)度算法——適合自己的才是最好的之拨。
如批處理系統(tǒng)為照顧為數(shù)眾多的短作業(yè)茉继,應(yīng)采用短作業(yè)優(yōu)先的調(diào)度算法;
如分時(shí)系統(tǒng)為保證系統(tǒng)具有合理的響應(yīng)時(shí)間蚀乔,應(yīng)采用輪轉(zhuǎn)法進(jìn)行調(diào)度烁竭。
目前存在的多種調(diào)度算法中,有的算法適用于作業(yè)調(diào)度吉挣,有的算法適用于進(jìn)程調(diào)度派撕;但有些算法作業(yè)調(diào)度和進(jìn)程調(diào)度都可以采用。
1听想、先來(lái)先服務(wù)調(diào)度算法FCFS
(First Come First Service)
? 一種最簡(jiǎn)單的調(diào)度算法腥刹,按先后順序進(jìn)行調(diào)度。既可用于作業(yè)調(diào)度汉买,也可用于進(jìn)程調(diào)度衔峰。
按照作業(yè)提交,或進(jìn)程變?yōu)榫途w狀態(tài)的先后次序分派CPU;
新作業(yè)只有當(dāng)當(dāng)前作業(yè)或進(jìn)程執(zhí)行完或阻塞才獲得CPU運(yùn)行
被喚醒的作業(yè)或進(jìn)程不立即恢復(fù)執(zhí)行垫卤,通常等到當(dāng)前作業(yè)或進(jìn)程出讓CPU威彰。所以,默認(rèn)即是非搶占方式穴肘。
2.短作業(yè)(進(jìn)程)優(yōu)先調(diào)度算法SJF/SPF
(Shortest Job First) OR (Shortest Process First)
優(yōu)點(diǎn):通過上表可見采用SJF/SPF算法歇盼,平均周轉(zhuǎn)時(shí)間、平均帶權(quán)周轉(zhuǎn)時(shí)間都有明顯改善评抚。SJF/SPF調(diào)度算法能有效的降低作業(yè)的平均等待時(shí)間豹缀,提高系統(tǒng)吞吐量。
方式:分搶占和非搶占兩種方式慨代,上例為簡(jiǎn)單的非搶占式邢笙。
3.高優(yōu)先權(quán)優(yōu)先調(diào)度算法HPF(Highest Priority First)
? 照顧緊迫性作業(yè),使其獲得優(yōu)先處理而引入調(diào)度算法侍匙。常用于批處理系統(tǒng)中的作業(yè)調(diào)度算法氮惯,以及多種操作系統(tǒng)中的進(jìn)程調(diào)度算法
1) 分兩種方式:
非搶占式優(yōu)先權(quán)算法;搶占式優(yōu)先權(quán)算法關(guān)鍵點(diǎn):新作業(yè)產(chǎn)生時(shí)
2)優(yōu)先權(quán)的類型
靜態(tài)優(yōu)先權(quán):創(chuàng)建進(jìn)程時(shí)確定想暗,整個(gè)運(yùn)行期間保持不變妇汗。一般利用某一范圍的一個(gè)整數(shù)來(lái)表示,又稱為優(yōu)先數(shù)说莫。
動(dòng)態(tài)優(yōu)先權(quán):創(chuàng)建進(jìn)程時(shí)賦予的優(yōu)先權(quán)可隨進(jìn)程的推進(jìn)或隨其等待時(shí)間的增加而改變杨箭。
3)高響應(yīng)比優(yōu)先調(diào)度算法HRRN(Highest Response Raito Next)
短作業(yè)優(yōu)先算法是一種比較好的算法(相當(dāng)于根據(jù)作業(yè)長(zhǎng)度設(shè)定的靜態(tài)優(yōu)先權(quán)算法),適用于短作業(yè)較多的批處理系統(tǒng)中唬滑,其主要不足是長(zhǎng)作業(yè)的運(yùn)行得不到保證告唆。
HRRN為每個(gè)作業(yè)引入動(dòng)態(tài)優(yōu)先權(quán),使作業(yè)的優(yōu)先級(jí)隨著等待時(shí)間的增加而以速率a提高:
優(yōu)先權(quán) =(等待時(shí)間+要求服務(wù)時(shí)間)/要求服務(wù)時(shí)間 = 響應(yīng)時(shí)間 / 要求服務(wù)時(shí)間
3.基于時(shí)間片的輪轉(zhuǎn)調(diào)度算法RR (Round Robin)
分時(shí)系統(tǒng)新需求:及時(shí)響應(yīng)用戶的請(qǐng)求晶密;采用基于時(shí)間片的輪轉(zhuǎn)式進(jìn)程調(diào)度算法。
早期分時(shí)系統(tǒng)采用的是簡(jiǎn)單的時(shí)間片輪轉(zhuǎn)法模她,進(jìn)入90年代后廣泛采用多級(jí)反饋隊(duì)列調(diào)度算法稻艰。
(1)時(shí)間片輪轉(zhuǎn)算法
1.將系統(tǒng)中所有的就緒進(jìn)程按照FCFS原則,排成一個(gè)隊(duì)列侈净。
2.每次調(diào)度時(shí)將CPU分派給隊(duì)首進(jìn)程尊勿,讓其執(zhí)行一個(gè)時(shí)間片。時(shí)間片的長(zhǎng)度從幾個(gè)ms到幾百ms畜侦。
3.在一個(gè)時(shí)間片結(jié)束時(shí)元扔,發(fā)生時(shí)鐘中斷。
4.調(diào)度程序據(jù)此暫停當(dāng)前進(jìn)程的執(zhí)行旋膳,將其送到就緒隊(duì)列的末尾澎语,并通過上下文切換執(zhí)行當(dāng)前就緒的隊(duì)首進(jìn)程。
(2)多級(jí)反饋隊(duì)列算法FB(Multiple-level Feed Back Queue)
1)設(shè)置多個(gè)就緒隊(duì)列,各隊(duì)列有不同的優(yōu)先級(jí),優(yōu)先級(jí)從第一個(gè)隊(duì)列依次降低擅羞。
2) 賦予各隊(duì)列進(jìn)程執(zhí)行時(shí)間片大小不同, 優(yōu)先權(quán)越高尸变,時(shí)間片越短。
3)當(dāng)一個(gè)新進(jìn)程進(jìn)入內(nèi)存减俏,引發(fā)的調(diào)度過程
?三召烂、實(shí)時(shí)調(diào)度
什么是實(shí)時(shí)系統(tǒng)?
1.指系統(tǒng)能夠在限定的響應(yīng)時(shí)間內(nèi)提供所需水平的服務(wù)娃承。
2.指計(jì)算的正確性不僅取決于程序的邏輯正確性奏夫,也取決于結(jié)果產(chǎn)生的時(shí)間,如果系統(tǒng)的時(shí)間約束條件得不到滿足历筝,將會(huì)發(fā)生系統(tǒng)出錯(cuò)酗昼。
? 實(shí)時(shí)任務(wù):具有明確時(shí)間約束的計(jì)算任務(wù),有軟/硬漫谷,隨機(jī)/周期性之分仔雷。
1.實(shí)現(xiàn)實(shí)時(shí)調(diào)度的基本條件
1)提供必要的信息
?? 為了實(shí)現(xiàn)實(shí)時(shí)調(diào)度,系統(tǒng)應(yīng)向調(diào)度程序提供有關(guān)任務(wù)的信息舔示;
2)系統(tǒng)處理能力足夠強(qiáng)
3)采用搶占式調(diào)度機(jī)制
4)具有快速切換機(jī)制
2.實(shí)時(shí)調(diào)度算法的分類
1)非搶占調(diào)度算法
1.非搶占式輪轉(zhuǎn)調(diào)度算法碟婆。常用于工業(yè)生產(chǎn)的群控系統(tǒng)中,要求不太嚴(yán)格惕稻。
2.非搶占式優(yōu)先調(diào)度算法竖共。要求相對(duì)嚴(yán)格,根據(jù)任務(wù)的優(yōu)先級(jí)安排等待位置俺祠」可用于有一定要求的實(shí)時(shí)控制系統(tǒng)中。(精心設(shè)置可獲得百ms級(jí)的響應(yīng)時(shí)間)
2)搶占式調(diào)度算法
????? 較嚴(yán)格的實(shí)時(shí)系統(tǒng)中(t約為數(shù)十ms)蜘渣,選擇采用搶占式優(yōu)先權(quán)調(diào)度算法淌铐。根據(jù)搶占發(fā)生時(shí)間可分為:
1.基于時(shí)鐘:某高優(yōu)先級(jí)任務(wù)到達(dá)后并不立即搶占,而等下一個(gè)時(shí)鐘中斷時(shí)搶占蔫缸。
2.立即搶占:一旦出現(xiàn)外部中斷腿准,只要當(dāng)前任務(wù)未處于臨界區(qū),就立即搶占處理機(jī)拾碌。
3.常用的幾種實(shí)時(shí)調(diào)度算法
最早截止時(shí)間優(yōu)先EDF(Earliest Deadline First)算法
根據(jù)任務(wù)的開始截止時(shí)間來(lái)確定任務(wù)的優(yōu)先級(jí)吐葱。截止時(shí)間越早,其優(yōu)先級(jí)越高校翔。
最低松弛度優(yōu)先LLF(Least Laxity First)算法
根據(jù)任務(wù)緊急(或松弛)的程度弟跑,來(lái)確定任務(wù)的優(yōu)先級(jí)。任務(wù)的緊急程度越高(松弛度值越蟹乐ⅰ)孟辑,優(yōu)先級(jí)就越高哎甲。
四.產(chǎn)生死鎖的原因和必要條件
死鎖(Deadlock):
指多個(gè)進(jìn)程在運(yùn)行過程中,因爭(zhēng)奪資源而造成的一種僵局扑浸。當(dāng)進(jìn)程處于這種狀態(tài)時(shí)烧给,若無(wú)外力作用,它們都將無(wú)法再向前推進(jìn)喝噪。
饑餓(Starvation):指一個(gè)進(jìn)程無(wú)休止地等待础嫡。
產(chǎn)生死鎖的原因可歸結(jié)為如下兩點(diǎn):
1.競(jìng)爭(zhēng)資源。系統(tǒng)中供多個(gè)進(jìn)程共享的資源如打印機(jī)酝惧、公用隊(duì)列等的數(shù)目不滿足需要時(shí)榴鼎,會(huì)引起資源競(jìng)爭(zhēng)而產(chǎn)生死鎖。
可剝奪和非剝奪性資源
永久性資源和臨時(shí)性資源
2.進(jìn)程間推進(jìn)順序非法晚唇。進(jìn)程在運(yùn)行過程中巫财,請(qǐng)求和釋放資源的順序不當(dāng),同樣會(huì)導(dǎo)致死鎖哩陕。
1)推進(jìn)順序合法
2)推進(jìn)順序非法
3平项、產(chǎn)生死鎖的必要條件
①互斥條件:進(jìn)程對(duì)所分配到的資源進(jìn)行排他性使用
②請(qǐng)求和保持條件:進(jìn)程已經(jīng)保持了至少一個(gè)資源,又提出新的資源請(qǐng)求悍及,而新請(qǐng)求資源被其他進(jìn)程占有只能造成自身進(jìn)程阻塞闽瓢,但對(duì)自己已獲得的其他資源保持不放,必然影響其他進(jìn)程心赶。
③不剝奪條件:進(jìn)程已獲得的資源未使用完之前不能被剝奪扣讼,只能在使用完時(shí)由自己釋放。
④環(huán)路等待條件
4缨叫、處理死鎖的基本方法
事先預(yù)防:
①預(yù)防死鎖
設(shè)置限制條件椭符,破壞四個(gè)必要條件的一個(gè)或幾個(gè),預(yù)防發(fā)生死鎖耻姥。
較易實(shí)現(xiàn)瑰谜。限制條件的嚴(yán)格也會(huì)導(dǎo)致系統(tǒng)資源利用率和系統(tǒng)吞吐量降低来农。
②避免死鎖
不須事先限制嗜桌,破壞四個(gè)必要條件赴涵,而是在資源的動(dòng)態(tài)分配過程中,用某種方法去防止系統(tǒng)進(jìn)入不安全狀態(tài)鸽嫂,從而避免發(fā)生死鎖。
這種事先加以較弱限制的方法征讲,實(shí)現(xiàn)上有一定難度据某,但可獲較高的資源利用率及系統(tǒng)吞吐量,目前在較完善的系統(tǒng)中诗箍,常用此方法來(lái)避免發(fā)生死鎖癣籽。
事后處理:
③檢測(cè)死鎖。
允許系統(tǒng)運(yùn)行過程中發(fā)生死鎖,但通過系統(tǒng)檢測(cè)機(jī)構(gòu)可及時(shí)的檢測(cè)出筷狼,能精確確定與死鎖有關(guān)的進(jìn)程和資源瓶籽;然后采取適當(dāng)?shù)拇胧瑥南到y(tǒng)中將已發(fā)生的死鎖清除掉埂材。
④解除死鎖塑顺。
與死鎖檢測(cè)配套的一種措施。
常用的實(shí)施方法:撤銷或掛起一些進(jìn)程俏险,以便回收一些資源并將他們分配給已阻塞進(jìn)程严拒,使之轉(zhuǎn)為就緒以繼續(xù)運(yùn)行。
死鎖的檢測(cè)與解除措施竖独,有可能使系統(tǒng)獲得較好的資源利用率和吞吐量(死鎖幾率不一定很高)裤唠,但在實(shí)現(xiàn)上難度也最大。
五.預(yù)防死鎖的方法
①摒棄“請(qǐng)求和保持”條件:所有進(jìn)程開始運(yùn)行前莹痢,必須一次性的申請(qǐng)其在整個(gè)運(yùn)行過程所需的全部資源(AND)种蘸。算法簡(jiǎn)單、易于實(shí)現(xiàn)且很安全竞膳。但缺點(diǎn)是資源浪費(fèi)嚴(yán)重航瞭、或進(jìn)程延遲運(yùn)行。
②摒棄“不剝奪”條件:允許進(jìn)程先運(yùn)行顶猜,但當(dāng)提出的新要求不被滿足時(shí)必須釋放它已保持的所有資源沧奴,待以后需要時(shí)再重新申請(qǐng)。實(shí)現(xiàn)比較復(fù)雜且付出很大代價(jià)长窄√戏停可能會(huì)造成前功盡棄,反復(fù)申請(qǐng)和釋放等情況挠日。
③摒棄“環(huán)路等待”條件:有序設(shè)置資源:將所有資源按類型進(jìn)行線性排隊(duì)疮绷,賦予不同序號(hào)。所有進(jìn)程對(duì)資源的請(qǐng)求必須嚴(yán)格按照資源序號(hào)遞增的次序提出嚣潜,這樣在所形成的資源分配圖中冬骚,不可能會(huì)出現(xiàn)環(huán)路。
*由安全狀態(tài)向不安全狀態(tài)的轉(zhuǎn)換
只要使系統(tǒng)始終處于安全狀態(tài)懂算,便可避免發(fā)生死鎖只冻。
不是所有的不安全狀態(tài)都是死鎖狀態(tài)。
避免死鎖的算法過程(銀行家算法)
進(jìn)程Pi發(fā)出資源請(qǐng)求后计技,系統(tǒng)按下述步驟進(jìn)行檢查:
首先是兩個(gè)基本判斷:
(1)IF Requesti[j]<= Need[i,j]
? THEN 轉(zhuǎn)向步驟2喜德;
? ELSE 認(rèn)為出錯(cuò),所需資源數(shù)超過宣布的最大值(自我矛盾)
(2)IF Requesti[j]<= Available[j]
? THEN 轉(zhuǎn)向步驟3垮媒;
? ELSE 表示尚無(wú)足夠資源舍悯,Pi需等待(現(xiàn)實(shí)不滿足)
如果上面兩步判斷都通過了航棱,進(jìn)入實(shí)質(zhì)的資源分析
(3)系統(tǒng)試探著把資源分配給進(jìn)程Pi ,并修改相應(yīng)數(shù)據(jù)結(jié)構(gòu)的值(假設(shè)性操作):
????Available【j】? =
????Allocation【i,j】=
????Need【i,j】=
(4)系統(tǒng)執(zhí)行安全性算法萌衬,判斷新的資源分配狀態(tài)是否是安全的饮醇。
? 即:找一個(gè)安全序列,使這些進(jìn)程按順序執(zhí)行完)如果能夠找到秕豫,則將假設(shè)操作真正實(shí)施完成資源分配朴艰。
六.死鎖的檢測(cè)與解除
當(dāng)系統(tǒng)為進(jìn)程分配資源時(shí),若未采取任何限制性措施馁蒂,則系統(tǒng)必須提供檢測(cè)和解除死鎖的手段呵晚,為此系統(tǒng)必須:
1.保存有關(guān)資源的請(qǐng)求和分配信息;
2.提供一種算法沫屡,以利用這些信息來(lái)檢測(cè)系統(tǒng)是否已進(jìn)入死鎖狀態(tài)饵隙。
資源分配圖
系統(tǒng)死鎖可利用資源分配圖來(lái)描述。
圓圈表示進(jìn)程
方框表示一類資源沮脖,其中的一個(gè)點(diǎn)代表一個(gè)該類資源
請(qǐng)求邊由進(jìn)程指向方框中的資源
分配邊則由方框中的一個(gè)點(diǎn)即資源金矛。
死鎖檢測(cè)算法:
* 每個(gè)進(jìn)程和資源指定唯一編號(hào)
* 設(shè)置一張資源分配表
?記錄各進(jìn)程與其占用資源之間的關(guān)系
* 設(shè)置一張進(jìn)程等待表
?記錄各進(jìn)程與要申請(qǐng)資源之間的關(guān)系
3、死鎖的解除
當(dāng)發(fā)現(xiàn)進(jìn)程死鎖時(shí)勺届,便應(yīng)立即把它們從死鎖狀態(tài)中解脫出來(lái)驶俊。常采用的方法是:
1.剝奪資源。從其他進(jìn)程剝奪足夠數(shù)量的資源給死鎖進(jìn)程以解除死鎖狀態(tài)免姿。
2.撤銷進(jìn)程饼酿。最簡(jiǎn)單的是讓全部進(jìn)程都死掉;溫和一點(diǎn)的是按照某種順序逐個(gè)撤銷進(jìn)程胚膊,直至有足夠的資源可用故俐,使死鎖狀態(tài)消除為止。