進(jìn)程同步練習(xí)題_第1頁
進(jìn)程同步練習(xí)題_第2頁
進(jìn)程同步練習(xí)題_第3頁
進(jìn)程同步練習(xí)題_第4頁
進(jìn)程同步練習(xí)題_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、進(jìn)程同步練習(xí)題1第二類讀者寫者問題,信號量解決方法2復(fù)印室里有一個(gè)操作員為顧客復(fù)印資料,有5 把椅子供顧客休息等待復(fù)印。如果沒有顧客,則操作員休息。當(dāng)顧客來到復(fù)印室時(shí),如果有空椅子則坐下來,并喚醒復(fù)印操作員;如 果沒有空椅子則必須離開復(fù)印室。3 如果有三個(gè)進(jìn)程R、W1 W2共享一個(gè)緩沖器B,而B中每次只能存放一個(gè)數(shù)。當(dāng)緩沖器中 無數(shù)時(shí),進(jìn)程R可以將從輸入設(shè)備上讀入的數(shù)存放到緩沖器中。 若存放到緩沖器中的是奇數(shù), 則允許進(jìn)程 W1將其取出打??;若存放到緩沖器中的是偶數(shù),則允許進(jìn)程 W2將其取出打印。同時(shí)規(guī)定:進(jìn)程R必須等緩沖區(qū)中的數(shù)被取出打印后才能再存放一個(gè)數(shù);進(jìn)程W1或 W2對每次存入緩沖器的

2、數(shù)只能打印一次; W1和W2都不能從空緩沖中取數(shù)。寫出這三個(gè)并發(fā)進(jìn)程能 正確工作的程序。4現(xiàn)有四個(gè)進(jìn)程R1、R2 W1 W2它們共享可以存放一個(gè)數(shù)的緩沖器 B。進(jìn)程R1每次把來 自鍵盤的一個(gè)數(shù)存入緩沖器 B中,供進(jìn)程W1打印輸出;進(jìn)程R2每次從磁盤上讀一個(gè)數(shù)存放 到緩沖器B中,供進(jìn)程 W2打印輸出。為防止數(shù)據(jù)的丟失和重復(fù)打印,問怎樣用信號量操作 來協(xié)調(diào)這四個(gè)進(jìn)程的并發(fā)執(zhí)行。5 有一個(gè)倉庫,可以存放 A和B兩種產(chǎn)品,但要求:(1) 每次只能存入一種產(chǎn)品(A或B);(2) -Nv A產(chǎn)品數(shù)量一B產(chǎn)品數(shù)量v M其中,N和M是正整數(shù)。試用同步算法描述產(chǎn)品A與產(chǎn)品B的入庫過程。6 設(shè)有兩個(gè)生產(chǎn)者進(jìn)程 A

3、、B和一個(gè)銷售者進(jìn)程C,他們共享一個(gè)無限大的倉庫,生產(chǎn)者每 次循環(huán)生產(chǎn)一個(gè)產(chǎn)品,然后入庫供銷售;銷售者每次循環(huán)從倉庫中取出一個(gè)產(chǎn)品進(jìn)行銷售。如果不允許同時(shí)入庫,也不允許邊入庫邊出庫;而且要求生產(chǎn)和消費(fèi)A產(chǎn)品和B產(chǎn)品的件數(shù)都滿足以下關(guān)系:-nA的件數(shù)一B的件數(shù)w m其中n、m是正整數(shù)。1. 第二類讀者寫者問題,信號量解決方法答:為了使寫者優(yōu)先,可在原來的讀優(yōu)先算法的基礎(chǔ)上增加一個(gè)互斥信號量s,初值為1使得當(dāng)至少有一個(gè)寫者準(zhǔn)備訪問共享對象時(shí),它可以使后續(xù)的讀者進(jìn)程等待完成;整型變量 writecount ,初值為 0,用來對寫者進(jìn)行計(jì)數(shù);互斥信號量 mutex,初值為1,用來實(shí)現(xiàn)多個(gè)讀者對寫者wr

4、itecou nt進(jìn)行互斥訪問。Process reader() while(1)wait(s);wait(rmutex);if(readcount=0)wait(wmutex);readcount+;signal(rmutex);signal(s);perform read operation;wait(rmutex);readcount-;if(readcount=0)signal(wmutex);signal(rmutex);Process writer() while(1)wait(mutex);if(writecount=0)wait(s);writecount+;signal(mu

5、tex);wait(wmutex);perform write operation;signal(wmutex);wait(mutex); writecount-;if(writecount=0)signal(s);signal(mutex);Main( )cobegin reader();writer();2. 復(fù)印室里有一個(gè)操作員為顧客復(fù)印資料,有 5 把椅子供顧客休息等待復(fù)印。如果沒有顧 客,則操作員休息。當(dāng)顧客來到復(fù)印室時(shí),如果有空椅子則坐下來,并喚醒復(fù)印操作員;如 果沒有空椅子則必須離開復(fù)印室。答:/亠口 曰信號量:customers 表示正在等待復(fù)印的顧客數(shù)量(不包括正在復(fù)印的顧客

6、)operator 記錄正在等候顧客的操作員數(shù),只有 1 和 0mutex 用于對 waiting 的訪問 ;變量:waiting 表示等待的顧客數(shù)量。它實(shí)際上是 customers 的一個(gè)副本。之所以使用 waiting 是因?yàn)闊o法讀取 信號量的當(dāng)前值。semaphore customers=0,operator=0,mutex=1;waiting=0 ;process operator()現(xiàn)有四個(gè)進(jìn)程R1、R2 W1 W?它們共享可以存放一個(gè)數(shù)的緩沖器B。進(jìn)程R1每次把來自鍵盤的一個(gè)數(shù)存入緩沖器B中,供進(jìn)程 W1打印輸出;進(jìn)程R2每次從磁盤上讀一個(gè)數(shù)存放到緩沖器 B中,供進(jìn)程 W2打印輸出

7、。為防止數(shù)據(jù)的丟失和重復(fù)打印,問怎 樣用信號量操作來協(xié)調(diào)這四個(gè)進(jìn)程的并發(fā)執(zhí)行。答:S:互斥訪問緩沖器S1:是否可以供進(jìn)程 W1打印輸出S2:是否可以供進(jìn)程 W2打印輸出semaphore S=1,S1=S2=0; buffer B;process R1 () int x;while(1)接收來自鍵盤的數(shù)x=接收的數(shù); wait(S);B=x;signal(S1);process R2() int y;while(1)從磁盤上讀一個(gè)數(shù)y=接收的數(shù);wait(S);B=y;signal(S2);process W1() int k;while(1) wait(Sl); k=B; signal(S)

8、; 打印 k 中數(shù) ;process W2() int j;while(1)wait(S2);j=B; signal(S); 打印 j 中數(shù) ;main()cobeginR1();R2();W1();W2();5、有一個(gè)倉庫,可以存放 A和B兩種產(chǎn)品,但要求:(1)每次只能存入一種產(chǎn)品(A或B);(2) -NVA產(chǎn)品數(shù)量一B產(chǎn)品數(shù)量v M其中,N和M是正整數(shù)。試用同步算法描述產(chǎn)品 A與 產(chǎn)品 B 的入庫過程。分析:A產(chǎn)品的數(shù)量不能比B產(chǎn)品的數(shù)量少N個(gè)以上,A產(chǎn)品的數(shù)量不能比B產(chǎn)品的數(shù)量多M個(gè)以上.設(shè)置兩個(gè)信號量來控制 A B產(chǎn)品的存放數(shù)量,sa表示當(dāng)前允許 A產(chǎn)品比B產(chǎn)品多入庫的數(shù)量,即在 當(dāng)

9、前庫存量和B產(chǎn)品不入庫的情況下,還可以允許sa個(gè)A產(chǎn)品入庫;sb表示當(dāng)前允許 B產(chǎn)品比A產(chǎn)品多入庫的數(shù)量,即在當(dāng)前庫存量和 A產(chǎn)品不入庫的情況下,還可以 允許 sb 個(gè) B 產(chǎn)品入庫。初始時(shí),sa為M 1, sb為N 1。當(dāng)往庫中存放入一個(gè) A產(chǎn)品時(shí),則允許存入 B產(chǎn)品的數(shù)量也增加 1;當(dāng)往庫中存放入一個(gè) B產(chǎn)品時(shí),則允許存入 A產(chǎn)品的數(shù)量也增加1。semaphore mutex=1 , sa=M-1 , sb=N-1; process puta() while(1) 取一個(gè)產(chǎn)品;wait(sa);wait(mutex);將產(chǎn)品入庫;signal(mutex); signal(sb);proc

10、ess putb() while(1) 取一個(gè)產(chǎn)品;wait(sb);wait(mutex);將產(chǎn)品入庫;signal(mutex);signal(sa);main() cobeginputa();putb();6設(shè)有兩個(gè)生產(chǎn)者進(jìn)程 A、B和一個(gè)銷售者進(jìn)程C,他們共享一個(gè)無限大的倉庫,生產(chǎn)者每 次循環(huán)生產(chǎn)一個(gè)產(chǎn)品,然后入庫供銷售;銷售者每次循環(huán)從倉庫中取出一個(gè)產(chǎn)品進(jìn)行銷售。 如果不允許同時(shí)入庫,也不允許邊入庫邊出庫;而且要求生產(chǎn)和消費(fèi)A產(chǎn)品和B產(chǎn)品的件數(shù)都滿足以下關(guān)系:-nA的件數(shù)一B的件數(shù)w m其中n、m是正整數(shù)。分析:生產(chǎn)者 A B和消費(fèi)者之間不能同時(shí)將產(chǎn)品入庫和出庫,故倉庫是一個(gè)臨界資源

11、。生產(chǎn)的A B產(chǎn)品必須滿足:-nWA的件數(shù)一B的件數(shù)w m如練習(xí)5中,同樣的方法管理,分別使用了信號量SAB和SBA倉庫的管理只要求出入庫互斥, 由于倉庫無限大入庫只需操作互斥就可以完成, 出庫要考慮有無產(chǎn)品,SA對應(yīng)于倉庫中的 A產(chǎn)品量,SB對應(yīng)于倉庫中的 B產(chǎn)品量;銷售要滿足:-nWA的件數(shù)一B的件數(shù)w m用differenee 表示A的件數(shù)一B的件數(shù),即difference= A的件數(shù)一B的件數(shù);difference=-n 的時(shí)候,不能取產(chǎn)品 B,只能取 A difference=m 的時(shí)候,不能取 產(chǎn)品A,只能取B; -ndifferencem ,即可以取產(chǎn)品 A也可以取產(chǎn)品 B;答:

12、為了互斥地入庫和出庫,需為倉庫設(shè)置一初值為1的互斥信號量 mutex;為了使生產(chǎn)的產(chǎn)品件數(shù)滿足-nWA的件數(shù)一B的件數(shù)w m須設(shè)置兩個(gè)同步的信號量,其中SAB表示當(dāng)前允許 A生產(chǎn)的產(chǎn)品數(shù)量,其初值為m, SBA表示當(dāng)前允許 B生產(chǎn)的產(chǎn)品數(shù)量,其初值為n;另外,還需設(shè)置一個(gè)整數(shù)differenee 表示所銷售的A B產(chǎn)品數(shù)量之差,而為了同步生產(chǎn)者和銷售者并使銷售的A、B產(chǎn)品的件數(shù)- nWA的件數(shù)一B的件數(shù)wm還需要設(shè)置三個(gè)資源信號量,其中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,S

13、A=0,SB=0,mutex=1;process A( ) while(1)生產(chǎn)產(chǎn)品,-nWA的件數(shù)一B的件數(shù)w m方法同第 4題 wait(SAB);Produce a product 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)品,-nWA的件數(shù)一B的件數(shù)w m方

14、法同第 4題 wait(SBA);Produce a product B;signal(SAB);/ 入庫操作,滿足出入庫操作互斥即可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)品,所以if(difference=-n)wait(SA); / difference=m) wait(SB); /difference=m時(shí)只能取B產(chǎn)品一件,無 B產(chǎn)品則需阻塞/ 出庫操作,滿足出入庫操作互斥wait(mutex);take a product B from storehouse;signal(mutex);difference-; /取 B 產(chǎn)品一件,difference-else / -n differe ncem,即可以取產(chǎn)品A也可以取產(chǎn)品B,隨意取一件產(chǎn)品出來,之后再根據(jù)取得產(chǎn)品是 A 還是 B 進(jìn)行處理/ 出庫操作,滿足出入庫操作互斥wait(mutex);take a product A 或 B from storehouse;signal(

溫馨提示

  • 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

提交評論