2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  《操作系統(tǒng)》課程設(shè)計(jì)</p><p><b>  題目名稱:蘋果問題</b></p><p>  專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)</p><p><b>  班級: </b></p><p><b>  姓名: </b></p><p>

2、<b>  學(xué)號: </b></p><p><b>  目錄</b></p><p><b>  目錄1</b></p><p>  1.設(shè)計(jì)題目與要求2</p><p><b>  1.1設(shè)計(jì)目的2</b></p><p>

3、;<b>  1.2設(shè)計(jì)要求2</b></p><p>  2. 總體設(shè)計(jì)思想2</p><p>  2.1總體設(shè)計(jì)思想2</p><p><b>  3. 功能設(shè)計(jì)3</b></p><p>  3.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)3</p><p><b>  3.2

4、模塊說明3</b></p><p>  3.3 各模塊的算法流程圖4</p><p>  3.4 P、V原語的描述7</p><p>  4 .開發(fā)平臺及程序清單的主要部分8</p><p><b>  4.1開發(fā)平臺8</b></p><p>  5. 運(yùn)行結(jié)果與運(yùn)行情況

5、分析9</p><p><b>  5.1運(yùn)行結(jié)果9</b></p><p>  6. 自我評價(jià)與總結(jié)10</p><p>  7. 參考資料11</p><p><b>  附錄12</b></p><p><b>  程序源代碼:13</b&g

6、t;</p><p><b>  1.設(shè)計(jì)題目與要求</b></p><p><b>  1.1設(shè)計(jì)目的</b></p><p>  通過實(shí)現(xiàn)吃水果問題的同步,深入了解和掌握進(jìn)程同步的原理。</p><p><b>  1.2設(shè)計(jì)要求</b></p><p&

7、gt;<b>  吃水果問題的描述:</b></p><p>  桌子上有一只盤子,最多可容納兩個(gè)水果,每次只能放入或者取出一個(gè)水果。爸爸專門向盤子中放蘋果(apple),媽媽專門向盤子中放橘子(orange),兩個(gè)兒子專門等待吃盤子中的橘子,兩個(gè)女兒專門等吃盤子中的蘋果。</p><p><b>  2. 總體設(shè)計(jì)思想</b></p>

8、;<p><b>  2.1總體設(shè)計(jì)思想</b></p><p>  這是進(jìn)程同步與互斥問題的模擬,可以把向盤子放或取水果的每一個(gè)過程可以轉(zhuǎn)為一個(gè)進(jìn)程的操作,這些進(jìn)程是互斥的,同時(shí)也存在一定的同步關(guān)系。通過編程實(shí)踐時(shí),實(shí)際是隨機(jī)的調(diào)用一個(gè)進(jìn)程的操作,而這些進(jìn)程的操作相當(dāng)于程序中的函數(shù)調(diào)用。而計(jì)算機(jī)在執(zhí)行時(shí)每一個(gè)時(shí)刻只能執(zhí)行一個(gè)操作,這就是互斥的表現(xiàn)。同步的模擬可以類似于函數(shù)調(diào)用

9、時(shí)的前提關(guān)系即先決條件。這樣進(jìn)程同步模擬就完全可以通過函數(shù)的調(diào)用來實(shí)現(xiàn)。</p><p>  具體的每一個(gè)操作的對應(yīng)的函數(shù)的關(guān)系:</p><p>  爸爸向盤子中放一個(gè)蘋果:Father()</p><p>  媽媽向盤子中放一個(gè)橘子:Mother()</p><p>  兒子1從盤子取一個(gè)橘子:Son1()</p><

10、p>  兒子2從盤子取一個(gè)橘子:Son2()</p><p>  女兒1從盤子取一個(gè)橘子:Daugther1()</p><p>  女兒2從盤子取一個(gè)橘子:Daugther2()</p><p><b>  3. 功能設(shè)計(jì)</b></p><p>  3.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</p><p>

11、  (1)用一個(gè)整型變量Plate_Size表示盤子里的水果數(shù)量,初始值為0,當(dāng)放水果時(shí)Plate_Size加1,取水果時(shí)Plate_Size減1。變量Plate_Size的最大值為2,當(dāng)為2時(shí)表示盤子已經(jīng)滿,此時(shí)若進(jìn)行放水果操作,放水果將處于等待狀態(tài);為0時(shí)表示盤子為空,此時(shí)若進(jìn)行取水果操作,取水果操作將處于等待狀態(tài),Plate_Size是爸爸和媽媽進(jìn)行放水果的私有信號量。</p><p>  (2)整型變量o

12、range和apple分別表示盤子中的橘子和蘋果數(shù)目,初始都為0,其中orange是兒子的私有變量,apple是女兒的私有變量,盤子中的總水果數(shù)是 Plate_Size=apple+orange。</p><p>  (3)用6個(gè)bool型的變量 Father_lag,Mother_lag,Son1_lag,Son2_lag,Daughter1_lag,Daughter2_lag表示六個(gè)進(jìn)程是否處于等待狀態(tài)。處于

13、等待時(shí),變量值為true。</p><p>  (4)兩個(gè)放水果進(jìn)程同時(shí)處于等待狀態(tài)時(shí),若有取水果的操作將自動(dòng)執(zhí)行等待的放水果進(jìn)程,執(zhí)行按等待的先后順序自動(dòng)調(diào)用;兩個(gè)取蘋果或橘子進(jìn)程同時(shí)候處于等待狀態(tài),若有放蘋果或橘子的操作將自動(dòng)執(zhí)行等待的取進(jìn)程,進(jìn)行按等待的先后順序自動(dòng)調(diào)用。</p><p>  (5)用一個(gè)隨機(jī)的函數(shù)產(chǎn)生0—5的6個(gè)整數(shù),分別對應(yīng)六個(gè)進(jìn)程的調(diào)用。</p>

14、<p><b>  3.2模塊說明</b></p><p><b>  3.2.1 主函數(shù)</b></p><p>  用一個(gè)隨機(jī)的函數(shù)產(chǎn)生0—5的6個(gè)整數(shù),即 i=rand()%6,分別對應(yīng)六個(gè)進(jìn)程的調(diào)用,調(diào)用的次數(shù)可以通過修改K值來實(shí)現(xiàn),for(k=0;k<10;k++),本程序共產(chǎn)生了10次隨機(jī)的調(diào)用進(jìn)程。</p>

15、;<p>  3.2.2 6個(gè)進(jìn)程函數(shù)</p><p>  爸爸向盤子中放一個(gè)蘋果操作:Father()</p><p>  媽媽向盤子中放一個(gè)橘子操作:Mother()</p><p>  兒子1從盤子取一個(gè)橘子操作:Son1()</p><p>  兒子2從盤子取一個(gè)橘子操作:Son2()</p><p

16、>  女兒1從盤子取一個(gè)橘子操作:Daugther1()</p><p>  女兒2從盤子取一個(gè)橘子操作:Daugther2()</p><p>  3.2.3 Print函數(shù)</p><p>  用于輸出盤子中蘋果和橘子的個(gè)數(shù),水果總個(gè)數(shù)及哪些進(jìn)程處于等待狀態(tài)。</p><p>  3.3 各模塊的算法流程圖</p>

17、<p>  3.3.1放水果操作</p><p>  A、爸爸放蘋果進(jìn)程的操作流程圖:</p><p>  B、媽媽放橘子進(jìn)程的操作流程圖</p><p>  3.3.2取水果操作</p><p>  兒子1取橘子的操作流程圖</p><p>  女兒i取蘋果的操作流程圖</p><p&g

18、t;  3.4 P、V原語的描述</p><p>  Semaphore Plate_Size</p><p>  Semaphore apple</p><p>  Semaphore orange</p><p><b>  Father()</b></p><p><b>

19、  {</b></p><p>  While(true)</p><p><b>  {</b></p><p>  P(Plate_Size)</p><p><b>  P(mutex)</b></p><p>  父親向盤子中放進(jìn)一個(gè)蘋果</p>

20、;<p><b>  V(apple)</b></p><p><b>  V(mutex)</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  Mother()<

21、;/b></p><p><b>  {</b></p><p>  While(true)</p><p><b>  {</b></p><p>  P(Plate_Size)</p><p><b>  P(mutex)</b></p&

22、gt;<p>  母親向盤子中放進(jìn)一個(gè)桔子</p><p><b>  V(orange)</b></p><p><b>  V(mutex)</b></p><p><b>  }</b></p><p><b>  }</b></

23、p><p><b>  Son(i)</b></p><p><b>  {</b></p><p>  While(true)</p><p><b>  {</b></p><p>  P(Plate_Size)</p><p>

24、<b>  P(mutex)</b></p><p><b>  P(apple)</b></p><p>  兒子從盤子中走一個(gè)桔子</p><p><b>  V(orange)</b></p><p><b>  V(mutex)</b></p

25、><p><b>  }</b></p><p><b>  }</b></p><p>  Daughter (i)</p><p><b>  {</b></p><p>  While(true)</p><p><b&g

26、t;  {</b></p><p>  P(Plate_Size)</p><p><b>  P(mutex)</b></p><p>  女兒從盤子中走一個(gè)蘋果</p><p><b>  V(apple)</b></p><p><b>  V(m

27、utex)</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  4 .開發(fā)平臺及程序清單的主要部分</p><p><b>  4.1開發(fā)平臺</b></p><p> ?。?)使用系統(tǒng)

28、:Windows XP</p><p>  (2)使用語言:C++</p><p> ?。?)開發(fā)工具:Visual C++ 6.0</p><p>  5. 運(yùn)行結(jié)果與運(yùn)行情況分析</p><p><b>  5.1運(yùn)行結(jié)果</b></p><p><b>  第一次運(yùn)行結(jié)果為:<

29、;/b></p><p><b>  第二次運(yùn)行結(jié)果為:</b></p><p>  6. 自我評價(jià)與總結(jié)</p><p>  此次試驗(yàn)是完全在小組合作下完成的,首先在分析問題并把問題轉(zhuǎn)化為編程問題,對進(jìn)程同步理解的比較透徹;其次我用了個(gè)隨機(jī)函數(shù)來調(diào)用相應(yīng)的進(jìn)程函數(shù),這對進(jìn)程間的同步和等待狀態(tài)有很好的說明和十分的全面;再次我們設(shè)了六個(gè)bo

30、ol型的變量來表示各進(jìn)程時(shí)候處于等待狀態(tài),還設(shè)置了相應(yīng)的整型變量來解決等待進(jìn)程在適當(dāng)?shù)臈l件下自動(dòng)調(diào)用的先后問題。</p><p>  任有不足之處,由于各進(jìn)程調(diào)用是隨機(jī)的,在某個(gè)處于等待狀態(tài)時(shí),可以還能被調(diào)用,事實(shí)上這不是很合理。因?yàn)樘幱诘却隣顟B(tài)的進(jìn)程就不可能在被分配調(diào)用。再有就是程序有些代碼部分有重的,可以把這些重復(fù)執(zhí)行的代碼寫成函數(shù),需要用時(shí)直接調(diào)用代碼函數(shù)。</p><p>  這次

31、自己的收獲還是不小,首先使我們提高了分析問題,并根據(jù)需求轉(zhuǎn)化成相應(yīng)的程序結(jié)構(gòu)的能力;其次也豐富了自己編寫程序,調(diào)試程序的經(jīng)驗(yàn),這使得我編程時(shí)可能出現(xiàn)的錯(cuò)誤的認(rèn)識,并如何去避免產(chǎn)生了新的認(rèn)識。</p><p>  對于此題我覺得除了可以用隨機(jī)函數(shù)來產(chǎn)生隨機(jī)數(shù)來調(diào)用相應(yīng)的進(jìn)程函數(shù),也可以用人輸入的方式來選擇調(diào)用相應(yīng)的進(jìn)程函數(shù),這樣可以會麻煩些,不過對進(jìn)程同步的模擬可能會更加透徹。</p><p&g

32、t;  總的來說這次試驗(yàn)比較成功,加深我了進(jìn)程的理解,同時(shí)也提高了自己的編程的能力。編程是個(gè)長久的過程,平時(shí)要多去動(dòng)手實(shí)踐,去提高自己分析問題、發(fā)現(xiàn)問題、解決問題的能力。</p><p><b>  7. 參考資料</b></p><p>  [1]宗大華,宗濤,陳吉人著 操作系統(tǒng) 北京:人民郵電出版社,2009</p><p>  [2]

33、李愛華,程磊著 面相對象程序設(shè)計(jì)(C++語言) 北京: 清華大學(xué)出版社,2010</p><p>  [3]宋曉宇 , windows操作系統(tǒng)核心編程實(shí)驗(yàn)教程 中國鐵道出版社</p><p>  [4]張麗芬 劉利雄 王金玉編著 操作系統(tǒng)實(shí)驗(yàn)教程 清華大學(xué)出版社</p><p><b>  附錄</b></p><p

34、><b>  程序源代碼:</b></p><p>  #include<time.h> //用到了time函數(shù),所以要有這個(gè)頭文件</p><p>  #include<stdlib.h> //用到了srand函數(shù),所以要有這個(gè)頭文件</p><p>  #include<iostream.

35、h> </p><p>  int Plate_Size=0; //表示盤子中當(dāng)前有幾個(gè)水果</p><p>  int orange=0,apple=0; //表示盤子中orange和apple的個(gè)數(shù)</p><p>  bool Father_lag,Mother_lag,Son1_lag,Son2_lag,Daughter1_lag,Daught

36、er2_lag; //六個(gè)進(jìn)程處于等待時(shí),變量值為true</p><p>  void main() //main()函數(shù),實(shí)現(xiàn)其他功能函數(shù)的調(diào)用</p><p>  { void Print(); //函數(shù)聲明</p><p>  void Father();</p><p>  void Mother();</p&g

37、t;<p>  void Son1();</p><p>  void Son2();</p><p>  void Daughter1();</p><p>  void Daughter2();</p><p><b>  int k;</b></p><p>  srand((

38、unsigned)time(NULL));//srand()函數(shù)產(chǎn)生一個(gè)以當(dāng)前時(shí)間開始的隨機(jī)種子 </p><p>  for(k=0;k<10;k++)</p><p>  { cout<<"第"<<k+1<<"次操作:"<<endl; //printf("第%d次操作:\n&qu

39、ot;,k+1);</p><p>  int i=rand()%6; //隨進(jìn)生成6以內(nèi)的整數(shù),即0-5的6個(gè)整數(shù)</p><p>  Plate_Size=apple+orange;</p><p>  int MonFa_c,Daughter_b,Son_a; //for語句的局部變量,控制進(jìn)程等待的優(yōu)先次序,MonFa_c=2,Mather()執(zhí)行

40、,MonFa_c=1,F(xiàn)ather()執(zhí)行</p><p>  switch(i) //0為Father()調(diào)用,1為Mother()調(diào)用,2、3為Son1()、Son2()調(diào),4、5為Daughteri()調(diào)用</p><p>  { case 0:</p><p>  cout<<"Father調(diào)用."<<

41、endl;</p><p>  if(Plate_Size==2)</p><p><b>  {</b></p><p>  Father_lag=true; //Father()等待</p><p><b>  Print();</b></p><p>  if(Mot

42、her_lag==false)</p><p>  MonFa_c=1; </p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  Fathe

43、r();</b></p><p>  if((Daughter1_lag==true)&&(Daughter2_lag==true))</p><p><b>  {</b></p><p>  if(Daughter_b==1)</p><p><b>  {</b>&

44、lt;/p><p>  Daughter1_lag=false;//Daughter1等待取消</p><p>  Daughter1(); //處于等待的Daughter1自動(dòng)調(diào)用</p><p>  Daughter_b=2; //優(yōu)先級讓給Daughter2</p><p><b>  }</b></p>

45、;<p><b>  else </b></p><p><b>  {</b></p><p>  Daughter2_lag=false;//Daughter2等待取消</p><p>  Daughter2(); //處于等待的Daughter2()自動(dòng)調(diào)用</p><p>

46、  Daughter_b=1; //優(yōu)先級讓給Daughter1</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p>

47、<p>  if(Daughter1_lag==true)</p><p><b>  {</b></p><p>  Daughter1_lag=false;//Daughter1等待取消</p><p>  Daughter1(); //處于等待的Daughter1()自動(dòng)調(diào)用</p><p>  Dau

48、ghter_b=0; //沒有等待的Dauther進(jìn)程</p><p><b>  }</b></p><p>  else if(Daughter2_lag==true)</p><p><b>  {</b></p><p>  Daughter2_lag=false;//Daughter2等待

49、取消</p><p>  Daughter2(); //處于等待的Daughter2()自動(dòng)調(diào)用</p><p>  Daughter_b=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }<

50、/b></p><p><b>  break;</b></p><p><b>  case 1:</b></p><p>  cout<<"Mother調(diào)用."<<endl;</p><p>  if(Plate_Size==2)</p&g

51、t;<p><b>  {</b></p><p>  Mother_lag=true; //Mother()等待</p><p><b>  Print();</b></p><p>  if(Father_lag==false)</p><p>  MonFa_c=2; <

52、/p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  Mother();</b></p><p>  if((Son1_lag==true

53、)&&(Son2_lag==true)) //Son1和Son2都等待</p><p><b>  {</b></p><p>  if(Son_a==1) //Son1執(zhí)行</p><p><b>  {</b></p><p>  Son1_lag=false;//Son1

54、等待取消</p><p>  Son1(); //處于等待的Son1()自動(dòng)調(diào)用</p><p>  Son_a=2; //優(yōu)先級讓給Son2</p><p><b>  }</b></p><p><b>  else </b></p><p><b>

55、  {</b></p><p>  Son2_lag=false;//Son2等待取消</p><p>  Son2(); //處于等待的Son2()自動(dòng)調(diào)用</p><p>  Son_a=1; //優(yōu)先級讓給Son1</p><p><b>  }</b></p><p>&l

56、t;b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  if(Son1_lag==true)</p><p><b>  {</b></p><p>  Son

57、1_lag=false; //Son1等待取消</p><p>  Son1(); //處于等待的Son1()自動(dòng)調(diào)用</p><p><b>  Son_a=0;</b></p><p><b>  }</b></p><p>  else if(Son2_lag==true)</

58、p><p><b>  {</b></p><p>  Son2_lag=false; //Son2等待取消</p><p>  Son2(); //處于等待的Son2()自動(dòng)調(diào)用</p><p><b>  Son_a=0;</b></p><p><b>

59、;  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 2: </b></p><p> 

60、 cout<<"Son1調(diào)用."<<endl;</p><p>  if(orange==0)</p><p><b>  {</b></p><p>  Son1_lag=true; //Son1處于等待</p><p><b>  Print();</

61、b></p><p>  if(Son2_lag==false)</p><p>  Son_a=1; //用于判斷Son1和Son2等待的先后性</p><p><b>  }</b></p><p><b>  else</b></p><p><b

62、>  {</b></p><p><b>  Son1();</b></p><p>  if((Father_lag==true)&&(Mother_lag==true))</p><p><b>  {</b></p><p>  if(MonFa_c==1)

63、 //Father和Mother同時(shí)處于等待,但Father先等待,因此先調(diào)用</p><p><b>  {</b></p><p>  Father_lag=false;</p><p><b>  Father();</b></p><p>  MonFa_c=2;</p>

64、<p><b>  }</b></p><p>  else //Father和Mother同時(shí)處于等待,但Mother先等待,因此先調(diào)用</p><p><b>  {</b></p><p>  Mother_lag=false;</p><p><b>  Mother()

65、;</b></p><p>  MonFa_c=1;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b>&

66、lt;/p><p>  if(Father_lag==true) //只有Father處于等待,調(diào)用</p><p><b>  {</b></p><p>  Father_lag=false;</p><p><b>  Father();</b></p><p>  Mo

67、nFa_c=0;</p><p><b>  }</b></p><p>  else if(Mother_lag==true)//只有Mother處于等待,調(diào)用</p><p><b>  {</b></p><p>  Mother_lag=false;</p><p>

68、<b>  Mother();</b></p><p>  MonFa_c=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b&g

69、t;  break;</b></p><p><b>  case 3:</b></p><p>  cout<<"Son2調(diào)用."<<endl;</p><p>  if(orange==0)</p><p><b>  {</b></

70、p><p>  Son2_lag=true; //Son2處于等待</p><p><b>  Print();</b></p><p>  if(Son1_lag==false)</p><p><b>  Son_a=2;</b></p><p><b>  }&

71、lt;/b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  Son2();</b></p><p>  if((Father_lag==true)&&(Mother_lag==true))

72、</p><p><b>  {</b></p><p>  if(MonFa_c==1)//Father和Mother同時(shí)處于等待,但Father先等待,因此先調(diào)用</p><p><b>  {</b></p><p>  Father_lag=false;</p><p&g

73、t;<b>  Father();</b></p><p>  MonFa_c=2;</p><p><b>  }</b></p><p>  else //Father和Mother同時(shí)處于等待,但Mother先等待,因此先調(diào)用</p><p><b>  {</b>

74、</p><p>  Mother_lag=false;</p><p><b>  Mother();</b></p><p>  MonFa_c=1;</p><p><b>  }</b></p><p><b>  }</b></p>

75、<p><b>  else</b></p><p><b>  {</b></p><p>  if(Father_lag==true) //只有Father處于等待,調(diào)用Father</p><p><b>  {</b></p><p>  Father

76、_lag=false;</p><p><b>  Father();</b></p><p>  MonFa_c=0;</p><p><b>  }</b></p><p>  else if(Mother_lag==true) //只有Mother處于等待,調(diào)用Mother</p>

77、;<p><b>  {</b></p><p>  Mother_lag=false;</p><p><b>  Mother();</b></p><p>  MonFa_c=0;</p><p><b>  }</b></p><p&g

78、t;<b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 4:</b></p><p>  cout<<"Daughter1調(diào)用.&qu

79、ot;<<endl;</p><p>  if(apple==0)</p><p><b>  {</b></p><p>  Daughter1_lag=true; //Daughter1等待</p><p><b>  Print();</b></p><p&g

80、t;  if(Daughter2_lag==false)</p><p>  Daughter_b=1;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  D

81、aughter1(); </p><p>  if((Father_lag==true)&&(Mother_lag==true))</p><p><b>  {</b></p><p>  if(MonFa_c==1) //Father和Mother同時(shí)處于等待,但Father先等待,因此先調(diào)用</p><

82、p>  { </p><p>  Father_lag=false;</p><p><b>  Father();</b></p><p>  MonFa_c=2;</p><p><b>  }</b></p><p>  else /

83、/Father和Mother同時(shí)處于等待,但Mother先等待,因此先調(diào)用</p><p><b>  {</b></p><p>  Mother_lag=false;</p><p><b>  Mother();</b></p><p>  MonFa_c=1;</p><

84、p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  if(Father_lag==true) //只有Father處于等待,調(diào)

85、用</p><p><b>  {</b></p><p>  Father_lag=false;</p><p><b>  Father();</b></p><p>  MonFa_c=0;</p><p><b>  }</b></p>

86、;<p>  else if(Mother_lag==true) //只有Mother處于等待,調(diào)用</p><p><b>  {</b></p><p>  Mother_lag=false;</p><p><b>  Mother();</b></p><p>  MonFa

87、_c=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 5

88、:</b></p><p>  cout<<"Daughter2調(diào)用."<<endl;</p><p>  if(apple==0)</p><p><b>  {</b></p><p>  Daughter2_lag=true;//Daughter2等待&l

89、t;/p><p>  Print();</p><p>  if(Daughter1_lag==false)</p><p>  Daughter_b=2;</p><p><b>  }</b></p><p><b>  else</b></p>&l

90、t;p><b>  {</b></p><p>  Daughter2();</p><p>  if((Father_lag==true)&&(Mother_lag==true))</p><p><b>  {</b></p><p>  if(MonFa_c==1) /

91、/Father和Mother同時(shí)處于等待,但Father先等待,因此先調(diào)用</p><p><b>  {</b></p><p>  Father_lag=false;</p><p><b>  Father();</b></p><p>  MonFa_c=2;</p><

92、p><b>  }</b></p><p>  else //Father和Mother同時(shí)處于等待,但Mother先等待,因此先調(diào)用</p><p><b>  { </b></p><p>  Mother_lag=false;</p><p><b>  Mother()

93、;</b></p><p>  MonFa_c=1;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b>

94、</p><p>  if(Father_lag==true) //只有Father處于等待,調(diào)用</p><p><b>  { </b></p><p>  Father_lag=false;</p><p><b>  Father();</b></p><p> 

95、 MonFa_c=0;</p><p><b>  }</b></p><p>  else if(Mother_lag==true) //只有Mother處于等待,調(diào)用</p><p><b>  { </b></p><p>  Mother_lag=false;</p>

96、<p><b>  Mother();</b></p><p>  MonFa_c=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p&g

97、t;<b>  break;</b></p><p>  } //switch語句結(jié)束</p><p>  } //for語句結(jié)束</p><p>  } //main函數(shù)結(jié)束</p><p>  void Print() //Print函數(shù)(打印盤子剩余水果及各進(jìn)程等待狀態(tài))</p><

98、;p><b>  {</b></p><p>  cout<<"現(xiàn)在盤子里有"<<apple<<"個(gè)蘋果,"<<orange<<"個(gè)橘子,"<<"共有"<<apple+orange<<"個(gè)水果.&quo

99、t;<<endl;</p><p>  if(Father_lag==true)</p><p>  cout<<"Father進(jìn)程處于等待狀態(tài),";</p><p>  if(Mother_lag==true)</p><p>  cout<<"Mother進(jìn)程處于等待狀態(tài),

100、";</p><p>  if(Son1_lag==true)</p><p>  cout<<"Son1進(jìn)程處于等待狀態(tài),";</p><p>  if(Son2_lag==true) </p><p>  cout<<"Son2進(jìn)程處于等待狀態(tài), ";</p&

101、gt;<p>  if(Daughter1_lag==true)</p><p>  cout<<"Daughter1進(jìn)程處于等待狀態(tài),";</p><p>  if(Daughter2_lag==true)</p><p>  cout<<"Daughter2進(jìn)程處于等待狀態(tài),";<

102、;/p><p>  if(((Father_lag==false)&&(Mother_lag==false)&&(Son1_lag==false)&&(Son2_lag==false)&&(Daughter1_lag==false)&&(Daughter2_lag==false))!=true)</p><p> 

103、 cout<<endl;</p><p><b>  }</b></p><p>  void Father() //Father進(jìn)程</p><p>  {apple++;</p><p><b>  Print();</b></p><p><b&

104、gt;  }</b></p><p>  void Mother() //Mother進(jìn)程</p><p><b>  {</b></p><p><b>  orange++;</b></p><p><b>  Print();</b></p>&

105、lt;p><b>  }</b></p><p>  void Son1() //Son1進(jìn)程</p><p>  {orange--;</p><p><b>  Print();</b></p><p><b>  }</b></p><p&g

106、t;  void Son2() //Son2進(jìn)程</p><p>  {orange--;</p><p><b>  Print();</b></p><p><b>  }</b></p><p>  void Daughter1() //Daughter1進(jìn)程</p>&l

107、t;p>  {apple--;</p><p><b>  Print();</b></p><p><b>  }</b></p><p>  void Daughter2() //Daughter2進(jìn)程</p><p><b>  {</b></p>

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論