計(jì)算機(jī)操作系統(tǒng)P V操作.ppt_第1頁(yè)
計(jì)算機(jī)操作系統(tǒng)P V操作.ppt_第2頁(yè)
計(jì)算機(jī)操作系統(tǒng)P V操作.ppt_第3頁(yè)
計(jì)算機(jī)操作系統(tǒng)P V操作.ppt_第4頁(yè)
計(jì)算機(jī)操作系統(tǒng)P V操作.ppt_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、信號(hào)量機(jī)制,P、V操作例題,信號(hào)量機(jī)制,信號(hào)量機(jī)制,wait和signal又稱(chēng)為P、V操作,P、V原語(yǔ), P、V操作的一般描述如下: P操作: (1)S減1; (2)若s減1后仍大于或等于零,則進(jìn)程繼續(xù)執(zhí)行(可進(jìn)入臨界區(qū)); (3)若s減1后小于零,則該進(jìn)程被阻塞在與該信號(hào)相對(duì)應(yīng)的隊(duì)列中,然后轉(zhuǎn)進(jìn)程調(diào)度。,P、V操作,V操作: (1)S加1; (2)若相加結(jié)果大于零,進(jìn)程繼續(xù)執(zhí)行(無(wú)等待該臨界資源的阻塞進(jìn)程); (3)若相加結(jié)果小于或等于零,則從該信號(hào)的等待隊(duì)列中喚醒一個(gè)等待進(jìn)程,然后再返回原進(jìn)程繼續(xù)執(zhí)行或轉(zhuǎn)進(jìn)程調(diào)度。,1、獨(dú)木橋問(wèn)題。某條河上只有一座獨(dú)木橋,以便行人過(guò)橋,現(xiàn)在河的兩邊都有人要

2、過(guò)橋,按照下面的規(guī)則過(guò)橋,為了保證過(guò)橋安全,請(qǐng)用P,V操作分別實(shí)現(xiàn)正確的管理。 過(guò)橋的規(guī)則:同一方向的可連續(xù)過(guò)橋,某方向有人過(guò)橋時(shí)另一方向的人要等待。,2、桌上有一空盤(pán),允許存放一只水果。爸爸可向盤(pán)中放蘋(píng)果,也可向盤(pán)中放桔子,兒子專(zhuān)等吃盤(pán)中的香蕉,女兒專(zhuān)等吃盤(pán)中的蘋(píng)果。規(guī)定當(dāng)盤(pán)空時(shí)一次只能放一只水果供吃者使用,請(qǐng)用P,V原語(yǔ)實(shí)現(xiàn)爸爸、兒子、女兒三個(gè)并發(fā)進(jìn)程的同步。,3、某寺廟,有小、老和尚若干,有一水缸,有小和尚提水入缸供老和尚飲用。水缸可容10 桶水,水取自同一井中。水井徑窄,每次只能容一個(gè)桶取水。水桶總數(shù)為3個(gè)。每次入、取缸水僅為1桶,且不可同時(shí)進(jìn)行。給出取水、入水的算法描述。,1、獨(dú)木橋

3、問(wèn)題。過(guò)橋的規(guī)則:同一方向的可連續(xù)過(guò)橋,某方向有人過(guò)橋時(shí)另一方向的人要等待。,Var Semaphore mutex,Lmutex,Rmutex=1,0,0; int Lcount=0, Rcount=0; Main() cobegin Left(); Right(); Coend Left() while (true) P(Lmutex); if Lcount=0 P(mutex); Lcount=Lcount+1; V(Lmutex) 過(guò)橋; p(Lmutex); if Lcount=0 V(mutex); Lcount=Lcount-1; V(Lmutex) ,/mutex左右兩邊過(guò)橋的

4、互斥信號(hào)量;Lcount, Rcount左右兩邊過(guò)橋人數(shù) /Lmutex, Rmutex 分別表示對(duì)Lcount, Rcount互斥訪(fǎng)問(wèn)的信號(hào)量,Right() while (true) P(Rmutex); if Rcount=0 P(mutex); Rcount=Rcount+1; V(Rmutex) 過(guò)橋; p(Rmutex); if Rcount=0 V(mutex); Rcount=Rcount-1; V(Rmutex) ,桌上有一空盤(pán),允許存放一只水果。爸爸可向盤(pán)中放蘋(píng)果和香蕉,兒子專(zhuān)等吃盤(pán)中的香蕉,女兒專(zhuān)等吃盤(pán)中的蘋(píng)果。,Var dish,apple,banana:Semapho

5、re:=1,0,0; Main() cobegin Father(); son();daugher(); Coend Father() while (true) p(dish); if 放的是蘋(píng)果 v(apple); else V(banana) ,son() while (true) p(banana);從盤(pán)子取香蕉;v(dish); 吃香蕉; daugher() while (true) p(apple);從盤(pán)子取蘋(píng)果;v(dish); 吃蘋(píng)果; ,/dish互斥使用盤(pán)子;apple盤(pán)中蘋(píng)果數(shù);banana盤(pán)中香蕉數(shù),桌上有一空盤(pán),允許存放一只水果。爸爸可向盤(pán)中放蘋(píng)果,媽媽向盤(pán)中放香蕉,兒

6、子專(zhuān)等吃盤(pán)中的香蕉,女兒專(zhuān)等吃盤(pán)中的蘋(píng)果。,Var dish,apple,banana:Semaphore:=1,0,0; Main() cobegin Father();mother();son();daugher(); Coend Father() while (true) p(dish); 將蘋(píng)果放入盤(pán)子;v(apple); Mother() while (true) p(dish);將香蕉放入盤(pán)子;v(banana); ,son() while (true) p(banana);從盤(pán)子取香蕉;v(dish); 吃香蕉; daugher() while (true) p(apple);從

7、盤(pán)子取蘋(píng)果;v(dish); 吃蘋(píng)果; ,/dish互斥使用盤(pán)子;apple盤(pán)中蘋(píng)果數(shù);banana盤(pán)中香蕉數(shù),某寺廟,有小、老和尚若干,有一水缸,有小和尚提水入缸供老和尚飲用。水缸可容10 桶水,水取自同一井中。水井徑窄,每次只能容一個(gè)桶取水。水桶總數(shù)為3個(gè)。每次入、取缸水僅為1桶,且不可同時(shí)進(jìn)行。給出取水、入水的算法描述,Semaphore mutex1=1;mutex2=1; empty=10;full=0;count=3; Main() cobegin get(); use(); coend Get() /小和尚入水 while (true) p(empty) ; p(count) ; P(mutex1); 從井中取水; v(mutex1) ; P(mutex2) ; 將水倒入缸中; v (mutex2) ; v (count) ; v (full) ; ,Use() /老和尚取水 while(true) p (full) ; p(count) ; P(mutex2) ;

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論