




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
進程同步與互斥實例同步實例1.經(jīng)典的生產(chǎn)者─消費者問題消費者生產(chǎn)者1.經(jīng)典的生產(chǎn)者─消費者問題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/*多個子進程并發(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è)某臺機掛有兩個I/O通道:分別掛一臺輸入機和一臺打印機。卡片機上有一疊數(shù)據(jù)卡片,現(xiàn)在要把這些數(shù)據(jù)逐一輸入到緩沖區(qū)B1,然后再復制到緩沖區(qū)B2,并在打印機上打印出來。問:系統(tǒng)可設(shè)哪些進程來完成這個任務?用P-V原語寫這些進程的同步算法。解:由上圖可見,系統(tǒng)可設(shè)3個進程:輸入進程、復制進程、打印進程;分別用進程R、進程C、進程P來表示。這些進程之間的相互制約關(guān)系:
R受C的約束;C受R、P的約束;P受C的約束。設(shè)4個信號量:S1=1,S2=0,S3=1,S4=0
同步算法如下:3.理發(fā)師問題理發(fā)店里有一位理發(fā)師、一把理發(fā)椅和n把供等候理發(fā)的顧客坐的椅子如果沒有顧客,理發(fā)師便在理發(fā)椅上睡覺一個顧客到來時,它必須叫醒理發(fā)師如果理發(fā)師正在理發(fā)時又有顧客來到,則如果有空椅子可坐,就坐下來等待,否則就離開記錄型信號量解決理發(fā)師問題
varwaiting:integer;/*等候理發(fā)的顧客數(shù)*/CHAIRS:integer;/*為顧客準備的椅子數(shù)*/customers,barbers,mutex:semaphore;customers:=0;barbers:=0;waiting:=0;mutex:=1;Processbarber;beginwhile(TRUE);/*理完一人,還有顧客嗎?*/
P(cutomers);/*若無顧客,理發(fā)師睡眠*/
P(mutex);/*進程互斥*/waiting:=waiting–1;/*等候顧客數(shù)少一個*/V(barbers);/*理發(fā)師去為一個顧客理發(fā)*/
V(mutex);/*開放臨界區(qū)*/cut-hair();/*正在理發(fā)*/end;processcustomerbegin
P(mutex);/*進程互斥*/ifwaiting<CHAIRSbegin/*看看有沒有空椅子*/waiting:=waiting+1;/*等候顧客數(shù)加1*/V(customers);/*必要的話喚醒理發(fā)師*/
V(mutex);/*開放臨界區(qū)*/P(barbers);/*無理發(fā)師,顧客坐著養(yǎng)神*/get-haircut();/*一個顧客坐下等理發(fā)*/end
V(mutex);/*人滿了,走吧!*/end;互斥實例有三個用戶進程A、B和C,在運行過程中都要使用系統(tǒng)中的一臺打印機輸出計算結(jié)果。試說明A、B、C進程之間存在什么樣的制約關(guān)系?為保證這三個進程能正確地打印出各自的結(jié)果,請用信號量和P、V操作寫出各自的有關(guān)申請、使用打印機的代碼。要求給出信號量的含義和初值。
(1)
A、B、C三個進程之間存在互斥的制約關(guān)系。因為打印機屬于臨界資源,必須一個進程使用完之后另一個進程才能使用。(2)mutex:用于互斥的信號量,初值為1。各進程的代碼如下:進程A進程B進程C...…......…...
P(mutex)P(mutex)P(mutex)
申請打印機申請打印機申請打印機使用打印機使用打印機使用打印機
V(mutex)V(mutex)V(mutex)購物問題。某超級市場,可容納100個人同時購物,入口處備有籃子,每個購物者可持一個籃子入內(nèi)購物。出口處結(jié)賬,并歸還籃子(出、入口僅容納一人通過)。請用P、V操作完成購物同步算法。VarS,mutex1,mutex2:semaphore;S:=100;mutex1:=1;mutex2:=1processPi:begin P(S); P(mutex1);
進入口處,取一只籃子;
V(mutex1);
選購商品; P(mutex2);
結(jié)賬,并歸還籃子;
V(mutex2); V(S);
end獨木橋問題。某條河上只有一座獨木橋,以便行人過河?,F(xiàn)在河的兩邊都有人要過橋,按照下面的規(guī)則過橋。為了保證過橋安全,請用P、V操作分別實現(xiàn)正確的管理。
過橋的規(guī)則是:每次只有一個人通過橋。Var
mutex:semaphore;process(E-W)i:begin
P(mutex);
過橋;
V(mutex);
endprocess(W-E)j:begin
P(mutex);
過橋;
V(mutex);
end.獨木橋問題。某條河上只有一座獨木橋,以便行人過河。現(xiàn)在河的兩邊都有人要過橋,按照下面的規(guī)則過橋。為了保證過橋安全,請用P、V操作分別實現(xiàn)正確的管理。過橋的規(guī)則是:同一方向的可連續(xù)過橋,某方向有人過橋時另一方向的人要等待。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ù)量的黑棋子和白棋混裝在一個箱子里,先要用自動分揀系統(tǒng)把黑棋子和白棋子分開,該系統(tǒng)由兩個并發(fā)執(zhí)行的進程組成,系統(tǒng)功能如下:(1)進程A專門揀黑子,進程B專門揀白子;(2)每個進程每次只揀一個子,當一個進程在揀子時不允許另一進程去揀子;(3)當一個進程揀了一個子(黑或白)以后,必讓另一個進程揀一個子(黑或白)。請用P、V操作管理兩個并發(fā)進程,使其能正確實現(xiàn)上述功能。VarS1,S2:semaphore:=1,0;processA:beginrepeat P(S1);
揀黑子;
V(S2);untilfalse;
endprocessB:beginrepeat P(S2);
揀白子;
V(S1);untilfalse
end某寺廟有小、老和尚若干,有一水缸,由小和尚提水入缸供老和尚飲用。水缸可以容納10桶水,水取自同一井水。水井狹窄,每次只能容一個桶取水。水桶總數(shù)為3個。每次入、出水缸僅一桶,且不可同時進行。試給出有關(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習題1.司機和售票員問題問題描述:在公共汽車上,司機和售票員的活動分別是:司機的活動:啟動車輛正常運行到站停車售票員的活動:關(guān)車門售票開車門在汽車不斷的到站,停車,行駛過程中,這兩個活動有什么同步關(guān)系?用信號量和P,V操作實現(xiàn).2.吸煙者問題三個吸煙者在一間房間內(nèi),還有一個香煙供應者。為了制造并抽掉香煙,每個吸煙者需要三樣東西:煙草、紙和火柴。供應者有豐富的貨物提供。三個吸煙者中,第一個有自己的煙草,第二個有自己的紙,第三個有自己的火柴。供應者將
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高校學科專業(yè)設(shè)置調(diào)整對學術(shù)發(fā)展的推動作用
- 江蘇省東臺市第七聯(lián)盟2024-2025學年數(shù)學七年級第一學期期末考試試題含解析
- 遼寧省錦州市名校2024年化學九年級第一學期期末達標檢測模擬試題含解析
- 云南省澗南彝族自治縣2024-2025學年化學九年級第一學期期末統(tǒng)考模擬試題含解析
- 房屋租賃合同附帶租客入住培訓
- 汽車零部件采購合同簽訂與質(zhì)量認證要求
- 2025至2030中國印刷用紙行業(yè)市場發(fā)展分析與發(fā)展趨勢及投資前景報告
- 公交車優(yōu)化調(diào)度系統(tǒng)實施方案
- 2025至2030中國自行式割草機行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 2025至2030中國腹主動脈瘤藥行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- GB/T 42361-2023海域使用論證技術(shù)導則
- 深靜脈導管上機及下機評分標準
- 2022年湖南省事業(yè)編制招聘考試《計算機專業(yè)基礎(chǔ)知識》真題試卷【1000題】
- 全自動量熱儀說明書
- MT 194-1989煤礦用巷道支架試驗方法與型式檢驗規(guī)范
- GB/T 5359.1-2019摩托車和輕便摩托車術(shù)語第1部分:車輛類型
- 中藥學多選題含答案
- GB 11930-1989操作開放型放射性物質(zhì)的輻射防護規(guī)定
- 起重作業(yè)吊索具使用安全培訓課件
- 育嬰員中級近年考試真題匯總(含答案)
- 順德區(qū)國家工作人員因私出國(境)審批表
評論
0/150
提交評論