進(jìn)程互斥與同步課件.ppt

進(jìn)程互斥與同步課件.ppt

ID:57036487

大?。?34.50 KB

頁數(shù):32頁

時(shí)間:2020-07-27

進(jìn)程互斥與同步課件.ppt_第1頁
進(jìn)程互斥與同步課件.ppt_第2頁
進(jìn)程互斥與同步課件.ppt_第3頁
進(jìn)程互斥與同步課件.ppt_第4頁
進(jìn)程互斥與同步課件.ppt_第5頁
資源描述:

《進(jìn)程互斥與同步課件.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、第三章進(jìn)程互斥與同步互斥-信號量機(jī)制1965年由荷蘭的Dijkstra提出信號量(semaphore)是一種軟件不忙等待法信號量機(jī)制的類型經(jīng)典信號量(忙等待)記錄型信號量(使用不當(dāng)可能會造成死鎖)信號量集(資源利用率低)記錄型信號量的定義數(shù)據(jù)結(jié)構(gòu)typedefstructsemaphore{intvalue;PCB*P;}S;//定義信號量的結(jié)構(gòu)體及變量SP-V操作原語P(S)操作原語voidP(structsemaphoreS){S.value--;if(S.value<0)block(S.P);//阻塞調(diào)用進(jìn)程,在S.P中排隊(duì)}P操作的主要動作:①s值減1;②若相減

2、結(jié)果>=0,則進(jìn)程繼續(xù)執(zhí)行;③若相減結(jié)果<0,則進(jìn)程被封鎖,并將它插入到該信號燈的等待隊(duì)列之中,然后轉(zhuǎn)進(jìn)程調(diào)度程序。P-V操作原語V(S)操作原語voidV(structsemaphoreS){S.value++;if(S.value<=0)wakeup(S.P);//喚醒S.P排隊(duì)中某個進(jìn)程}V操作的主要動作:①s值加1;②若相加結(jié)果>0,則進(jìn)程繼續(xù)執(zhí)行;③若相加結(jié)果<=0,則從該信號燈的等待隊(duì)列中移出一個進(jìn)程,解除它的等待狀態(tài),然后返回本進(jìn)程繼續(xù)執(zhí)行。S.value的物理意義S.value用于表示資源數(shù)目或請求使用某一資源的進(jìn)程個數(shù)的整形量.S是與臨界區(qū)內(nèi)所使用的公

3、用資源有關(guān)的信號量。S.value>0表示可供并發(fā)進(jìn)程使用的資源數(shù)。P(S)操作時(shí)表示,表示進(jìn)程請求分配一個該類資源,將對S.value減1,若S.value<0表示資源已經(jīng)分配完,此時(shí)

4、S.value

5、表示正在S.P隊(duì)列中等待使用臨界區(qū)的進(jìn)程數(shù)V(S)操作表示進(jìn)程釋放一個該類資源,S.value加1,若S.value<=0表示S.P隊(duì)列中有進(jìn)程等待分配該類資源,應(yīng)喚醒其中的一個進(jìn)程用信號量機(jī)制實(shí)現(xiàn)N進(jìn)程間的互斥為N個進(jìn)程設(shè)置一個互斥的信號量mutex,mutex.value為1(實(shí)現(xiàn)互斥)進(jìn)程進(jìn)入臨界區(qū)前用P(mutex)操作申請資源進(jìn)程退出臨界區(qū)后用V(mutext

6、)操作釋放資源structsemaphoremutex;mutex.value=1;//初始化資源數(shù)量為1cobeginvoidprocess1(void){while(1){P(mutex);.....;//進(jìn)程1訪問臨界資源V(mutex);......;//非臨界區(qū)代碼}}......voidprocessN(void){while(1){P(mutex);.....;//進(jìn)程N(yùn)訪問臨界資源V(mutex);......;//非臨界區(qū)代碼}}coend解決老問題structsemaphoreS=1;//S.value=1;P1:P(S);R1=count;R1=R

7、1+1;count=R1;V(S);P2:P(S);R2=count;R2=R2+1;count=R2;V(S);進(jìn)程同步進(jìn)程同步:多個合作進(jìn)程為了完成同一個任務(wù),在執(zhí)行速度上必須相互協(xié)調(diào)。進(jìn)程同步的例子計(jì)算與打印的同步關(guān)系BufferCP進(jìn)程互斥與進(jìn)程同步統(tǒng)稱為進(jìn)程同步進(jìn)程互斥實(shí)際上是進(jìn)程同步的一種特殊情況,一個等待使資源的進(jìn)程在得到占用資源的進(jìn)程發(fā)出“釋放資源”的信息后就可以使用該資源了?;コ馀c同步的區(qū)別互斥是進(jìn)程間競爭共享資源的使用權(quán),這種競爭無固定的必然關(guān)系。同步是涉及共享資源的并發(fā)進(jìn)程間有一種必然的依賴關(guān)系,即使沒有進(jìn)程在使用共享資源,尚未得到同步消息的進(jìn)程仍

8、不能去使用該資源。用信號量機(jī)制解決進(jìn)程同步structsemaphoreSC,SP=1,0;numberx,y,buffer;cobeginvoidCP(void)//computerprocess{while(1){x=computer();//計(jì)算并將結(jié)果存于xP(SC);//請求存數(shù)buffer=x;V(SP);//與打印進(jìn)程同步}}voidPP(void)//printprocess{while(1){P(SP);//請求取數(shù)y=buffer;V(SC);//與計(jì)算機(jī)進(jìn)程同步printynumber;}}coendBufferCP用信號量機(jī)制解決前趨圖問題[同步

9、]方法:若圖中存在結(jié)點(diǎn)S1指向結(jié)點(diǎn)S2的有向邊,表示進(jìn)程P1中的程序段S1應(yīng)該先執(zhí)行,而進(jìn)程P2中的程序段S2后執(zhí)行。設(shè)置一個信號量s,初值為0,將V(s)放在S1后面,而在S2前面先執(zhí)行P(s)。進(jìn)程P1的語句序列為:S1;V(s)進(jìn)程P2的語句序列為:P(s);S2S1S2s具有8個結(jié)點(diǎn)的前趨圖。圖中的前趨圖中共有有向邊10條,可設(shè)10個信號量,初值均為0;有8個結(jié)點(diǎn),可設(shè)計(jì)成8個并發(fā)進(jìn)程,具體描述如下:S1S2S5S6S7S8agefbcdhijS3S4Structsmaphorea,b,c,d,e,f,g,h,I,j=0,0,0,

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。