版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
進(jìn)程同步與互斥實(shí)例同步實(shí)例1.經(jīng)典的生產(chǎn)者─消費(fèi)者問題消費(fèi)者生產(chǎn)者1.經(jīng)典的生產(chǎn)者─消費(fèi)者問題varB:integer;empty:semaphore; /*可以使用的空緩沖區(qū)數(shù)*/full:semaphore; /*緩沖區(qū)內(nèi)可以使用的產(chǎn)品數(shù)*/empty:=1;/*緩沖區(qū)內(nèi)允許放入一件產(chǎn)品*/full:=0;/*緩沖區(qū)內(nèi)沒有產(chǎn)品*/cobegin/*多個(gè)子進(jìn)程并發(fā)執(zhí)行函數(shù)*/ProcessproducerprocessconsumerbeginbeginL1:L2: Produceaproduct;P(full); P(empty);
取產(chǎn)品直到取為空
放產(chǎn)品;直到為滿;
V(empty); V(full);Consumeaproduct;
GotoL1;GotoL2;
end;
end;
coend
2.實(shí)例
設(shè)某臺(tái)機(jī)掛有兩個(gè)I/O通道:分別掛一臺(tái)輸入機(jī)和一臺(tái)打印機(jī)??ㄆ瑱C(jī)上有一疊數(shù)據(jù)卡片,現(xiàn)在要把這些數(shù)據(jù)逐一輸入到緩沖區(qū)B1,然后再復(fù)制到緩沖區(qū)B2,并在打印機(jī)上打印出來。問:系統(tǒng)可設(shè)哪些進(jìn)程來完成這個(gè)任務(wù)?用P-V原語寫這些進(jìn)程的同步算法。解:由上圖可見,系統(tǒng)可設(shè)3個(gè)進(jìn)程:輸入進(jìn)程、復(fù)制進(jìn)程、打印進(jìn)程;分別用進(jìn)程R、進(jìn)程C、進(jìn)程P來表示。這些進(jìn)程之間的相互制約關(guān)系:
R受C的約束;C受R、P的約束;P受C的約束。設(shè)4個(gè)信號(hào)量:S1=1,S2=0,S3=1,S4=0
同步算法如下:3.理發(fā)師問題理發(fā)店里有一位理發(fā)師、一把理發(fā)椅和n把供等候理發(fā)的顧客坐的椅子如果沒有顧客,理發(fā)師便在理發(fā)椅上睡覺一個(gè)顧客到來時(shí),它必須叫醒理發(fā)師如果理發(fā)師正在理發(fā)時(shí)又有顧客來到,則如果有空椅子可坐,就坐下來等待,否則就離開記錄型信號(hào)量解決理發(fā)師問題
varwaiting:integer;/*等候理發(fā)的顧客數(shù)*/CHAIRS:integer;/*為顧客準(zhǔn)備的椅子數(shù)*/customers,barbers,mutex:semaphore;customers:=0;barbers:=0;waiting:=0;mutex:=1;Processbarber;beginwhile(TRUE);/*理完一人,還有顧客嗎?*/
P(cutomers);/*若無顧客,理發(fā)師睡眠*/
P(mutex);/*進(jìn)程互斥*/waiting:=waiting–1;/*等候顧客數(shù)少一個(gè)*/V(barbers);/*理發(fā)師去為一個(gè)顧客理發(fā)*/
V(mutex);/*開放臨界區(qū)*/cut-hair();/*正在理發(fā)*/end;processcustomerbegin
P(mutex);/*進(jìn)程互斥*/ifwaiting<CHAIRSbegin/*看看有沒有空椅子*/waiting:=waiting+1;/*等候顧客數(shù)加1*/V(customers);/*必要的話喚醒理發(fā)師*/
V(mutex);/*開放臨界區(qū)*/P(barbers);/*無理發(fā)師,顧客坐著養(yǎng)神*/get-haircut();/*一個(gè)顧客坐下等理發(fā)*/end
V(mutex);/*人滿了,走吧!*/end;互斥實(shí)例有三個(gè)用戶進(jìn)程A、B和C,在運(yùn)行過程中都要使用系統(tǒng)中的一臺(tái)打印機(jī)輸出計(jì)算結(jié)果。試說明A、B、C進(jìn)程之間存在什么樣的制約關(guān)系?為保證這三個(gè)進(jìn)程能正確地打印出各自的結(jié)果,請(qǐng)用信號(hào)量和P、V操作寫出各自的有關(guān)申請(qǐng)、使用打印機(jī)的代碼。要求給出信號(hào)量的含義和初值。
(1)
A、B、C三個(gè)進(jìn)程之間存在互斥的制約關(guān)系。因?yàn)榇蛴C(jī)屬于臨界資源,必須一個(gè)進(jìn)程使用完之后另一個(gè)進(jìn)程才能使用。(2)mutex:用于互斥的信號(hào)量,初值為1。各進(jìn)程的代碼如下:進(jìn)程A進(jìn)程B進(jìn)程C...…......…...
P(mutex)P(mutex)P(mutex)
申請(qǐng)打印機(jī)申請(qǐng)打印機(jī)申請(qǐng)打印機(jī)使用打印機(jī)使用打印機(jī)使用打印機(jī)
V(mutex)V(mutex)V(mutex)購物問題。某超級(jí)市場(chǎng),可容納100個(gè)人同時(shí)購物,入口處備有籃子,每個(gè)購物者可持一個(gè)籃子入內(nèi)購物。出口處結(jié)賬,并歸還籃子(出、入口僅容納一人通過)。請(qǐng)用P、V操作完成購物同步算法。VarS,mutex1,mutex2:semaphore;S:=100;mutex1:=1;mutex2:=1processPi:begin P(S); P(mutex1);
進(jìn)入口處,取一只籃子;
V(mutex1);
選購商品; P(mutex2);
結(jié)賬,并歸還籃子;
V(mutex2); V(S);
end獨(dú)木橋問題。某條河上只有一座獨(dú)木橋,以便行人過河。現(xiàn)在河的兩邊都有人要過橋,按照下面的規(guī)則過橋。為了保證過橋安全,請(qǐng)用P、V操作分別實(shí)現(xiàn)正確的管理。
過橋的規(guī)則是:每次只有一個(gè)人通過橋。Var
mutex:semaphore;process(E-W)i:begin
P(mutex);
過橋;
V(mutex);
endprocess(W-E)j:begin
P(mutex);
過橋;
V(mutex);
end.獨(dú)木橋問題。某條河上只有一座獨(dú)木橋,以便行人過河。現(xiàn)在河的兩邊都有人要過橋,按照下面的規(guī)則過橋。為了保證過橋安全,請(qǐng)用P、V操作分別實(shí)現(xiàn)正確的管理。過橋的規(guī)則是:同一方向的可連續(xù)過橋,某方向有人過橋時(shí)另一方向的人要等待。VarS,S1,S2:semaphore;rc1,rc2:integer;S,S1,S2:=1;rc1,rc2:=0;
process(E-W)i:begin P(S1); rc1:=rc1+1; ifrc1=1thenP(S); V(S1);
過橋;
P(S1); rc1:=rc1-1; ifrc1=0thenV(S); V(S1);
endprocess(W-E)j:begin P(S2); rc2:=rc2+1; ifrc2=1thenP(S); V(S2);
過橋;
P(S2); rc2:=rc2-1; ifrc2=0thenV(S); V(S2);
end揀棋子問題。生產(chǎn)圍棋的工人不小心把相等數(shù)量的黑棋子和白棋混裝在一個(gè)箱子里,先要用自動(dòng)分揀系統(tǒng)把黑棋子和白棋子分開,該系統(tǒng)由兩個(gè)并發(fā)執(zhí)行的進(jìn)程組成,系統(tǒng)功能如下:(1)進(jìn)程A專門揀黑子,進(jìn)程B專門揀白子;(2)每個(gè)進(jìn)程每次只揀一個(gè)子,當(dāng)一個(gè)進(jìn)程在揀子時(shí)不允許另一進(jìn)程去揀子;(3)當(dāng)一個(gè)進(jìn)程揀了一個(gè)子(黑或白)以后,必讓另一個(gè)進(jìn)程揀一個(gè)子(黑或白)。請(qǐng)用P、V操作管理兩個(gè)并發(fā)進(jìn)程,使其能正確實(shí)現(xiàn)上述功能。VarS1,S2:semaphore:=1,0;processA:beginrepeat P(S1);
揀黑子;
V(S2);untilfalse;
endprocessB:beginrepeat P(S2);
揀白子;
V(S1);untilfalse
end某寺廟有小、老和尚若干,有一水缸,由小和尚提水入缸供老和尚飲用。水缸可以容納10桶水,水取自同一井水。水井狹窄,每次只能容一個(gè)桶取水。水桶總數(shù)為3個(gè)。每次入、出水缸僅一桶,且不可同時(shí)進(jìn)行。試給出有關(guān)取水、入水的算法描述。Varmutex1,mutex2,empty,full,count:semaphore;mutex1:=1;mutex2:=1;empty:=10;full:=0;count:=3;process小和尚:beginrepeat
P(empty);
P(count); P(mutex1);
從井中取水;
V(mutex1); P(mutex2);
送水入水缸;
V(mutex2);
V(count);
V(full);untilfalse;
endprocess老和尚:beginrepeat
P(full);
P(count); P(mutex2);
從缸中取水;
V(mutex2);
V(empty);
V(count);untilfalse;
end習(xí)題1.司機(jī)和售票員問題問題描述:在公共汽車上,司機(jī)和售票員的活動(dòng)分別是:司機(jī)的活動(dòng):?jiǎn)?dòng)車輛正常運(yùn)行到站停車售票員的活動(dòng):關(guān)車門售票開車門在汽車不斷的到站,停車,行駛過程中,這兩個(gè)活動(dòng)有什么同步關(guān)系?用信號(hào)量和P,V操作實(shí)現(xiàn).2.吸煙者問題三個(gè)吸煙者在一間房間內(nèi),還有一個(gè)香煙供應(yīng)者。為了制造并抽掉香煙,每個(gè)吸煙者需要三樣?xùn)|西:煙草、紙和火柴。供應(yīng)者有豐富的貨物提供。三個(gè)吸煙者中,第一個(gè)有自己的煙草,第二個(gè)有自己的紙,第三個(gè)有自己的火柴。供應(yīng)者將
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45004-2024鋼鐵行業(yè)低碳企業(yè)評(píng)價(jià)指南
- 電工電子技術(shù)(第3版) 課件 5.5 共集電極放大電路
- 銀行內(nèi)部審計(jì)報(bào)告評(píng)價(jià)制度
- 銀行合規(guī)管理制度調(diào)整
- 采購物資采購價(jià)格監(jiān)控與調(diào)整制度
- 房屋轉(zhuǎn)租簡(jiǎn)單合同(35篇)
- 《銷售基本禮儀培訓(xùn)》課件
- 榮譽(yù)升旗手演講稿(32篇)
- 《保險(xiǎn)性質(zhì)起源》課件
- 八年級(jí)英語EducationalvisitsWriting課件
- 創(chuàng)新創(chuàng)業(yè)健身房
- 2024年全球經(jīng)濟(jì)的新趨勢(shì)
- 藥店風(fēng)險(xiǎn)防范與法律解讀
- 電力管道施工施工組織設(shè)計(jì)方案
- 學(xué)校紀(jì)檢監(jiān)察工作制度樣本
- 2023-2024年人教版九年級(jí)上冊(cè)化學(xué)期末實(shí)驗(yàn)題復(fù)習(xí)
- 當(dāng)前臺(tái)海局勢(shì)分析課件
- 五金采購工作總結(jié)
- 蘇教版三年級(jí)上冊(cè)解決問題的策略應(yīng)用題100題及答案
- 質(zhì)量管理中的流程改進(jìn)與優(yōu)化
- 成長(zhǎng)賽道-模板參考
評(píng)論
0/150
提交評(píng)論