資源描述:
《操作系統(tǒng)--PV操作》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、1、用P.V操作解決下面的同步問(wèn)題getcopyputfstg要解決的同步問(wèn)題:Get不能向“滿”的S中放;Copy不能從“空”的S中??;不能向“滿”的T中放;Put不能從“空”的T中取有3個(gè)進(jìn)程:get,copy和put,它們對(duì)4個(gè)存儲(chǔ)區(qū)域f、s、t和g進(jìn)行操作:其中:f有取之不盡的數(shù)據(jù)可以get;g有用之不完的空間可以puts和t則只有一個(gè)存儲(chǔ)空間。3,4,...,m22(1,2…)2,3,4,...,m11(1…)1,2,3,4,...,m(…)(同步)信號(hào)量:{實(shí)際上也起到互斥作用}S_Empty,T_Empty,{
2、初值為1}S_Full,T_Full;{初值為0}Get進(jìn)程:BeginRepeatP(S_Empty)T_get_S();V(S_Full);Untilfalse;EndCopy進(jìn)程:BeginRepeatP(S_Full);P(T_Empty);S_copy_T();V(T_Full);V(S_Empty);Untilfalse;EndPut進(jìn)程:BeginRepeatP(T_Full);T_put_G();V(T_Empty);Untilfalse;End正常行車到站停車開車售票開車門關(guān)車門司機(jī)售票員2、重新研究司機(jī)和
3、售票員問(wèn)題,分別寫出司機(jī)和售票員進(jìn)程,從而實(shí)現(xiàn)該問(wèn)題的同步司機(jī)進(jìn)程:BeginRepeatP(S_Door);行駛;…停車;V(S_Stop);Untilfalse;End乘務(wù)員進(jìn)程:BeginRepeat關(guān)門;V(S_Door);售票;P(S_Stop);開門;Untilfalse;EndVarS_Door,S_Stop:Semaphore:=0,0司機(jī)進(jìn)程:BeginRepeatP(door);行駛;…停車;V(stop);Untilfalse;End乘務(wù)員進(jìn)程:BeginRepeatP(stop);開門;關(guān)門;V(do
4、or);售票;Untilfalse;EndVardoor,stop:semaphore:1,03、桌上有一空盤,允許存放一只水果。爸爸可向盤中放蘋果,也可向盤中放桔子,兒子專等吃盤中的桔子,女兒專等吃盤中的蘋果。規(guī)定當(dāng)盤空時(shí)一次只能放一只水果供吃者取用,請(qǐng)用P、V原語(yǔ)實(shí)現(xiàn)爸爸、兒子、女兒三個(gè)并發(fā)進(jìn)程的同步。分析:本題中,爸爸、兒子、女兒共用一個(gè)盤子,盤中一次只能放一個(gè)水果。當(dāng)盤子為空時(shí),爸爸可將一個(gè)水果放入果盤中。若放入果盤中的是桔子,則允許兒子吃,女兒必須等待;若放入果盤中的是蘋果,則允許女兒吃,兒子必須等待。本題實(shí)際上是
5、生產(chǎn)者-消費(fèi)者問(wèn)題的一種變形:這里,生產(chǎn)者放入緩沖區(qū)的產(chǎn)品有兩類,消費(fèi)者也有兩類,每類消費(fèi)者只消費(fèi)其中固定的一類產(chǎn)品S:表示盤子是否為空,其初值為l;So:表示盤中是否有桔子,其初值為0;Sa:表示盤中是否有蘋果,其初值為0。設(shè)置三個(gè)信號(hào)量:S、So、Sa,Daughter進(jìn)程:while(1){P(Sa);從盤中取出蘋果;V(S);吃蘋果;}Father進(jìn)程:while(1){P(S);將水果放入盤中;if(放入的是桔子)V(So);elseV(Sa);}Son進(jìn)程:while(1){P(So);從盤中取出桔子;V(S);
6、吃桔子;}}分析問(wèn)題中涉及的進(jìn)程;分析問(wèn)題中的同步關(guān)系(競(jìng)爭(zhēng),合作);(其中,合作關(guān)系的解決也是通過(guò)轉(zhuǎn)化為對(duì)資源的競(jìng)爭(zhēng)完成的。)參照所競(jìng)爭(zhēng)的資源設(shè)置信號(hào)量,并賦予初值;寫出各個(gè)進(jìn)程的描述;檢查每個(gè)進(jìn)程的描述,看是否會(huì)出現(xiàn)死鎖現(xiàn)象并改正之。小結(jié):同步問(wèn)題解法具體的規(guī)范格式如下(以蘋果桔子題目為例:)intS=1;intSa=0;intSo=0;main(){cobeginfather();/*父親進(jìn)程*/son();/*兒子進(jìn)程*/daughter();/*女兒進(jìn)程*/coend}解:設(shè)置三個(gè)信號(hào)量S、So、Sa,信號(hào)量S表示
7、盤子是否為空,其初值為l;信號(hào)量So表示盤中是否有桔子,其初值為0;信號(hào)量Sa表示盤中是否有蘋果,其初值為0。同步描述如下:father(){while(1){P(S);將水果放入盤中;if(放入的是桔子)V(So);elseV(Sa);}}son(){while(1){P(So);從盤中取出桔子;V(S);吃桔子;}}daughter(){while(1){P(Sa);從盤中取出蘋果;V(S);吃蘋果;}}作業(yè):睡眠理發(fā)師問(wèn)題作業(yè):睡眠理發(fā)師問(wèn)題問(wèn)題描述(經(jīng)典理發(fā)師問(wèn)題)假設(shè)后街有家理發(fā)店,店里有一個(gè)理發(fā)師、一把理發(fā)椅和n
8、把等候理發(fā)的顧客椅子。(1).如果沒有顧客則理發(fā)師便在理發(fā)椅上睡覺(看報(bào)紙);(2).當(dāng)有一個(gè)顧客到達(dá)時(shí),首先查看理發(fā)師在干什么,如果在睡覺(看報(bào)紙)則告訴理發(fā)師理發(fā),然后坐到理發(fā)椅上開始理發(fā);如果理發(fā)師正在理發(fā),則查看是否有空的椅子可坐,如果有,他就坐下等待,如果沒有,則離開;(3