




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章進(jìn)程的描述與控制2.4進(jìn)程同步與互斥1、進(jìn)程同步與互斥
2、信號(hào)量和P、V操作AND信號(hào)量2.5、經(jīng)典進(jìn)程同步與互斥問題2.6、
進(jìn)程通信2.4.1進(jìn)程同步的基本概念間接制約:進(jìn)程間由于共享某種系統(tǒng)資源,而形成的相互制約。直接制約:進(jìn)程間由于合作而形成的相互制約。
進(jìn)程B
資源進(jìn)程A進(jìn)程A進(jìn)程B1、進(jìn)程的兩種制約關(guān)系在多道程序環(huán)境下,當(dāng)程序并發(fā)執(zhí)行時(shí),由于資源共享和進(jìn)程合作,使同處于一個(gè)系統(tǒng)中的諸進(jìn)程之間可能存在著以下兩種形式的制約關(guān)系:互斥:互斥是并發(fā)執(zhí)行的多個(gè)進(jìn)程由于競(jìng)爭(zhēng)同一資源而產(chǎn)生的相互排斥的關(guān)系。同步:
同步是進(jìn)程間共同完成一項(xiàng)任務(wù)時(shí)直接發(fā)生相互作用的關(guān)系。進(jìn)程的兩大關(guān)系——同步進(jìn)程間具有合作關(guān)系——在執(zhí)行時(shí)間上必須按一定的順序協(xié)調(diào)進(jìn)行。
臨界資源:一次僅允許一個(gè)進(jìn)程使用的共享資源。如:打印機(jī)、磁帶機(jī)、表格。2、臨界資源3、臨界區(qū)在每個(gè)進(jìn)程中訪問臨界資源的那段程序。進(jìn)程必須互斥進(jìn)入臨界區(qū)訪問臨界區(qū)的循環(huán)進(jìn)程描述repeat進(jìn)入?yún)^(qū)臨界區(qū)退出區(qū)剩余區(qū)檢查臨界資源是否能訪問將臨界區(qū)標(biāo)志設(shè)為未訪問untilfalse;進(jìn)入?yún)^(qū):每個(gè)進(jìn)程在進(jìn)入臨界區(qū)之前,應(yīng)先對(duì)欲訪問的臨界資源進(jìn)行檢查,看它是否正被訪問。如果此刻該臨界資源未被訪問,進(jìn)程便可進(jìn)入臨界區(qū)對(duì)該資源進(jìn)行訪問,并設(shè)置它正被訪問的標(biāo)志;退出區(qū):在臨界區(qū)后面也要加上一段稱為退出區(qū)(exitsection)的代碼,用于將臨界區(qū)正被訪問的標(biāo)志恢復(fù)為未被訪問的標(biāo)志。剩余區(qū):進(jìn)程中除上述進(jìn)入?yún)^(qū)、臨界區(qū)及退出區(qū)之外的其它部分的代碼,在這里都稱為剩余區(qū)。這樣,可把一個(gè)訪問臨界資源的循環(huán)進(jìn)程描述如下:
repeat
entrysection
criticalsection;
exitsection
remaindersection;
untilfalse;4、同步機(jī)制遵循的原則(1)空閑讓進(jìn)當(dāng)無進(jìn)程處于臨界區(qū)時(shí),表明臨界資源處于空閑狀態(tài),應(yīng)允許一個(gè)請(qǐng)求進(jìn)入臨界區(qū)的進(jìn)程立即進(jìn)入自己的臨界區(qū),以有效地利用臨界資源。(2)忙則等待當(dāng)已有進(jìn)程進(jìn)入臨界區(qū)時(shí),表明臨界資源正在被訪問,因而其它試圖進(jìn)入臨界區(qū)的進(jìn)程必須等待,以保證對(duì)臨界資源的互斥訪問。(3)有限等待對(duì)要求訪問臨界資源的進(jìn)程,應(yīng)保證在有限時(shí)間內(nèi)能進(jìn)入自己的臨界區(qū),以免陷入“死等”狀態(tài)。(4)讓權(quán)等待當(dāng)進(jìn)程不能進(jìn)入自己的臨界區(qū)時(shí),應(yīng)立即釋放處理機(jī),以免進(jìn)程陷入“忙等”狀態(tài)。
互斥的實(shí)現(xiàn)方法●禁止中斷●專用機(jī)器指令
●TS(TestandSet)指令
●Swap指令(1)硬件方法2.4.2硬件同步機(jī)制禁止中斷(中斷屏蔽方法)當(dāng)一個(gè)進(jìn)程正在使用處理機(jī)執(zhí)行它的臨界區(qū)代碼時(shí),要防止其他進(jìn)程再進(jìn)入其臨界區(qū)訪問的最簡(jiǎn)單方法是禁止一切中斷發(fā)生,或稱之為屏蔽中斷、關(guān)中斷。其典型模式為:…….關(guān)中斷;
臨界區(qū);
開中斷;
//TS指令:booleanTS(boolean*lock){booleantemp;temp=*lock;*lock=true;returntemp;}●Lock有兩種狀態(tài): ●當(dāng)lock=false時(shí),表示資源空閑;
●當(dāng)lock=true時(shí),表示資源正在被使用?!袢秉c(diǎn):沒有做到:“讓權(quán)等待”(當(dāng)進(jìn)程不能進(jìn)入自己的臨界區(qū)時(shí),應(yīng)立即釋放處理機(jī),以免進(jìn)程陷入“忙等”狀態(tài)。)//TS指令的使用whileTS(&lock);臨界區(qū);lock=false;剩余區(qū);TS(TestandSet)指令互斥實(shí)現(xiàn)的軟件方法//進(jìn)程0while(turn!=0)
//什么都不做;
臨界區(qū);turn=
1;剩余區(qū);
//進(jìn)程1while(turn!=1)do
//什么都不做‘;
臨界區(qū);turn=0;剩余區(qū);●設(shè)置公共整型變量turn,用于指示進(jìn)入臨界區(qū)的進(jìn)程編號(hào)i(i=0,1)。使P0、P1輪流訪問臨界資源。●缺點(diǎn):強(qiáng)制性輪流進(jìn)入臨界區(qū),不能保證“空閑讓進(jìn)”?!?、單標(biāo)志算法!//進(jìn)程0
while(flag[1])
//什么都不做; flag[0]=true;
臨界區(qū);
flag[0]=false;
剩余區(qū);//進(jìn)程1 while(flag[0])
//什么都不做; flag[1]=true;
臨界區(qū);
flag[1]=false;
剩余區(qū);●設(shè)置數(shù)組flag,初始時(shí)設(shè)每個(gè)元素為false,表示所有進(jìn)程都未進(jìn)入臨界區(qū)。若flag[i]=true,表示進(jìn)程進(jìn)入臨界區(qū)執(zhí)行?!裨诿總€(gè)進(jìn)程進(jìn)入臨界區(qū)時(shí),先查看臨界資源是否被使用,若正在使用,該進(jìn)程等待,否則才可進(jìn)入。解決了“空閑讓進(jìn)”問題?!袢秉c(diǎn):可能同時(shí)進(jìn)入臨界區(qū),不能保證“忙則等待”。用軟件方法解決互斥問題——2、雙標(biāo)志、先檢查算法!//進(jìn)程0
flag[0]=true; while(flag[1])
//什么也不做;
臨界區(qū); flag[0]=false;
剩余區(qū);●兩進(jìn)程先后同時(shí)作 flag[i]=true;●缺點(diǎn):保證了不同時(shí)進(jìn)入臨界區(qū),但又可能都進(jìn)不去。不能保證“有空讓進(jìn)”。//進(jìn)程1 flag[1]=true; while(flag[0])
//什么也不做;
臨界區(qū); flag[1]=false;
剩余區(qū);——3、雙標(biāo)志、先修改后檢查算法用軟件方法解決互斥問題!//進(jìn)程0 flag[0]=true; turn=1; while(flag[1])&&(turn==1)
//什么也不做;
臨界區(qū); flag[0]=false;
剩余區(qū);保證了“有空讓進(jìn)”和“忙則等待”。//進(jìn)程1 flag[1]=true; turn=0; while(flag[0])&&(turn==0)
//什么也不做;
臨界區(qū); flag[1]=false;
剩余區(qū);——先修改、后檢查、后修改算法用軟件方法解決互斥問題!
2.4.3信號(hào)量機(jī)制
信號(hào)量和P、V操作
中心街道樓宇1小區(qū)A小區(qū)B城市公路進(jìn)程信號(hào)量信號(hào)量是一種數(shù)據(jù)結(jié)構(gòu)信號(hào)量的值與相應(yīng)資源的使用情況有關(guān)信號(hào)量的值僅由P、V操作改變1、整型信號(hào)量整型數(shù)SP操作(wait)原語(yǔ)V操作(signal)原語(yǔ)Wait(S):while(S≤0);//dono-opS:=S-1;Signal(S):
S:=S+1;S—表示資源數(shù)目,是個(gè)整型量。wait(s)和signal(S)是原子操作。只要信號(hào)量S≤0就不斷測(cè)試,不滿足讓權(quán)等待。2、記錄型信號(hào)量記錄型結(jié)構(gòu),包含兩個(gè)數(shù)據(jù)項(xiàng):
typedefstruct{ intvalue; Structprocess_control_block*list; }semaphore;ValueLSwait操作:申請(qǐng)一個(gè)單位資源
wait(semaphore*S){
S->value--;
if(S->value<0)block(S->list);
}signal操作:釋放一個(gè)單位資源 signal(semaphore*S){
S->value++;
if(S->value<=0)wakeup(S->list);
S.value為資源信號(hào)量,其初值為某類資源的數(shù)目。S.value≥0:表示系統(tǒng)中可用的資源數(shù)量S.value<0:其絕對(duì)值表示已阻塞的進(jìn)程數(shù)量。(等待使用資源的進(jìn)程個(gè)數(shù))S.value初值為1時(shí):只允許一個(gè)進(jìn)程訪問臨界資源,是互斥信號(hào)量。上述的進(jìn)程互斥問題,是針對(duì)各進(jìn)程之間只共享一個(gè)臨界資源而言的。在有些應(yīng)用場(chǎng)合,是一個(gè)進(jìn)程需要先獲得兩個(gè)或更多的共享資源后方能執(zhí)行其任務(wù)。假定現(xiàn)有兩個(gè)進(jìn)程A和B,他們都要求訪問共享數(shù)據(jù)D和E。當(dāng)然,共享數(shù)據(jù)都應(yīng)作為臨界資源。為此,可為這兩個(gè)數(shù)據(jù)分別設(shè)置用于互斥的信號(hào)量Dmutex和Emutex,并令它們的初值都是1。相應(yīng)地,在兩個(gè)進(jìn)程中都要包含兩個(gè)對(duì)Dmutex和Emutex的操作,即processA:
processB:wait(Dmutex);wait(Emutex);wait(Emutex);wait(Dmutex);若進(jìn)程A和B按下述次序交替執(zhí)行wait操作:
processA:wait(Dmutex);于是Dmutex=0
processB:wait(Emutex);于是Emutex=0
processA:wait(Emutex);于是Emutex=-1A阻塞
processB:wait(Dmutex);于是Dmutex=-1B阻塞最后,進(jìn)程A和B處于僵持狀態(tài)。在無外力作用下,兩者都將無法從僵持狀態(tài)中解脫出來。我們稱此時(shí)的進(jìn)程A和B已進(jìn)入死鎖狀態(tài)。顯然,當(dāng)進(jìn)程同時(shí)要求的共享資源愈多時(shí),發(fā)生進(jìn)程死鎖的可能性也就愈大。3、AND型信號(hào)量基本思想:將進(jìn)程在整個(gè)運(yùn)行中需要的所有資源,一次性全部分配給進(jìn)程,待進(jìn)程使用完后一起釋放。由死鎖理論可知,這樣就可避免上述死鎖情況的發(fā)生。
在wait中加入AND條件,又稱AND同步或同時(shí)wait操作。Swait(Simultaneouswait)Swait(S1,S2,…Sn){While(TRUE){if(S1≥1&&…&&Sn≥1){ for(i=1;i<=n;i++)Si--; break;} else
當(dāng)發(fā)現(xiàn)第一個(gè)Si<1就把該進(jìn)程放入等待隊(duì)列,并將其程序計(jì)數(shù)器置于Swait操作的開始位置}}Ssignal(S1,S2,…Sn){while(TRUE){for(i=1;i<=n;i++){Si++;
將所有等待Si的進(jìn)程由等待隊(duì)列取出放入到就緒隊(duì)列}}}2.4.4信號(hào)量的應(yīng)用
用信號(hào)量實(shí)現(xiàn)互斥Varmutex:semaphore:=1;BeginParbeginProcess1:beginrepeatwait(mutex);criticalsectionsignal(mutex);remaindersectionuntilfalse;
end;Process2:beginrepeatwait(mutex);criticalsectionsignal(mutex);remaindersectionuntilfalse;
end;parend在實(shí)現(xiàn)互斥時(shí)應(yīng)注意wait(mutex)和signal(mutex)必須成對(duì)地出現(xiàn)。缺wait(mutex)將會(huì)引起系統(tǒng)混亂,不能保證對(duì)臨界資源的互斥訪問缺signal(mutex)將會(huì)使該臨界資源永久不被釋放初始狀態(tài)mutex:=1沒有并發(fā)進(jìn)程使用臨界區(qū)臨界區(qū)互斥的進(jìn)程一個(gè)進(jìn)程申請(qǐng)臨界區(qū)mutex:=1沒有并發(fā)進(jìn)程使用臨界區(qū)mutex:=申請(qǐng)成功,進(jìn)程使用臨界區(qū)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 乳品安全監(jiān)管體系構(gòu)建考核試卷
- 教育文具在遠(yuǎn)程教育中的應(yīng)用考核試卷
- 樂器批發(fā)商的品牌市場(chǎng)渠道開發(fā)考核試卷
- 家用換氣扇產(chǎn)業(yè)鏈協(xié)同創(chuàng)新發(fā)展模式與實(shí)踐考核試卷
- 城市軌道交通的非折返運(yùn)行與列車調(diào)度考核試卷
- 辦公自動(dòng)化軟件綜合應(yīng)用考核試卷
- 絲印染在體育用品上的獨(dú)特應(yīng)用考核試卷
- 智能設(shè)備多模態(tài)交互設(shè)計(jì)考核試卷
- 工傷案例培訓(xùn)課件
- 快手代運(yùn)營(yíng)合同范本
- 冬季感冒知識(shí)講座
- 基于OBE理念的項(xiàng)目式學(xué)習(xí)模式設(shè)計(jì)與應(yīng)用研究
- 醫(yī)療護(hù)理醫(yī)學(xué)培訓(xùn) 小兒麻醉專家共識(shí)課件
- 模糊多屬性決策方法及其在物流服務(wù)供應(yīng)鏈管理中的應(yīng)用研究
- 2024年廣東省《輔警招聘考試必刷500題》考試題庫(kù)含答案
- 《智能制造技術(shù)基礎(chǔ)》課件-第1章 智能制造技術(shù)概述
- 國(guó)網(wǎng)基建安全管理課件
- 10.1.2事件的關(guān)系和運(yùn)算(教學(xué)課件)高一數(shù)學(xué)(人教A版2019必修第二冊(cè))
- 傳統(tǒng)與現(xiàn)代滋補(bǔ)品的營(yíng)銷變革
- 陳元方年十一時(shí)課件
- 2024解析:第九章固體壓強(qiáng)-講核心(解析版)
評(píng)論
0/150
提交評(píng)論