進程同步典型例題(操作系統(tǒng))_第1頁
進程同步典型例題(操作系統(tǒng))_第2頁
進程同步典型例題(操作系統(tǒng))_第3頁
進程同步典型例題(操作系統(tǒng))_第4頁
進程同步典型例題(操作系統(tǒng))_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、進程同步練習題1 .在公共汽車上,司機和售票員的工作流程如圖所示。為保證乘客的安全,司機和售票員應密切配合協(xié)調工作。請用信號量來實現(xiàn)司機與售票員之間的同步。啟動車輛司機售票員關車門售票開車門正常行車到站停車圖司機和售票員工作流程圖2 .桌子上有一只盤子,盤子中只能放一只水果。爸爸專向盤子中放蘋果,媽媽專向盤子中放橘子,一個兒子專等吃盤子中的橘子,一個女兒專等吃盤子中的蘋果。用PV操作實現(xiàn)他們之間的同步機制。3 .a,b兩點之間是一段東西向的單行車道,現(xiàn)要設計一個自動管理系統(tǒng),管理規(guī)則如下:(1)當ab之間有車輛在行駛時同方向的車可以同時駛入ab段,但另一方向的車必須在ab段外等待;(2)當ab

2、之間無車輛在行駛時,到達a點(或b點)的車輛可以進入ab段,但不能從a點和b點同時駛入;(3)當某方向在ab段行駛的車輛駛出了ab段且暫無車輛進入ab段時,應讓另一方向等待的車輛進入ab段行駛。請用信號量為工具,對ab段實現(xiàn)正確管理以保證行駛安全。4 .將只讀數(shù)據(jù)的進程稱為“讀者”進程,而寫或修改數(shù)據(jù)的進程稱為“寫者”進程。允許多個“讀者”同時讀數(shù)據(jù),但不允許“寫者”與其他“讀者”或“寫者”同時訪問數(shù)據(jù)。另外,要保證:一旦有“寫者”等待時,新到達的“讀者”必須等待,直到該“寫者”完成數(shù)據(jù)訪問為止。試用P、V操作正確實現(xiàn)“讀者”與“寫者”的同步。(第二類讀者寫者問題,信號量解決方法)5 .一條河

3、上架設了由若干個橋墩組成的一座橋。若一個橋墩只能站一個人,過河的人只能沿著橋向前走而不能向后退。過河時,只要對岸無人過,就可以過。但不允許河對岸的兩個人同時過,以防止出現(xiàn)死鎖。請給出兩個方向的人順利過河的同步算法。6有一個倉庫,可以存放A和B兩種產品,但要求:(1)每次只能存入一種產品(A或B);(2)-N<A產品數(shù)量一B產品數(shù)量<M。其中,N和M是正整數(shù)。試用同步算法描述產品A與產品B的入庫過程。1、在公共汽車上,司機和售票員的工作流程如圖所示。為保證乘客的安全,司機和售票員應密切配合協(xié)調工作。請用信號量來實現(xiàn)司機與售票員之間的同步。啟動車輛正常行車到站停車圖司機和售票員工作流程

4、圖【答案】設置兩個資源信號量:S1、S2。S1表示是否允許司機啟動汽車,其初值為0;S2表示是否允許售票員開門,其初值為0.semaphoereS1=S2=0;voidDriver()while(1)wait(S1);啟動車輛;正常行車;到站停車;signal(S2);voidBusman()while(1)關車門;signal(S1);wait(S2);開車門;main()cobeginDriver();Busman();2. 桌子上有一只盤子,盤子中只能放一只水果。爸爸專向盤子中放蘋果,媽媽專向盤子中放橘子,一個兒子專等吃盤子中的橘子,一個女兒專等吃盤子中的蘋果。用PV操作實現(xiàn)他們之間的同

5、步機制?!敬鸢浮啃盘柫縎用來實現(xiàn)盤子的互斥訪問,S1表示盤子中蘋果個數(shù),S2表示盤子中橘子的個數(shù)。semaphoreS=1,S1=S2=0;voidfather()while(1)準備蘋果;wait(S);將蘋果放在盤子內;signal(S1);voidmother()while(1)準備橘子;wait(S);將橘子放在盤子內;signal(S2);voiddaughter()while(1)wait(Sl);從盤子里拿走蘋果;signal(S);吃蘋果;voidson()while(1)wait(S2);從盤子里拿走橘子;signal(S);吃橘子;main()cobeginfather()

6、;mother();daughter();son();3. a,b兩點之間是一段東西向的單行車道,現(xiàn)要設計一個自動管理系統(tǒng),管理規(guī)則如下:(1)當ab之間有車輛在行駛時同方向的車可以同時駛入ab段,但另一方向的車必須在ab段外等待;(2)當ab之間無車輛在行駛時,到達a點(或b點)的車輛可以進入ab段,但不能從a點和b點同時駛入;(3)當某方向在ab段行駛的車輛駛出了ab段且暫無車輛進入ab段時,應讓另一方向等待的車輛進入ab段行駛。請用信號量為工具,對ab段實現(xiàn)正確管理以保證行駛安全?!敬鸢浮看祟}是讀者-寫者問題的變形。設置3個信號量S1、S2和Sab,分別用于從a點進入的車互斥訪問共享變量

7、ab(用于記錄當前ab段上由a點進入車輛的數(shù)量),從b點進入的車互斥訪問共享變量ba(用于記錄當前ab段上由b點進入車輛的數(shù)量)和a、b點的車輛互斥進入ab段。3個信號量的初值分別為1、1和1,兩個共享變量ab和ba的初值分別為0、0。semaphoreS1=1,S2=1,Sab=1;intab=ba=0;voidPab()while(1)wait(S1);if(ab=0)wait(Sab);ab=ab+1;signal(S1);車輛從a點駛向b點;wait(S1);ab=ab-1;if(ab=0)signal(Sab);signal(S1);voidPba()while(1)wait(S2)

8、;if(ba=0)wait(Sab);ba=ba+1;signal(S2);車輛從b點駛向a點;wait(S2);ba=ba-1;if(ba=0)signal(Sab);signal(S2);main()cobeginPab();Pba();4. 將只讀數(shù)據(jù)的進程稱為“讀者”進程,而寫或修改數(shù)據(jù)的進程稱為“寫者”進程。允許多個“讀者”同時讀數(shù)據(jù),但不允許“寫者”與其他“讀者”或“寫者”同時訪問數(shù)據(jù)。另外,要保證:一旦有“寫者”等待時,新到達的“讀者”必須等待,直到該“寫者”完成數(shù)據(jù)訪問為止。試用P、V操作正確實現(xiàn)“讀者”與“寫者”的同步。(第二類讀者寫者問題,信號量解決方法)【答案】為了使寫者

9、優(yōu)先,可在原來的讀優(yōu)先算法的基礎上增加一個互斥信號量s,初值為1,使得當至少有一個寫者準備訪問共享對象時,它可以使后續(xù)的讀者進程等待;整型變量writecount,初值為0,用來對寫者進行計數(shù);互斥信號量wmutex,初值為1,用來實現(xiàn)多個寫者對writecount進行互斥訪問。Processreader()while(1)wait(s);wait(rmutex);if(readcount=0)wait(mutex);readcount+;signal(rmutex);signal(s);performreadoperation;wait(rmutex);readcount-;if(readc

10、ount=0)signal(mutex);signal(rmutex);Processwriter()while(1)wait(wmutex);if(writecount=0)wait(s);writecount+;signal(wmutex);wait(mutex);performwriteoperation;signal(mutex);wait(wmutex);writecount-;if(writecount=0)signal(s);signal(wmutex);Main()cobeginreader();writer();5. 一條河上架設了由若干個橋墩組成的一座橋。若一個橋墩只能站一

11、個人,過河的人只能沿著橋向前走而不能向后退。過河時,只要對岸無人過,就可以過。但不允許河對岸的兩個人同時過,以防止出現(xiàn)死鎖。請給出兩個方向的人順利過河的同步算法。【答案】信號量s:互斥使用橋,初值為1信號量scountl:對方向1上過河人計數(shù)器countl的互斥使用,初值為1信號量scount2:對方向2上過河人計數(shù)器count2的互斥使用,初值為1信號量scount:代表橋上過河人的計數(shù)信號量,初值為橋墩個數(shù)N變量count1:方向1上過河人計數(shù)器變量count2:方向2上過河人計數(shù)器Semaphores,scount1,scount2,scount;intcount1,count2;s=1

12、;scount1=1;scount2=1;scount=N;count1=0;count2=0;voiddirect1(inti)wait(scount1);if(count1=0)wait(s);count1+;signal(scount1);wait(scount);上橋,過橋,下橋;signal(scount);wait(scount1);count1-;if(count1=0)signal(s);signal(scount1);voiddirect2(inti)wait(scount2);if(count2=0)wait(s);count2+;signal(scount2);wait(

13、scount);上橋,過橋,下橋;signal(scount);wait(scount2);count2-;if(count2=0)signal(s);signal(scount2);main()cobegindirect1(1);direct1(n);direct2(1);direct2(m);6、有一個倉庫,可以存放A和B兩種產品,但要求:(1)每次只能存入一種產品(A或B);(2)-N<A產品數(shù)量一B產品數(shù)量<M。其中,N和M是正整數(shù)。試用同步算法描述產品A與產品B的入庫過程?!敬鸢浮緼產品的數(shù)量不能比B產品的數(shù)量少N個以上,A產品的數(shù)量不能比B產品的數(shù)量多M個以上設置兩個信號量來控制A、B產品的存放數(shù)量,sa表示當前允許A產品比B產品多入庫的數(shù)量(當前允許A產品入庫數(shù)量),即在當前庫存量和B產品不入庫的情況下,還可以允許sa個A產品入庫;sb表示當前允許B產品比A產品多入庫的數(shù)量(當前允許B產品入庫數(shù)量),即在當前庫存量和A產品不入庫的情況下,還可以允許sb個B產品入庫。初始時,sa為M1,sb為N1。當往庫中存放入一個A產品時,則允許存入B產品的數(shù)量也增加1;當往庫中存放入一個B產品時,則允許存入A產品的數(shù)量也增加1

溫馨提示

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

評論

0/150

提交評論