操作系統(tǒng) 作業(yè)答案

上傳人:xt****7 文檔編號(hào):90083045 上傳時(shí)間:2022-05-14 格式:DOC 頁(yè)數(shù):7 大?。?8KB
收藏 版權(quán)申訴 舉報(bào) 下載
操作系統(tǒng) 作業(yè)答案_第1頁(yè)
第1頁(yè) / 共7頁(yè)
操作系統(tǒng) 作業(yè)答案_第2頁(yè)
第2頁(yè) / 共7頁(yè)
操作系統(tǒng) 作業(yè)答案_第3頁(yè)
第3頁(yè) / 共7頁(yè)

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《操作系統(tǒng) 作業(yè)答案》由會(huì)員分享,可在線閱讀,更多相關(guān)《操作系統(tǒng) 作業(yè)答案(7頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、第九題 設(shè)有兩個(gè)生產(chǎn)者進(jìn)程A、B和一個(gè)銷售者進(jìn)程C,他們共享一個(gè)無(wú)限大的倉(cāng)庫(kù),生產(chǎn)者每次循環(huán)生產(chǎn)一個(gè)產(chǎn)品,然后入庫(kù)供銷售;銷售者每次循環(huán)從倉(cāng)庫(kù)中取出一個(gè)產(chǎn)品進(jìn)行銷售。如果不允許同時(shí)入庫(kù),也不允許邊入庫(kù)邊出庫(kù);而且要求生產(chǎn)和消費(fèi)A產(chǎn)品和B產(chǎn)品的件數(shù)都滿足以下關(guān)系:-n≤A的件數(shù)-B的件數(shù)≤m,其中n、m是正整數(shù)。 分析:生產(chǎn)者A、B和消費(fèi)者之間不能同時(shí)將產(chǎn)品入庫(kù)和出庫(kù),故倉(cāng)庫(kù)是一個(gè)臨界資源。 生產(chǎn)的A、B產(chǎn)品必須滿足:-n≤A的件數(shù)-B的件數(shù)≤m,如練習(xí)5中,同樣的方法管理,分別使用了信號(hào)量SAB和SBA; 倉(cāng)庫(kù)的管理只要求出入庫(kù)互斥,由于倉(cāng)庫(kù)無(wú)限大入庫(kù)只需操作互斥就可以完成,出庫(kù)要

2、考慮有無(wú)產(chǎn)品,SA對(duì)應(yīng)于倉(cāng)庫(kù)中的A產(chǎn)品量,SB對(duì)應(yīng)于倉(cāng)庫(kù)中的B產(chǎn)品量; 銷售要滿足:-n≤A的件數(shù)-B的件數(shù)≤m,用difference表示A的件數(shù)-B的件數(shù),即difference= A的件數(shù)-B的件數(shù);difference==-n的時(shí)候,不能取產(chǎn)品B,只能取A;difference==m的時(shí)候,不能取產(chǎn)品A,只能取B;-n

3、BA表示當(dāng)前允許B生產(chǎn)的產(chǎn)品數(shù)量,其初值為n;另外,還需設(shè)置一個(gè)整數(shù)difference表示所銷售的A、B產(chǎn)品數(shù)量之差,而為了同步生產(chǎn)者和銷售者并使銷售的A、B產(chǎn)品的件數(shù)-n≤A的件數(shù)-B的件數(shù)≤m,還需要設(shè)置三個(gè)資源信號(hào)量,其中S對(duì)應(yīng)于倉(cāng)庫(kù)中的總的產(chǎn)品量,SA對(duì)應(yīng)于倉(cāng)庫(kù)中的A產(chǎn)品量,SB對(duì)應(yīng)于倉(cāng)庫(kù)中的B產(chǎn)品量,它們的初值都為0. Semaphore SAB=m,SBA=n,S=0,SA=0,SB=0,mutex=1; process A( ) { while(1) {//生產(chǎn)產(chǎn)品,-n≤A的件數(shù)-B的件數(shù)≤m,方法同第4題 wait(SAB); Produce a produ

4、ct A; signal(SBA); //入庫(kù)操作,滿足出入庫(kù)操作互斥即可 wait(mutex); add the product A to the storehouse; signal(mutex); signal(SA); //入庫(kù)產(chǎn)品A一件,所以給SA增值 signal((S); //入庫(kù)產(chǎn)品一件,所以給S增值,S是倉(cāng)庫(kù)中全部產(chǎn)品的數(shù)量 } } process B( ) { while(1) {//生產(chǎn)產(chǎn)品,-n≤A的件數(shù)-B的件數(shù)≤m,方法同第4題 wait(SBA); Produce a product B; signal(SAB);

5、 //入庫(kù)操作,滿足出入庫(kù)操作互斥即可 wait(mutex); add the product A to the storehouse; signal(mutex); signal(SB); //入庫(kù)產(chǎn)品A一件,所以給SA增值 signal((S); //入庫(kù)產(chǎn)品一件,所以給S增值,S是倉(cāng)庫(kù)中全部產(chǎn)品的數(shù)量 } } process C( ) { while(1) { wait(S); //首先檢查有無(wú)產(chǎn)品,無(wú)產(chǎn)品阻塞,有產(chǎn)品,下面操作將會(huì)取走一件產(chǎn)品,所以S減1 if(difference<=-n) {wait(SA); // diffe

6、rence<=-n時(shí)只能取A產(chǎn)品一件,無(wú)A產(chǎn)品則需阻塞 //出庫(kù)操作,滿足出入庫(kù)操作互斥 wait(mutex); take a product A from storehouse; signal(mutex); difference++; //取A產(chǎn)品一件,difference++ } else if(difference>=m) { wait(SB); // difference>=m時(shí)只能取B產(chǎn)品一件,無(wú)B產(chǎn)品則需阻塞 //出庫(kù)操作,滿足出入庫(kù)操作互斥 wait(mutex); take a product B

7、 from storehouse; signal(mutex); difference--; //取B產(chǎn)品一件,difference-- } else { //-n

8、SA減1,這里不可能發(fā)生沒有A產(chǎn)品,進(jìn)程C需要阻塞的情況 wait(SA); difference++;//取A產(chǎn)品一件,difference++ } else {//取的是產(chǎn)品B,則信號(hào)量SB減1,這里不可能發(fā)生沒有B產(chǎn)品,進(jìn)程C需要阻塞的情況 wait(SB); difference--;//取B產(chǎn)品一件,difference-- } } Sell the product; } } main() { cobegin{ A(); B(); C(); } }

9、 例題20解答   本題是一個(gè)有限緩沖區(qū)的生產(chǎn)者消費(fèi)者問題,關(guān)鍵是找到緩沖區(qū)資源,以及誰(shuí)是生產(chǎn)者、誰(shuí)是消費(fèi)者。   本題中煙草、紙和火柴應(yīng)該看作是產(chǎn)品,桌子是緩沖區(qū)。問題是有幾種產(chǎn)品。煙草、紙和火柴三種原料又不能簡(jiǎn)單地看成是三種產(chǎn)品,因?yàn)樗鼈儾⒉皇且詥为?dú)的形式被三個(gè)吸煙者進(jìn)程所競(jìng)爭(zhēng)的,而是以固定的組合被三個(gè)進(jìn)程所申請(qǐng)的。因此可以考慮:設(shè)置三個(gè)信號(hào)量r、s和t,分別代表三種原料組合,即r表示煙草和紙,s表示紙和火柴,t表示煙草和火柴,初值均為0;桌面上一次只能放一種組合,可以看作是放一個(gè)產(chǎn)品的緩沖區(qū),設(shè)置信號(hào)量empty初值為1,控制經(jīng)銷商往桌子上放原料;對(duì)于三個(gè)吸煙者的申請(qǐng)動(dòng)作也要加以

10、判斷,用三個(gè)變量smoker1、smoker2、smoker3,初值為false,當(dāng)為true時(shí),表示申請(qǐng)資源,得到資源后置為false。四個(gè)進(jìn)程循環(huán)往復(fù),并發(fā)執(zhí)行。      經(jīng)銷商進(jìn)程:      吸煙者1進(jìn)程:?      吸煙者2進(jìn)程:?      吸煙者3進(jìn)程:    第一題44. a、b兩點(diǎn)之間是一段東西向的單行車道,現(xiàn)要設(shè)計(jì)一個(gè)自動(dòng)管理系統(tǒng),管理規(guī)則如下:當(dāng)a、b之間有車輛在行駛時(shí)同方向的車可以同時(shí)駛?cè)隺b段,但另一方向的車必須在ab段外等待;當(dāng)ab之間無(wú)車輛在行駛時(shí),到達(dá)a點(diǎn)(或b點(diǎn))的車輛可以進(jìn)入ab段,但不能從a點(diǎn)和b點(diǎn)同時(shí)駛?cè)耄划?dāng)某方向在ab段駛出

11、了ab段且暫無(wú)車輛進(jìn)入ab段時(shí),應(yīng)讓另一方向等待的車輛進(jìn)入ab段行駛。 現(xiàn)定義兩個(gè)計(jì)數(shù)器CountE和CountW分別記錄東行和西行車輛進(jìn)程數(shù)。用PV操作進(jìn)行管理時(shí)的三個(gè)信號(hào)量為S、SE、SW,程序結(jié)構(gòu)如下: begin S, SE, SW: semaphore; CountE, CountW: Integer; CountE := ____(1)_0___; CountW := ____(2)_0___; S := ____(3)_1___; SE := ____(4)_1___; SW := ____(5)1____; cobegin P

12、rocess EASTi (i=1, 2, 3, …) begin ____(6)_P(SE)___; if CountE = 0 then____(7)P(S)____; CountE := CountE+1; ____(8)_V(SE)___; pass(ab); ____(9)_P(SE)___; CountE := CountE-1; if CountE = 0 then ____(10)_V(S)___; ____(11)_V(SE)___; end; Process WEST

13、j(j=1, 2, 3, …) Begin ____(12)_P(SW)___; if CountW = 0 then ____(13)_P(S)___; CountW := CountW+1; ____(14)_V(SW)___; pass(ba); ____(15)_P(SW)___; CountW := CountW-1; if CountW = 0 then ____(16)_V(S)___; ____(17)_V(SW)___; end; coend; end; 44.

14、 (1) 0 (2) 0 (3) 1 (4) 1 (5) 1 (6) P(SE) (7) P(S) (8) V(SE) (9) P(SE) (10) V(S) (11) V(SE) (12) P(SW) (13) P(S) (14) V(SW) (15) P(SW) (16) V(S) (17) V(SW) 3、如果有三個(gè)進(jìn)程R、W1、W2共享一個(gè)緩沖器B,而B中每次只能存放一個(gè)數(shù)。當(dāng)緩沖器中無(wú)數(shù)時(shí),進(jìn)程R可以將從輸入設(shè)備上讀入的數(shù)存放到緩沖器中。若存放到緩沖器中的是奇數(shù),則允許進(jìn)程W1將其取出打印;若存放到緩沖器中的是偶數(shù),則允許進(jìn)程W2將其取出

15、打印。同時(shí)規(guī)定:進(jìn)程R必須等緩沖區(qū)中的數(shù)被取出打印后才能再存放一個(gè)數(shù);進(jìn)程W1或W2對(duì)每次存入緩沖器的數(shù)只能打印一次;W1和W2都不能從空緩沖中取數(shù)。寫出這三個(gè)并發(fā)進(jìn)程能正確工作的程序。 答:S為互斥信號(hào)量,用來對(duì)緩沖器的互斥使用; SO和SE為資源信號(hào)量,SO表示是否允許進(jìn)程W1打??;SE表示是否允許進(jìn)程W2打印。 semaphore S=1,SO=SE=0; buffer B; process R() { int x; while(1) {從輸入設(shè)備上讀一個(gè)數(shù); x=接收的數(shù); wait(S); B=x; if B=奇數(shù) then signal(SO); else signal(SE); } } process W1() { int y; while(1) { wait(SO); y=B; signal(S); 打印y中數(shù);} } process W2() { int z; while(1) { wait(SE); z=B; signal(S); 打印z中數(shù) ;} } main() {cobegin { R(); W1(); W2();} }

展開閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!