進(jìn)程同步模擬課程設(shè)計(jì)——司機(jī)和售票員問(wèn)題_第1頁(yè)
進(jìn)程同步模擬課程設(shè)計(jì)——司機(jī)和售票員問(wèn)題_第2頁(yè)
進(jìn)程同步模擬課程設(shè)計(jì)——司機(jī)和售票員問(wèn)題_第3頁(yè)
進(jìn)程同步模擬課程設(shè)計(jì)——司機(jī)和售票員問(wèn)題_第4頁(yè)
進(jìn)程同步模擬課程設(shè)計(jì)——司機(jī)和售票員問(wèn)題_第5頁(yè)
已閱讀5頁(yè),還剩4頁(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、武漢理工大學(xué)操作系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū)附件1:學(xué) 號(hào):題目學(xué)院專(zhuān)業(yè)班級(jí)姓名指導(dǎo)教師課程設(shè)計(jì)進(jìn)程同步模擬設(shè)計(jì)一一司機(jī)和售票員問(wèn)題計(jì)算機(jī)科學(xué)與技術(shù)計(jì)算機(jī)科學(xué)與技術(shù)2011 年 1 月 21 日課程設(shè)計(jì)任務(wù)書(shū)武漢理工大學(xué)操作系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū)學(xué)生姓名:專(zhuān)業(yè)班級(jí):運(yùn)算機(jī)科學(xué)與技術(shù)指導(dǎo)教師:工作單位: 運(yùn)算機(jī)科學(xué)與技術(shù)學(xué)院題目:進(jìn)程同步模擬設(shè)計(jì)一一司機(jī)和售票員問(wèn)題初始條件:.預(yù)備內(nèi)容:閱讀操作系統(tǒng)的進(jìn)程治理章節(jié)內(nèi)容,對(duì)進(jìn)程的同步和互斥,和信號(hào) 量機(jī)制度有深切的明白得。.實(shí)踐預(yù)備:把握一種運(yùn)算機(jī)高級(jí)語(yǔ)言的利用。要求完成的要緊任務(wù):(包括課程設(shè)計(jì)工作量及其技術(shù)要求,和說(shuō)明書(shū)撰寫(xiě)等具體要求).模擬公共汽車(chē)司機(jī)和售

2、票員開(kāi)關(guān)門(mén)及行車(chē)操作的同步模型。.設(shè)計(jì)報(bào)告內(nèi)容應(yīng)說(shuō)明:課程設(shè)計(jì)目的與功能; 需求分析,數(shù)據(jù)結(jié)構(gòu)或模塊說(shuō)明 (功能與框圖); 源程序的要緊部份;(4)測(cè)試用例,運(yùn)行結(jié)果與運(yùn)行情形分析;自我評(píng)判與總結(jié):i)你以為你完成的設(shè)計(jì)哪些地址做得比較好或比較超卓;ii)什么地址做得不太好,以后如何更正;iii)從本設(shè)計(jì)取得的收成(在編寫(xiě),調(diào)試,執(zhí)行進(jìn)程中的體會(huì)和教訓(xùn));iv)完本錢(qián)題是不是有其他的其他方式(若是有,簡(jiǎn)要說(shuō)明該方式);v)對(duì)實(shí)驗(yàn)題的評(píng)判和改良意見(jiàn),請(qǐng)你推薦設(shè)計(jì)題目。時(shí)刻安排:設(shè)計(jì)安排一周:周一、周 2:完成程序分析及設(shè)計(jì)。周二、周3:完成程序調(diào)試及測(cè)試。 周4、周5:驗(yàn)收、撰寫(xiě)課程設(shè)計(jì)報(bào)告。(

3、注意事項(xiàng):嚴(yán)禁剽竊,一旦發(fā)覺(jué),抄與被抄的一概按0分記)指導(dǎo)教師簽名:系主任(或責(zé)任教師)簽名:.課程設(shè)計(jì)目的與功能武漢理工大學(xué)操作系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū)課程設(shè)計(jì)目的:通過(guò)課程設(shè)計(jì),運(yùn)用信號(hào)量,模擬公共汽車(chē)司機(jī)和售票員開(kāi)關(guān)門(mén)及行車(chē)操作 的同步模型。課程設(shè)計(jì)能夠?qū)崿F(xiàn)以下功能:設(shè)置信號(hào)量,保證以下四點(diǎn):公走運(yùn)行的時(shí)候售票員不能開(kāi)車(chē)門(mén);公交停下,售票員方可打開(kāi)車(chē)門(mén);公交車(chē)門(mén)打開(kāi)時(shí),司機(jī)不能開(kāi)車(chē);公交車(chē)門(mén)關(guān)上時(shí),司機(jī)方能啟動(dòng)公交.需求分析,數(shù)據(jù)結(jié)構(gòu)或模塊說(shuō)明(功能與框圖)需求分析為了保證公走運(yùn)行的時(shí)候車(chē)門(mén)不能開(kāi),應(yīng)該設(shè)置一個(gè)表示公走運(yùn)行的信 號(hào)量,1表小公走運(yùn)行在,0表小車(chē)已停下;為了保證車(chē)門(mén)打開(kāi)的時(shí)候司機(jī)

4、不能啟動(dòng)公交,因此應(yīng)設(shè)置一個(gè)表示車(chē)門(mén)是不是打開(kāi)的信號(hào)量,0表示公交門(mén)打開(kāi),1表示公交門(mén)關(guān)上依照以上分析,兩個(gè)信號(hào)量在同一時(shí)刻必然 相反,由此取得結(jié)論:設(shè)置 一個(gè)信號(hào)量,1表示車(chē)停門(mén)開(kāi),0表示車(chē)開(kāi)門(mén)關(guān)數(shù)據(jù)結(jié)構(gòu)Bus 類(lèi)成員變量:int flag表示公共的信號(hào)量,1表示車(chē)停門(mén)開(kāi),0表示車(chē)開(kāi) 門(mén)關(guān)方式:public synchronized void open(), 表示乘務(wù)員開(kāi)車(chē)門(mén)的動(dòng)作public synchronized void drive(),表示司機(jī)啟動(dòng)車(chē)輛的動(dòng)作Driver類(lèi),繼承于Thread類(lèi)成員變量:private Bus c,表示該司機(jī)所駕駛的公交是c方式:public voi

5、d run(), 執(zhí)行 Bus c 的 driver() 方式Conductor 類(lèi),繼承于 Thread 類(lèi)成員變量:private Bus c,表示該司機(jī)所駕駛的公交是c方式:public void run(), 執(zhí)行 Bus c 的 open()方式模塊說(shuō)明武漢理工大學(xué)操作系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū)B(niǎo)us模塊那個(gè)地址要緊介紹Bus模塊中的open()W driver()方式:open():方式open(X有synchronized關(guān)鍵字,表示該方式在執(zhí)行的進(jìn)程中,其 他方法不能夠改變?cè)摲椒ㄋ趯?duì)象中所擁有的值,因此保證了時(shí)間的 同步性。While(車(chē)還在開(kāi))等待,運(yùn)用wait()方式/車(chē)停下了乘

6、客上下車(chē)車(chē)門(mén)關(guān)上改變信號(hào)量flag為0告知司機(jī)車(chē)門(mén)關(guān)上了,能夠啟動(dòng)車(chē)輛,運(yùn)用 notify()方式drive():類(lèi)似于 open()方式,方式 drive ()具有synchronized關(guān)鍵字,表示該方式 在執(zhí)行的過(guò)程中,其他方法不能夠改變?cè)摲椒ㄋ趯?duì)象中所擁有的值, 因此保證了時(shí)間的同步性。While(車(chē)門(mén)還沒(méi)關(guān))等待,運(yùn)用wait()方式/車(chē)門(mén)關(guān)了司機(jī)開(kāi)車(chē)改變信號(hào)量flag為1車(chē)停下,告知售票員能夠開(kāi)門(mén)了,運(yùn)用 notify()方式Driver模塊設(shè)置count,表示該模擬進(jìn)程執(zhí)行的次數(shù),run()方式,執(zhí)行私有成員bus的drive()方式,執(zhí)行count次后停止。Conductor

7、 模塊類(lèi)似,Driver類(lèi),設(shè)置count,表示該模擬進(jìn)程執(zhí)行的次數(shù),run()方式,執(zhí)行私有成員bus的open()方式,執(zhí)行count次后停止。.源程序的要緊部份武漢理工大學(xué)操作系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū)B(niǎo)us 類(lèi)0表示車(chē)開(kāi),門(mén)關(guān)passengers gets);inandclass Bus private int flag = 1;/ 1表示車(chē)停,門(mén)開(kāi),public synchronized void open()while (flag = 0) try this .wait(); catch (InterruptedException e) e.printStackTrace(); Syste

8、m. out .println( opening the door, out.);System. out .println( closing the door. flag = 0;this .notifyAll(); public synchronized void drive() while (flag = 1) try this .wait(); catch (InterruptedException e) e.printStackTrace(); System.out .println(bus is driving.System.out .println(bus stops.);flag

9、 = 1;this .notifyAll(); Driver 類(lèi)class DriverextendsThreadprivate Bus c;public Driver(Bus c)this . c = c; int count = 10;SuppressWarnings (static-access )Override public void run() 武漢理工大學(xué)操作系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū)int count = 10;while (count- != 0) c.drive(); try this . sleep (3000); catch (InterruptedException e) e

10、.printStackTrace(); Conductor 類(lèi)class Conductor extends Thread private Bus c;public Conductor(Bus c) this . c = c;SuppressWarnings (static-access ) Override public void run() int count = 10; while (count- != 0)c.open(); try this . sleep (1000); catch (InterruptedException e) e.printStackTrace();武漢理工大

11、學(xué)操作系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū).測(cè)試用例,運(yùn)行結(jié)果與運(yùn)行情形分析;運(yùn)行結(jié)果國(guó) Console-速Hanxiao (31 Java Application G:MyEclipse S.0Commonbinarycom.sopening the doorf q1口目口g tris dcax. tus is driving. bus stops gets工nand u.t.,.cyie dooi, closing the door. bus is driving. bus scops._,passengers9 inandout -,-cpening the d工, closing Ehe door _

12、bus is driving., DUS Stops. passengersinandout * .opening the doorf closing the d口口工. kUM 3 曰工*工門(mén)口. bus stops.pa巴巴Efgewsgetsinand nt.,.cpening the doorf closing the door * Eu總 la drivirig.,. bus 3top3- - *passengersB AqsinandCIUX. . , *the Igqx closing che door, bus is drivina.- Bum steps.pa3二等1七二口

13、SERin白2口 ux eperiifig che deerFclosing the d0口工+inandnut.-通過(guò)數(shù)次重復(fù)性演示,能夠看出公走運(yùn)行與公交車(chē)門(mén)開(kāi)關(guān)是在同步運(yùn)行的。運(yùn)行情形分析通過(guò)觀看運(yùn)行結(jié)果,不管兩個(gè)線程誰(shuí)先啟動(dòng)誰(shuí)后啟用,只要初始狀態(tài)設(shè)置的 是“車(chē)停門(mén)開(kāi)”,那么必然是售票員Conductor線程先執(zhí)行,或初始狀態(tài)時(shí)“車(chē) 開(kāi)門(mén)關(guān)”,那么必然是司機(jī)Driver線程先啟動(dòng)。即:Conductor c = hx. new Conductor(car);Driver d = hx. new Driver(car);Thread tc =new Thread(c);Thread td

14、=new Thread(d);不管那個(gè)地址是:td.start();tc.start();仍是:武漢理工大學(xué)操作系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū)tc.start();td.start();(請(qǐng)注意順序)只要flag的初始值固定,那么程序輸出的結(jié)果也是不變的,這恰好表現(xiàn) 了同步運(yùn)行這一概念!.自我評(píng)判與總結(jié):通過(guò)這次課程設(shè)計(jì),我有以下感觸:Java的Thread類(lèi)和synchronized關(guān)鍵字能夠狠好的處置信號(hào)量所引出的一系列問(wèn)本程序在不阻礙功能的前提下,只利用了一個(gè)信號(hào)量便完成了任務(wù),不能不說(shuō)是一個(gè)創(chuàng)新的地方。通過(guò)將兩個(gè)同步與互斥的操作open與drive封裝在Bus類(lèi)中,實(shí)現(xiàn)了線程了互斥與同步進(jìn)行。通過(guò)繼承Thread類(lèi),并將使 Driver與Conductor類(lèi)實(shí)例公共利用一個(gè)

溫馨提示

  • 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)論