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

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

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

9.9 積分

下載資源

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

資源描述:

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

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

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

3、BA表示當前允許B生產(chǎn)的產(chǎn)品數(shù)量,其初值為n;另外,還需設(shè)置一個整數(shù)difference表示所銷售的A、B產(chǎn)品數(shù)量之差,而為了同步生產(chǎn)者和銷售者并使銷售的A、B產(chǎn)品的件數(shù)-n≤A的件數(shù)-B的件數(shù)≤m,還需要設(shè)置三個資源信號量,其中S對應(yīng)于倉庫中的總的產(chǎn)品量,SA對應(yīng)于倉庫中的A產(chǎn)品量,SB對應(yīng)于倉庫中的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); //入庫操作,滿足出入庫操作互斥即可 wait(mutex); add the product A to the storehouse; signal(mutex); signal(SA); //入庫產(chǎn)品A一件,所以給SA增值 signal((S); //入庫產(chǎn)品一件,所以給S增值,S是倉庫中全部產(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、 //入庫操作,滿足出入庫操作互斥即可 wait(mutex); add the product A to the storehouse; signal(mutex); signal(SB); //入庫產(chǎn)品A一件,所以給SA增值 signal((S); //入庫產(chǎn)品一件,所以給S增值,S是倉庫中全部產(chǎn)品的數(shù)量 } } process C( ) { while(1) { wait(S); //首先檢查有無產(chǎn)品,無產(chǎn)品阻塞,有產(chǎn)品,下面操作將會取走一件產(chǎn)品,所以S減1 if(difference<=-n) {wait(SA); // diffe

6、rence<=-n時只能取A產(chǎn)品一件,無A產(chǎn)品則需阻塞 //出庫操作,滿足出入庫操作互斥 wait(mutex); take a product A from storehouse; signal(mutex); difference++; //取A產(chǎn)品一件,difference++ } else if(difference>=m) { wait(SB); // difference>=m時只能取B產(chǎn)品一件,無B產(chǎn)品則需阻塞 //出庫操作,滿足出入庫操作互斥 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)品,進程C需要阻塞的情況 wait(SA); difference++;//取A產(chǎn)品一件,difference++ } else {//取的是產(chǎn)品B,則信號量SB減1,這里不可能發(fā)生沒有B產(chǎn)品,進程C需要阻塞的情況 wait(SB); difference--;//取B產(chǎn)品一件,difference-- } } Sell the product; } } main() { cobegin{ A(); B(); C(); } }

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

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

11、了ab段且暫無車輛進入ab段時,應(yīng)讓另一方向等待的車輛進入ab段行駛。 現(xiàn)定義兩個計數(shù)器CountE和CountW分別記錄東行和西行車輛進程數(shù)。用PV操作進行管理時的三個信號量為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、如果有三個進程R、W1、W2共享一個緩沖器B,而B中每次只能存放一個數(shù)。當緩沖器中無數(shù)時,進程R可以將從輸入設(shè)備上讀入的數(shù)存放到緩沖器中。若存放到緩沖器中的是奇數(shù),則允許進程W1將其取出打??;若存放到緩沖器中的是偶數(shù),則允許進程W2將其取出

15、打印。同時規(guī)定:進程R必須等緩沖區(qū)中的數(shù)被取出打印后才能再存放一個數(shù);進程W1或W2對每次存入緩沖器的數(shù)只能打印一次;W1和W2都不能從空緩沖中取數(shù)。寫出這三個并發(fā)進程能正確工作的程序。 答:S為互斥信號量,用來對緩沖器的互斥使用; SO和SE為資源信號量,SO表示是否允許進程W1打??;SE表示是否允許進程W2打印。 semaphore S=1,SO=SE=0; buffer B; process R() { int x; while(1) {從輸入設(shè)備上讀一個數(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: 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

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

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

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


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