部分習(xí)題答案_第1頁
部分習(xí)題答案_第2頁
部分習(xí)題答案_第3頁
部分習(xí)題答案_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第3章 部分習(xí)題答案.為什么進(jìn)程在進(jìn)入臨界區(qū)之前,應(yīng)先執(zhí)行進(jìn)入?yún)^(qū)代碼,在退出臨界區(qū)后又執(zhí)行退出區(qū)代碼為了實(shí)現(xiàn)多個(gè)進(jìn)程對臨界資源的互斥訪問,必須在臨界區(qū)前面增加一段用于檢查欲訪問的臨界資源是否正 被訪問的代碼,如果未被訪問,該進(jìn)程便可進(jìn)入臨界區(qū)對資源進(jìn)行訪問,并設(shè)置正被訪問標(biāo)志,如果正被 訪問,則本進(jìn)程不能進(jìn)入臨界區(qū),實(shí)現(xiàn)這一功能的代碼成為進(jìn)入?yún)^(qū)代碼;在退出臨界區(qū)后,必須執(zhí)行退出區(qū)代碼,用于恢復(fù)未被訪問標(biāo)志同步機(jī)構(gòu)應(yīng)遵循哪些基本準(zhǔn)則為什么a.空閑讓進(jìn).b.忙則等待.c.有限等待.d.讓權(quán)等待.你認(rèn)為整型信號量機(jī)制和記錄型信號量機(jī)制,是否完全遵循了同步機(jī)構(gòu)的四條準(zhǔn)則a.在整型信號量機(jī)制中,未遵循讓

2、權(quán)等待的準(zhǔn)則.b.記錄型信號量機(jī)制完全遵循了同步機(jī)構(gòu)的空閑讓進(jìn),忙則等待,有限等待,讓權(quán)等待四條準(zhǔn)則.在生產(chǎn)者消費(fèi)者問題中,如果缺少了signal(full)或signal(empty),對執(zhí)行結(jié)果會有何影響 生產(chǎn)者消費(fèi)者問題可描述如下: var mutex,empty,full: semaphore:=1,n,0;buffer: array0,.,n-1 of item;in,out: integer:=0,0;begin parbegin producer: begin repeat produce an item in nextp;wait(empty);wait(mutex);buff

3、er(in):=nextp;in:=(in+1) mod n;signal(mutex);/* * */ signal(full);/* * */ until false;end consumer: begin repeat wait(full);wait(mutex);nextc:=buffer(out);out:=(out+1) mod n; signal(mutex);/* * */signal(empty);/* * */ consume the item in nextc;until false;end parendend可見, 生產(chǎn)者可以不斷地往緩沖池送消息, 如果緩沖池滿, 就會

4、覆蓋原有數(shù)據(jù), 造成數(shù)據(jù)混亂 終因wait(full)操作將消費(fèi)進(jìn)程直接送入進(jìn)程鏈表進(jìn)行等待,無法訪問緩沖池,造成無限等待.在生產(chǎn)者消費(fèi)者問題中, 如果將兩個(gè)wait操作即wait(full)和wait(mutex)互換位置;或者是將signal(mutex)與signal(full)互換位置結(jié)果會如何var mutex,empty,full: semaphore:=1,n,0;buffer: array0,.,n-1 of item;in,out: integer:=0,0;begin parbegin producer: begin repeat produce an item in ne

5、xtp;wait(empty);wait(mutex);buffer(in):=nextp;in:=(in+1) mod n;/* * */ signal(full);signal(mutex);/* * */ until false;end consumer: begin repeat /* * */ wait(mutex);wait(full);/* * */ nextc:=buffer(out);out:=(out+1) mod n;signal(mutex); signal(empty);consume the item in nextc;until false;end parend

6、endwait(full)和wait(mutex)互換位置后,因?yàn)閙utex在這兒是全局變量,執(zhí)行完wait(mutex),則mutex賦值 為0,倘若full也為0,則該生產(chǎn)者進(jìn)程就會轉(zhuǎn)入進(jìn)程鏈表進(jìn)行等待,而生產(chǎn)者進(jìn)程會因全局變量mutex為0而進(jìn)行等待,使full始終為0,這樣就形成了死鎖.而signal(mutex)與signal(full)互換位置后,從邏輯上來說應(yīng)該是一樣的.我們?yōu)槟撑R界區(qū)設(shè)置一把鎖W,當(dāng)W=1時(shí),表示關(guān)鎖;W=0時(shí),表示鎖已打開.試寫出開鎖原語和關(guān)鎖原語,并利用它們?nèi)?shí)現(xiàn)互斥.開鎖原語: unlock(W):W=0;關(guān)鎖原語: lock(W);if(W=1) do

7、no_op;W=1;利用開關(guān)鎖原語實(shí)現(xiàn)互斥var W: semaphore:=0;begin parbegin process : begin repeat lock(W); critical section unlock(W);remainder section until false;end parend.而消費(fèi)者始試修改下面生產(chǎn)者消費(fèi)者問題解法中的錯(cuò)誤producer: begin repeat producer an item in nextp;wait(mutex);wait(full); /*應(yīng)為wait(empty),而且還應(yīng)該在wait(mutex)的前面*/ buffer(i

8、n):=nextp;/*緩沖池?cái)?shù)組游標(biāo)應(yīng)前移: in:=(in+1) mod n; */ signal(mutex);/* signal(full); */until false;end consumer: begin repeat wait(mutex);wait(empty); /*應(yīng)為wait(full),而且還應(yīng)該在wait(mutex)的前面*/ nextc:=buffer(out);out:=out+1; /*考慮循環(huán),應(yīng)改為: out:=(out+1) mod n; */ signal(mutex);/* signal(empty); */ consumer item in ne

9、xtc;until false;end試?yán)糜涗浶托盘柫繉懗鲆粋€(gè)不會出現(xiàn)死鎖的哲學(xué)家進(jìn)餐問題的算法.設(shè)初始值為1的信號量cl表示I號筷子被拿(1=1,2,3,4,2n),其中n為自然數(shù).send(I):Begin if I mod 2=1 thenP(cI);P(cI-1 mod 5);Eat;V(cI-1 mod 5);V(cI);elseP(cI-1 mod 5);P(cI);Eat;V(cI);V(cI-1 mod 5);End在測量控制系統(tǒng)中的數(shù)據(jù)采集任務(wù),把所采集的數(shù)據(jù)送一單緩沖區(qū);計(jì)算任務(wù)從該單緩沖中取出數(shù)據(jù)進(jìn)行計(jì)算.試寫出利用信號量機(jī)制實(shí)現(xiàn)兩者共享單緩沖的同步算法.int mut

10、ex=1;int empty=n;int full=0;int in=0;int out=0;main()cobegin send();obtain();coend send() while(1) collect data in nextp;wait(empty); wait(mutex);buffer(in)=nextp;in=(in+1) mod n;signal(mutex);signal(full);為解決并行所帶來的死鎖問題,在wait操作中引入AND條件,其基本思想是將進(jìn)程在整個(gè)運(yùn)行過程中所 需要的所有臨界資源,一次性地全部分配給進(jìn)程,用完后一次性釋放.解決生產(chǎn)者消費(fèi)者問題可描述如

11、下var mutex,empty,full: semaphore:=1,n,0;buffer: array0,.,n-1 of item;in,out: integer:=0,0;begin parbegin producer: begin repeat produce an item in nextp;wait(empty);wait(s1,s2,s3,.,sn); .,sn為執(zhí)行生產(chǎn)者進(jìn)程除empty外其余的條件wait(mutex);buffer(in):=nextp;in:=(in+1) mod n;signal(mutex);signal(full);signal(s1,s2,s3,.,sn);until false;end consumer: begin repeatwait(full);wait(k1,k2,k3,.,kn); .,kn為執(zhí)行消費(fèi)者進(jìn)程除full外其余的條件wait(mutex);nextc:=buffer(out);out:=(out+1) mod n;signal(mutex);signal(empty);signal(k1,k2,k3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論