操作系統(tǒng)--PV操作習(xí)題補(bǔ).ppt_第1頁
操作系統(tǒng)--PV操作習(xí)題補(bǔ).ppt_第2頁
操作系統(tǒng)--PV操作習(xí)題補(bǔ).ppt_第3頁
操作系統(tǒng)--PV操作習(xí)題補(bǔ).ppt_第4頁
操作系統(tǒng)--PV操作習(xí)題補(bǔ).ppt_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、操作系統(tǒng)、1、P.V操作需要解決的同步問題解決、Get、copy、put、f、s、t、g和同步問題不能放在“滿”t中。無法從“空”t獲取Put。有三個(gè)茄子過程:get、copy和put。get、copy和put操作4個(gè)存儲(chǔ)區(qū)域f、s、t和g。其中,f有可用于get的無休止的數(shù)據(jù)。g有用的無限空間可以是put s和T,但只有一個(gè)存儲(chǔ)空間。3、4、m、2、2、(1、2)、2、3、4、m、1、1、(1)、1、2、初始值為0,get進(jìn)程: begin repeat p(s _ empty)t _ get _ s();v(S _ Full);Until falseEnd,Copy過程: Begin Re

2、peat P(S _ Full);p(T _ Empty);s _ copy _ T();v(T _ Full);v(S _ Empty);Until falseEnd,Put流程: Begin Repeat P(T _ Full);t _ put _ G();v(T _ Empty);Until false重新研究端、操作系統(tǒng)、2、司機(jī)、售票員問題,分別寫司機(jī)、售票員流程,同步牙齒問題。操作系統(tǒng),司機(jī)過程:Begin Repeat P(S _ Door);行車停車;v(S _ Stop);Until falseEnd,乘務(wù)員流程: Begin Repeat關(guān)閉了。v(S _ Door);門票

3、銷售P(S _ Stop);打開門Until falseEnd,var s _ door,s _ stop: semaphore :=0,0,操作系統(tǒng),司機(jī)進(jìn)程:Begin Repeat P(door);行車停車;v(停止);Until falseEnd,乘務(wù)員流程: Begin Repeat P(stop);開門關(guān)門V(門);門票銷售Until falseEnd,Var door,stop : semaphore: 1,0,操作系統(tǒng),3,桌子上有空盤子,可以存放一只水果??梢栽诎职直P子里放蘋果,在盤子里放橘子,兒子等可以吃盤子里的橘子,女兒也可以吃盤子里的蘋果。規(guī)定盤子空著的時(shí)候一次只能吃一

4、個(gè)水果。用p,V原語同步爸爸,兒子,女兒的三個(gè)茄子并發(fā)進(jìn)程。分析:在牙齒主題中,爸爸、兒子和女兒共享一個(gè)每次只能放一種水果的盤子。盤子牙齒空的時(shí)候,爸爸可以把一個(gè)水果放在水果盤里。在水果盤里放橙子,可以兒子吃,女兒要等。把蘋果放在水果盤里,要讓女兒吃,兒子等。牙齒問題實(shí)際上是生產(chǎn)者-消費(fèi)者問題的變體。這里生產(chǎn)者放緩沖區(qū)產(chǎn)品有兩種茄子,消費(fèi)者也有兩種茄子。每個(gè)消費(fèi)者只消費(fèi)其中固定的產(chǎn)品。操作系統(tǒng),S:指示盤子是否為空,初始值為L。牛:指示盤子里是否有橙子。初始值為0。Sa:表示盤子里是否有蘋果。初始值為0。三個(gè)信號(hào)標(biāo):S、So、Sa和Daughter進(jìn)程設(shè)置:while(1)P(Sa);從盤子里

5、拿出蘋果。v(S);吃蘋果,F(xiàn)ather過程:while(1)P(S);在盤子里放水果。If(插入橙色)V(So);else V(Sa);Son進(jìn)程:while(1)P(So);從盤子里拿出橘子。v(S);吃橘子、操作系統(tǒng)、分析問題所涉及的過程;分析問題的同步關(guān)系(競爭、合作);其中合作關(guān)系的解決也是通過轉(zhuǎn)向?qū)Y源的競爭來實(shí)現(xiàn)的。)參考競爭資源設(shè)置信號(hào)量并賦予初始值。為每個(gè)進(jìn)程創(chuàng)建說明。檢查每個(gè)進(jìn)程的說明,以確定是否出現(xiàn)死鎖現(xiàn)象并進(jìn)行更正。摘要:同步問題解決、操作系統(tǒng)、具體規(guī)范格式如下(以蘋果橙標(biāo)題為例),int S1Int Sa0Int So0主()cobe ginfather();/*爸爸

6、進(jìn)程*/son();/*兒子進(jìn)程*/daughter();/*女兒進(jìn)程*/coend,解決:設(shè)置三個(gè)信號(hào)量S,So,Sa。信號(hào)量S表示盤子是否為空,初始值為L。信號(hào)標(biāo)So表示盤子中是否有桔子,初始值為0。信號(hào)量Sa表示盤子里是否有蘋果,初始值為0。同步說明如下:father()while(1)P(S);在盤子里放水果。If(插入橙色)V(So);else V(Sa);son()while(1)P(So);從盤子里拿出橙子。v(S);吃橘子,daughter()while(1)P(Sa);從盤子里拿出蘋果。v(S);吃蘋果,操作系統(tǒng),作業(yè):睡眠理發(fā)師問題,操作系統(tǒng),作業(yè):睡眠理發(fā)師問題,問題說明

7、(經(jīng)典理發(fā)師問題)假設(shè)后面的街上有理發(fā)店,商店就有理發(fā)師,理發(fā)師,n牙齒,椅子等理發(fā)的顧客。(1)。沒有顧客的話,就在理發(fā)師理發(fā)店睡覺。(2)。一位顧客到達(dá)后,首先確認(rèn)理發(fā)師在做什么,如果在睡覺,告訴他理發(fā)師理發(fā),然后坐在理發(fā)椅上開始理發(fā)。如果你在理發(fā)師牙齒理發(fā),確保有空的椅子牙齒,如果有,他就坐著等,否則就離開。(3)。為一名理發(fā)師理發(fā)后,確定是否有人在等,如果有,就為理發(fā)叫醒一名,如果沒有,就在理發(fā)椅上睡覺(看報(bào)紙)。(4)。客戶必須在優(yōu)先級(jí)、操作系統(tǒng)、作業(yè):睡眠理發(fā)師問題、問題分析標(biāo)題中說明理發(fā)師和客戶的行為,因此兩種茄子類型的過程Barber()和Customer()必須分別說明理發(fā)師

8、和客戶的行為。看理發(fā)師報(bào)紙的時(shí)候,顧客最近理發(fā)師理發(fā),顧客在的時(shí)候理發(fā)師理發(fā),不在的時(shí)候看理發(fā)師報(bào)紙,所以理發(fā)師和顧客之間是同步的關(guān)系。每個(gè)理發(fā)師只能理發(fā)一個(gè)人,可以等的椅子限制是n個(gè),即理發(fā)師和椅子是臨界資源,因此客戶之間是相互排斥的關(guān)系。因此,引入3個(gè)信號(hào)量和1個(gè)控制變量:1)控制變量waiting用于記錄等待理發(fā)的顧客數(shù),初始值全部為0。2)信號(hào)量customers記錄等待理發(fā)的顧客數(shù),用作切斷理發(fā)師過程,初始值為0。3)信號(hào)量barbers用于記錄等待客戶的理發(fā)師數(shù),并阻止客戶流程,初始值為0。4)訊號(hào)量mutex用于mutex,初始值為1,操作系統(tǒng),作業(yè):睡眠理發(fā)師問題,問題實(shí)現(xiàn)PV

9、操作代碼如下: intwaiting=0;/等待理發(fā)的客戶數(shù)int chairs=n;/客戶的椅子數(shù)semaphorecustomers=0,barbers=0,mutex=1;barber()while(TRUE);/一個(gè)人都整理好了,有客人嗎?p(客戶);/如果沒有客戶,則理發(fā)師睡眠p(互斥鎖);/流程互不相容waiting :=waiting 1;/等待客戶數(shù)少一個(gè)(barbers)。/理發(fā)師客戶理發(fā)v(互斥鎖);/開放臨界區(qū)域cut-hair();/理發(fā)中,操作系統(tǒng),作業(yè):睡眠理發(fā)師問題,問題實(shí)現(xiàn)(繼續(xù))客戶()p(互斥鎖);/處理互斥if(waiting)waiting :=wait

10、ing 1;/等待客戶數(shù)加1V(客戶)。/如有必要,請喚醒理發(fā)師v(互斥鎖)。/開放臨界區(qū)域P(barbers);/無理發(fā)師,客戶坐下來get-hair cut();/一名客戶坐下/else v(互斥鎖);/人滿了,走吧!操作系統(tǒng),理發(fā)師問題:理發(fā)店有入口和出口。理發(fā)店有一個(gè)能容納5名顧客的站位球、4個(gè)單人沙發(fā)、3個(gè)理發(fā)師、1個(gè)專用理發(fā)工具和1個(gè)收銀臺(tái)。新來的顧客坐在沙發(fā)上等著??丈嘲l(fā),不能在車站座位區(qū)等;站位區(qū)滿了,只能在入口外等。理發(fā)師可以從事理發(fā)、收銀員、休息三種茄子活動(dòng)。理發(fā)店活動(dòng)符合以下條件:休息的理發(fā)師位置坐在自己專用的理發(fā)椅上,不占用顧客的沙發(fā)。2)處理休息狀態(tài)的理發(fā)師,可以為等

11、待沙發(fā)時(shí)間最長的顧客理發(fā)。理發(fā)時(shí)間取決于理發(fā)師的決定。在站石區(qū)等待時(shí)間最長的顧客可以坐在悠閑的理發(fā)室。5)一次最多只能收納一名理發(fā)師。使用信號(hào)量機(jī)制或官定機(jī)制實(shí)現(xiàn)理發(fā)師流程和客戶流程。操作系統(tǒng),原則:(1)客戶流程:首先檢查站座位是否已滿(stand_capacity)在站位區(qū)等待沙發(fā)空位(信號(hào)量sofa),沙發(fā)滿了,就會(huì)進(jìn)入阻塞等待隊(duì)列,直到出現(xiàn)空位為止,站位區(qū)等待時(shí)間最長的顧客離開站位區(qū)(stand_capacity)。坐在沙發(fā)上等理發(fā)椅(barber_chair),當(dāng)理發(fā)椅滿了,就會(huì)進(jìn)入阻擋排隊(duì)等待直到出現(xiàn)空位,沙發(fā)等待時(shí)間最長的顧客離開沙發(fā)(信號(hào)量sofa解除)。坐在理發(fā)椅上,解開準(zhǔn)備

12、的信號(hào)(customer_ready),獲得理發(fā)師號(hào)碼(01的號(hào)碼)。等待理發(fā)師理發(fā)結(jié)束(finishedbarber_number)。離開理發(fā)椅之前,離開支付、收據(jù)、理發(fā)椅(leave_barberchair)。最后離開理發(fā)店。操作系統(tǒng),有幾點(diǎn)需要注意。a)首先需要相互排斥處理的幾個(gè)地方,主要是:入席區(qū),進(jìn)入沙發(fā),進(jìn)入理發(fā)椅,支付多個(gè)地方等。b)通過barber_chair保證理發(fā)椅上最多只有一個(gè)客戶。但是僅憑baber_chair并不能保證在一個(gè)顧客離開理發(fā)椅之前,另一個(gè)顧客不會(huì)坐在理發(fā)椅上,因此增加信號(hào)量leave_barberchair,以便顧客離開理發(fā)椅后釋放信號(hào),如果收到理發(fā)師信號(hào)

13、,就會(huì)釋放Barber。c)在理發(fā)過程中,確保自己理完發(fā)后,可以支付以下款項(xiàng),并進(jìn)行離開理發(fā)椅的活動(dòng)。牙齒機(jī)制通過customer流程獲取理發(fā)的理發(fā)師號(hào)碼,當(dāng)該號(hào)碼的理發(fā)師釋放出相應(yīng)的finishedi信號(hào)時(shí),客戶可以完成理發(fā)。d)理發(fā)師是通過mutex信號(hào)量,確保他們每個(gè)人只能同時(shí)操作一個(gè)茄子(理發(fā)或收款)。e)為了讓牙齒顧客在理發(fā)結(jié)束后立即付款離開,要保證在給牙齒顧客理發(fā)的理發(fā)師理發(fā)結(jié)束后,立即去收銀臺(tái)代替下一次顧客服務(wù)進(jìn)行收帳工作。在偽代碼中,顧客在發(fā)出離開理發(fā)椅的信號(hào)之前發(fā)出支付信號(hào)的機(jī)制。這樣,牙齒理發(fā)師就沒有收到離開顧客理發(fā)椅子的信號(hào),不能進(jìn)入下一個(gè)循環(huán)的下一個(gè)顧客服務(wù),只能操作收

14、款臺(tái)的收款。顧客收到收據(jù)后,才解開離開理發(fā)椅的信號(hào),離開理發(fā)椅,釋放理發(fā)師牙齒理發(fā)椅的信號(hào),讓等待下一位的顧客坐在理發(fā)椅上。操作系統(tǒng),(2)barber流程首先將理發(fā)師編號(hào)排隊(duì),以便客戶提取。等顧客坐在理發(fā)椅上(信號(hào)量customer_ready),開始理發(fā),理發(fā)結(jié)束后發(fā)出結(jié)束信號(hào)(finishedi)??蛻綦x開理發(fā)廳(leave_barberchair)(在時(shí)段結(jié)帳臺(tái)進(jìn)行收帳活動(dòng)時(shí)),松開理發(fā)師空閑信號(hào)(barber_chair),等待下一位客戶坐下。(3)現(xiàn)金(收銀臺(tái))流程等待客戶付款(payment)、執(zhí)行收款工作、終止收款工作和收款付款(receipt)。,操作系統(tǒng),信號(hào)量總表:信號(hào)量

15、wait signal stand_capacity客戶在等進(jìn)入美容院。顧客在等著離開站位。sofa客戶正在等待沙發(fā)客戶離開沙發(fā)barber_chair客戶。正在等待空理發(fā)師理發(fā)師的釋放。customer_ready理發(fā)師等待。一位客戶坐在理發(fā)椅上,向理發(fā)師mutex發(fā)出理發(fā)師閑置等待、理發(fā)或收款工作理發(fā)師執(zhí)行理發(fā)或收款結(jié)束、空閑互斥鎖1進(jìn)入隊(duì)列、排隊(duì)、出隊(duì)或出隊(duì)的信號(hào),等待信號(hào)finishedi客戶發(fā)出信號(hào),等待該號(hào)碼理發(fā)師理發(fā)結(jié)束。(注:,)理發(fā)師理發(fā)結(jié)束,解除信號(hào)leave_barberchair理發(fā)師等待客戶理發(fā)客完成付款,收到收據(jù),理理發(fā)椅解除信號(hào)paymentsemap hore

16、sofa=4;semaphore barber _ chair=3;semaphore customer _ ready=0;semap hore mutex=3;Semaphore mutex1=1Semaphore finished3=0,0,0;semaphore leave _ barber chair=0;semap hore payment=0;semap hore receipt=0;操作系統(tǒng),void customer()int barber _ number;wait(stand _ capacity);/等待進(jìn)入理發(fā)店enter _ room();/進(jìn)入理發(fā)店wait(sofa);/沙發(fā)備用leave _ stand _ section();/工作站座位區(qū)域signal(stand _ capacity);sit _ on _ sofa();/坐在沙發(fā)上wait(barber _ chair);/理發(fā)師大

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論