資源描述:
《進程同步與互斥應(yīng)用例子》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、進程同步與互斥例題進程互斥進程互斥:并發(fā)進程之間相互競爭臨界資源的排他性關(guān)系。解題步驟:確定臨界資源及個數(shù);確定進程的關(guān)鍵工作步(使用臨界資源的);確定信號量的初值(臨界資源的個數(shù));寫出偽代碼。使用P(wait)操作和V(signal)操作對進程互斥進行控制。例1:過獨木橋。進程的互斥P1P2{{由西向東過獨木橋;由東向西過獨木橋;}}P1P2分析:進程P1、P2因競爭獨木橋這個資源而成為互斥關(guān)系。設(shè):信號量m表示獨木橋資源,初值為1表示資源可用。intm=1;cobeginp1()//p2()coend進程的互斥p1(){P(m);通過
2、獨木橋;V(m);}p2(){P(m);通過獨木橋;V(m);}練習:過十字路口(單道)。進程的互斥P1P2P3P4{{{{通過路口;通過路口;通過路口;通過路口;}}}}P2P3P4P1分析:進程P1、P2、P3、P4因競爭十字路口這個資源而成為互斥關(guān)系。設(shè):信號量m表示十字路口資源,初值為1表示資源可用。intm=1;cobeginp1()//p2()//p3()//p4()coend進程的互斥p1(){P(m);通過路口;V(m);}p2(){P(m);通過路口;V(m);}p3(){P(m);通過路口;V(m);}p4(){P(m)
3、;通過路口;V(m);}有一個閱覽室,共有100個座位。讀者進入閱覽室時必須在入口處進行登記;離開閱覽室時必須進行注銷。試用PV操作描述讀者進入/離開閱覽室的同步與互斥關(guān)系。Reader進程{登記進入閱覽室讀書離開閱覽室注銷}進程的互斥分析:在入口和出口處讀者應(yīng)該互斥進行登記和注銷,100個座位,100個互斥資源設(shè)置信號量教室內(nèi)空座位數(shù)量,seat,初值100為入口處進行登記設(shè)置互斥信號量Sin,初值1,表示當前可用為出口處進行注銷設(shè)置互斥信號量Sout,初值1,表示當前可用beginSin,Sout,seat:semaphore;seat
4、:=100;Sin:=1;Sout:=1;cobeginprocessReader-i(i=1,2,…,n);beginP(seat);P(Sin);登記;V(Sin);進入閱覽室;讀書;離開閱覽室;P(Sout);注銷;V(Sout);V(seat);endcoend;end;問題若有一售票廳只能容納300人,當少于300人時,可以進入。否則,需在外等候,若將每一個購票者作為一個進程,請用P、V操作編程。例2:讀寫數(shù)據(jù)庫。某數(shù)據(jù)庫有一個寫進程、多個讀進程,它們之間讀、寫操作的互斥要求是:寫進程運行時,其他讀、寫進程不能對數(shù)據(jù)庫進行操作。
5、讀進程之間不互斥,可以同時讀數(shù)據(jù)庫。請用信號量及PV操作描述這一組進程的工作過程。(讀者-寫者問題)進程的互斥數(shù)據(jù)庫寫者讀者寫者讀者{{寫數(shù)據(jù)庫;讀數(shù)據(jù)庫;}}分析:寫進程writer、讀進程reader因競爭數(shù)據(jù)庫這個資源而成為互斥關(guān)系。因為寫進程執(zhí)行時,不能執(zhí)行其他讀寫進程,所以還必須設(shè)置一個計數(shù)器統(tǒng)計讀進程的個數(shù)。如果是第一個讀進程,就與寫進程競爭數(shù)據(jù)庫。如果是最后一個讀進程,就釋放數(shù)據(jù)庫。因計數(shù)器是一個臨界資源,所以多個讀進程對計數(shù)器的操作又是互斥操作。設(shè):信號量rmutex表示數(shù)據(jù)庫資源,初值為1表示資源可用;wmutex表示計數(shù)
6、器count資源,初值為1表示可用。intrmutex=1,wmutex=1;cobeginreader()//writer()coend進程的互斥小結(jié)進程互斥:進程之間要競爭臨界資源。信號量表示臨界資源是否可用,或臨界資源的數(shù)量。信號量的個數(shù)與臨界資源的個數(shù)一致。對同一個信號量的PV操作要在同一個進程中完成。P操作:進入臨界區(qū)前V操作:離開臨界區(qū)后進程的互斥進程同步進程同步:并發(fā)進程之間相互合作,完成一項工作,它們之間有一定的時序關(guān)系。解題步驟:確定進程的個數(shù)及每個進程的工作;確定關(guān)鍵工作步(需要控制的);確定信號量表示的含義,當信號量的
7、值為0時,表示期望的消息尚未產(chǎn)生;當信號量的值非0時,表示期望的消息已經(jīng)存在。寫出偽代碼。在同步關(guān)系的控制中,同一信號量的P(wait)、V(signal)操作成對出現(xiàn),但它們分別在不同的進程代碼中。例1:假設(shè)有三個并發(fā)進程P,Q,R,其中P負責從輸入設(shè)備上讀入信息并傳送給Q,Q將信息加工后傳送給R,R則負責將信息打印輸出。進程P、Q共享一個緩沖區(qū),進程Q、R共享另一個緩沖區(qū)。進程的同步3個進程P、Q、RP進程:從輸入設(shè)備上讀入信息將信息放入緩沖區(qū)1Q進程:從緩沖區(qū)1取出信息將信息放入緩沖區(qū)2中R進程:從緩沖區(qū)2取出信息將信息打印輸出確定進
8、程的同步、互斥關(guān)系同步:P當緩存區(qū)1無數(shù)據(jù)時,才可以向緩沖區(qū)1寫入信息同步:Q當緩存區(qū)1有數(shù)據(jù)時,才可以從緩沖區(qū)1讀取信息同步:Q當緩存區(qū)2無數(shù)據(jù)時,才可以向緩沖區(qū)2寫入信息同步