售票員和汽車司機的進程同步問題_第1頁
已閱讀1頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、計算機操作系統(tǒng)實驗設計一計算機操作系統(tǒng)實驗設計一一、實驗名稱:售票員和汽車司機的進程同步問題二、實驗內(nèi)容:創(chuàng)建兩個進程模擬售票員和汽車司機的同步行為。具體內(nèi)容如下:1.司機的活動:啟動車輛,正常行車,到站停車。2.售票員活動:關車門,售票,開車門。3.當發(fā)車時間到,售票員關好車門后,司機才能啟動車輛,售票員才開始售票。當?shù)秸緯r,司機停穩(wěn)車后,售票員才能打開車門,車上乘客先下車,然后站牌乘客上車。三、設計分析:司機與售票員要協(xié)同工作:一方

2、面只有售票員把門關好之后司機才可開車,因此售票員關好門之后要通知司機開車,然后售票;另一方面,也只有司機把車停下之后售票員才能開門讓乘客下車和上車,因此,此時司機應通知售票員。汽車當前正在始發(fā)站停車讓乘客上車,因此,必須設置一定的信號量來實現(xiàn)他們之間的同步問題。把司機與售票員的信號量設置為全局變量,并把客車上的人數(shù):現(xiàn)在人數(shù)、下車人數(shù)、上車人數(shù)設置為全局變量;設置司機與售票員各自的線程。考慮到第一站和最后一站的問題,應單獨處理,故在各自

3、的線程中分情況討論:由于下車的人數(shù)是隨機的,設計時考慮到了人數(shù)可能會超過客車的最大上限的問題。具體的思路是下面的圖示。中s1是司機的信號量,s2是售票員的信號量。正常行駛售票到站,停車P(s2)V(s2)開車門P(s1)關車門V(s1)離開車站實現(xiàn)司機與售票員之間的同步過程如下:BeginP司機P售票員HLESemaphe_driverDriver的信號量HLESemaphe_conductConduct的信號量產(chǎn)生一定范圍的隨機數(shù),可

4、避免下面程序的判斷是否超出客車的最大容量問題intGet_rom(intminintmax)intasr((int)time(0))while(1)a=r()%(Total_num1)if(a=minDriver的線程DWDWINAPIThread_Driver(LPVOIDDriver)while(pk=Total_num)if(pk==Total_pk)WaitFSingleObject(Semaphe_driverINFINITE

5、)printf(“終點站到了謝謝乘坐該公交車,祝您愉快!n“)printf(“到達終點站時汽車上還有%d人。n“Recent_num)ReleaseSemaphe(Semaphe_conduct1NULL)return0elseif(pk==1)printf(“發(fā)車時間到,現(xiàn)在是第%d站n“pk)elseprintf(“%d站到了n“pk)if(pk!=1)printf(“司機已停車。n“)ReleaseSemaphe(Semaphe_

溫馨提示

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

評論

0/150

提交評論