




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
課程設(shè)計(jì)任務(wù)書題目:進(jìn)程同步模擬設(shè)計(jì)——司機(jī)和售票員問題初始條件:1.預(yù)備內(nèi)容:閱讀操作系統(tǒng)的進(jìn)程管理章節(jié)內(nèi)容,對(duì)進(jìn)程的同步和互斥,以及信號(hào)量機(jī)制度有深入的理解。2.實(shí)踐準(zhǔn)備:掌握一種計(jì)算機(jī)高級(jí)語言的使用。要求完成的主要任務(wù):(包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說明書撰寫等具體要求)1.模擬公共汽車司機(jī)和售票員開關(guān)門及行車操作的同步模型。2.設(shè)計(jì)報(bào)告內(nèi)容應(yīng)說明:⑴課程設(shè)計(jì)目的與功能;⑵需求分析,數(shù)據(jù)結(jié)構(gòu)或模塊說明(功能與框圖);⑶源程序的主要部分;⑷測試用例,運(yùn)行結(jié)果與運(yùn)行情況分析;⑸自我評(píng)價(jià)與總結(jié):=1\*romani)你認(rèn)為你完成的設(shè)計(jì)哪些地方做得比較好或比較出色;=2\*romanii)什么地方做得不太好,以后如何改正;=3\*romaniii)從本設(shè)計(jì)得到的收獲(在編寫,調(diào)試,執(zhí)行過程中的經(jīng)驗(yàn)和教訓(xùn));=4\*romaniv)完成本題是否有其他的其他方法(如果有,簡要說明該方法);=5\*romanv)對(duì)實(shí)驗(yàn)題的評(píng)價(jià)和改進(jìn)意見,請(qǐng)你推薦設(shè)計(jì)題目。時(shí)間安排:設(shè)計(jì)安排一周:周1、周2:完成程序分析及設(shè)計(jì)。周2、周3:完成程序調(diào)試及測試。周4、周5:驗(yàn)收、撰寫課程設(shè)計(jì)報(bào)告。(注意事項(xiàng):嚴(yán)禁抄襲,一旦發(fā)現(xiàn),抄與被抄的一律按0分記)指導(dǎo)教師簽名:年月日系主任(或責(zé)任教師)簽名:年月日題目:進(jìn)程同步模擬設(shè)計(jì)——司機(jī)和售票員問題1.初始條件:1.預(yù)備內(nèi)容:閱讀操作系統(tǒng)的進(jìn)程管理章節(jié)內(nèi)容,對(duì)進(jìn)程的同步和互斥,以及信號(hào)量機(jī)制度有深入的理解。2.實(shí)踐準(zhǔn)備:掌握一種計(jì)算機(jī)高級(jí)語言的使用。2要求完成的主要任務(wù):2.1.模擬公共汽車司機(jī)和售票員開關(guān)門及行車操作的同步模型。在汽車行駛過程中,司機(jī)活動(dòng)與售票員活動(dòng)之間的同步關(guān)系為:售票員關(guān)車門后,向司機(jī)發(fā)開車信號(hào),司機(jī)接到開車信號(hào)后啟動(dòng)車輛,在汽車正常行駛過程中售票員售票,到站時(shí)司機(jī)停車,售票員在車停后開門讓乘客上下車。因此,司機(jī)啟動(dòng)車輛的動(dòng)作必須與售票員關(guān)車門的動(dòng)作取得同步;售票員開車門的動(dòng)作也必須與司機(jī)停車取得同步。司機(jī)P1售票員P2①啟動(dòng)②關(guān)門③到站停④開門正常運(yùn)行-售票-關(guān)門-啟動(dòng)-行駛-停-開門為了安全起見:(1)關(guān)車門后才能啟動(dòng)車輛-啟動(dòng)在關(guān)門之后(2)到站停車后,才能開車門-開車門在到站停車之后在計(jì)算機(jī)系統(tǒng)中可以將司機(jī)和售票員分別看作P1、P2兩個(gè)進(jìn)程,當(dāng)它們并發(fā)地向前推進(jìn)時(shí),計(jì)算機(jī)系統(tǒng)所接受到的實(shí)際上是司機(jī)活動(dòng)與售票員活動(dòng)的許多交叉中的任意一個(gè)交叉,這些交叉有些滿足上述要求,有些則不滿足,而操作系統(tǒng)必須保證不發(fā)生不滿足上述要求的交叉,即:如P2尚未推進(jìn)到②處時(shí),而P1已推進(jìn)到①處,則P1應(yīng)等待直到P2推進(jìn)到②處為止;如P1尚未推進(jìn)到③時(shí),P2已到④,則P2應(yīng)等待直到P1推進(jìn)到③處為止。P1在①處發(fā)生了等待,則P2執(zhí)行到②處時(shí)應(yīng)將P1喚醒;P2在④處發(fā)生了等待,P1到③處應(yīng)將P2喚醒應(yīng)設(shè)置兩個(gè)信號(hào)量:S1、S2;S1表示是否允許司機(jī)啟動(dòng)汽車(其初值為0);S2表示是否允許售票員開門(其初值為0)。用P、v原語描述如下:ints1=O;ints2=O;main(){cobegindriver();conductor();coend}driver(){while(1){p(s1);啟動(dòng)車輛;正常行車;到站停車;v(s2);}}conductor(){while(1){關(guān)車門;v(s1);售票;p(s2);開車門;上下乘客;}}2.2.設(shè)計(jì)報(bào)告內(nèi)容應(yīng)說明:2.2.1課程設(shè)計(jì)目的與功能;實(shí)驗(yàn)?zāi)康模簩?duì)進(jìn)程的同步和互斥,以及信號(hào)量機(jī)制度有深入的理解。一組相互合作的并發(fā)進(jìn)程,為了協(xié)調(diào)其推進(jìn)速度,有時(shí)需要相互等待與相互喚醒,進(jìn)程之間這種相互制約的關(guān)系稱作進(jìn)程同步,雖然進(jìn)程同步僅發(fā)生在相互有邏輯關(guān)系的進(jìn)程之間,這種相互制約的關(guān)系稱作進(jìn)程同步,進(jìn)程同步現(xiàn)象僅發(fā)生在相互有邏輯關(guān)系的進(jìn)程之間,這點(diǎn)與進(jìn)程互斥不同,進(jìn)程互斥現(xiàn)象發(fā)生在任意兩個(gè)進(jìn)程之間。與進(jìn)程同步相關(guān)的另一概念是進(jìn)程合作,一組進(jìn)程如果它們單獨(dú)執(zhí)行不能正常進(jìn)行,但并發(fā)執(zhí)行可以正常進(jìn)行,這種現(xiàn)象稱為進(jìn)程合作,參與進(jìn)程合作的進(jìn)程稱為合作進(jìn)程,如司機(jī)與售票員的例子,二者單獨(dú)執(zhí)行都不能正常進(jìn)行,但二者并發(fā)反可以正常進(jìn)行,成為合作進(jìn)程,這種進(jìn)程合作的現(xiàn)象在操作系統(tǒng)中經(jīng)常發(fā)生。實(shí)驗(yàn)功能:編寫完程序后,通過輸入程序給定的操作符對(duì)程序進(jìn)行操作來實(shí)現(xiàn)司機(jī)與售票員之間的進(jìn)程同步關(guān)系。對(duì)輸入的錯(cuò)誤操作符有識(shí)別功能給予正確的提示,對(duì)于那些不符合實(shí)際情況的操作給予限制和提示。例如車上人滿的時(shí)候要給予不能再上車的提示,車上沒人的時(shí)候要給予不能在下車的提示等等。2.2.2.需求分析,數(shù)據(jù)結(jié)構(gòu)或模塊說明(功能與框圖);問題描述:有兩組并發(fā)進(jìn)程:司機(jī)和售票員,共享一組數(shù)據(jù)區(qū),進(jìn)行司機(jī)開車和乘客上下車操作,要求任一時(shí)刻“只允許司機(jī)開車或乘客上下車操作。規(guī)則:允許乘客同時(shí)執(zhí)行上下車操作;不允許司機(jī)開車、乘客上下車同時(shí)操作;司機(jī)和售票員的相互關(guān)系:司機(jī)開車——乘客上下車互斥關(guān)系乘客上車——乘客下車允許具體分析:司機(jī)進(jìn)程:產(chǎn)生一個(gè)數(shù)據(jù),當(dāng)要送入緩沖區(qū)時(shí),要檢查緩沖區(qū)是否已滿(),若未滿,則可將數(shù)據(jù)送入緩沖區(qū),并通知售票員進(jìn)程;否則,等待; 售票員進(jìn)程:當(dāng)它去取數(shù)據(jù)時(shí),要檢查緩沖區(qū)中是否有數(shù)據(jù)可取,若不為空,則取走一個(gè)數(shù)據(jù),并通知司機(jī)進(jìn)程,否則,等待。 因?yàn)榫彌_區(qū)是個(gè)臨界資源,諸進(jìn)程對(duì)緩沖區(qū)進(jìn)行操作的臨界區(qū),需要進(jìn)行互斥操作的處理。程序流程圖如下:其中buffer表示進(jìn)程同步信號(hào)量n表示車上的空余作為數(shù)p1表示司機(jī)進(jìn)程p2表示售票員進(jìn)程a為輸入的操作符 開始開始buffer=1,n=36P2buffer=1輸入操作數(shù)aa=1&&n>0a=2&&n<36n<=0n>=36a<=0//a>4a=3a=4n--n++buffer=0a=4P1buffer=1結(jié)束buffer=1YYNNY2.2.3.源程序的主要部分;#include<iostream>usingnamespacestd;intbuffer=1;//進(jìn)程同步信號(hào)量#defineSIZE36intn=SIZE;chara;intp1();intp2();intp1()//司機(jī)開車進(jìn)程{ if(buffer==0) { cout<<"汽車啟動(dòng)準(zhǔn)備離站"<<endl; cout<<"汽車正在行駛"<<endl; cout<<"汽車到站了"<<endl; cout<<"汽車已停止"<<endl; buffer=1; p2(); } return0;}intp2()//乘客上下車進(jìn)程{ if(buffer) { cout<<"售票員已打開車門"<<endl; cout<<"請(qǐng)乘客上下車"<<endl; while(1) { cin>>a; if((a=='1')&&(n>0)) { n--; cout<<"上了一名乘客"<<endl; continue; }; if((a=='2')&&(n<SIZE)) { n++; cout<<"下了一名乘客"<<endl; continue; }; if(a=='3') { break; }; if(a=='4') { if(n>=SIZE) { break; } else cout<<"乘客未全部下車,等待乘客下車"<<endl; }; if((a<='0')||(a>'4')) { cout<<"操作錯(cuò)誤,請(qǐng)輸入正確的操作符1-4"<<endl; }; if(n<=0) { cout<<"車上座位已滿,無法再上乘客了"<<endl; continue; }; if(n>=SIZE) { cout<<"乘客已全部下車"<<endl; continue; }; } cout<<"現(xiàn)在關(guān)閉車門"<<endl; buffer=0; if(a=='4') { cout<<"汽車到達(dá)終點(diǎn)站,乘客已全部下車,一天行程結(jié)束"<<endl; buffer=1; }; p1(); } return0;}intmain(){ cout<<"使用說明:"<<endl; cout<<"鍵入1表示乘客上車"<<endl; cout<<"鍵入2表示乘客下車"<<endl; cout<<"鍵入3表示乘客上下車過程結(jié)束"<<endl; cout<<"鍵入4表示汽車到達(dá)終點(diǎn)站,一天行程結(jié)束"<<endl<<endl<<endl; cout<<"行程開始,汽車在起點(diǎn)站準(zhǔn)備啟動(dòng)"<<endl; p2(); return0;}2.2.4測試用例,運(yùn)行結(jié)果與運(yùn)行情況分析;運(yùn)行結(jié)果:程序運(yùn)行后結(jié)果如下:對(duì)程序操作后結(jié)果如下:運(yùn)行情況分析:程序運(yùn)行結(jié)果正確。但由于對(duì)程序的操作次數(shù)有限,所以并不能看到程序的全部功能。當(dāng)輸入的操作符不合要求的時(shí)候,程序會(huì)給出輸入錯(cuò)誤提示,由于車的容量有限,當(dāng)乘客上滿后,再對(duì)程序進(jìn)行上車操作,程序也會(huì)給出車上乘客已滿無法上車的提示。當(dāng)車上沒有乘客時(shí),再對(duì)程序進(jìn)行下車操作,程序會(huì)給出車上乘客已全部下車的提示。2.2.5自我評(píng)價(jià)與總結(jié):設(shè)計(jì)的比較好和比較出色的地方:這次課程設(shè)計(jì)基本上完成了實(shí)驗(yàn)要求,實(shí)現(xiàn)了司機(jī)與售票員之間的同步關(guān)系。程序?qū)懙暮芎啙嵜髁?,少而精,很容易看懂,但達(dá)到了設(shè)計(jì)要求,并且有健全的判斷錯(cuò)誤操作的能力和對(duì)不正常操作給予提示的能力,也很切合實(shí)際情況。設(shè)計(jì)的不好的地方及如何改進(jìn):但是程序?qū)懙糜行┖唵?,只能進(jìn)行有限的幾個(gè)簡單操作,局限性很大并不能應(yīng)用于實(shí)際情況。再對(duì)乘客進(jìn)行上下車操作時(shí)也未對(duì)乘客的情況進(jìn)行統(tǒng)計(jì)和記錄,僅僅是體現(xiàn)出同步關(guān)系,完成實(shí)驗(yàn)要求,而未考慮的更深更遠(yuǎn),使程序更加復(fù)雜,功能更加健全。在設(shè)計(jì)時(shí)我們應(yīng)該考慮的更多一些,使得自己的設(shè)計(jì)更有用,像用在公交車上的無人售票系統(tǒng)中等等。=3\*romaniii)從本設(shè)計(jì)得到的收獲(在編寫,調(diào)試,執(zhí)行過程中的經(jīng)驗(yàn)和教訓(xùn));這次設(shè)計(jì)實(shí)驗(yàn)使我懂得了如何用C++代碼來表示進(jìn)程間的同步關(guān)系,而不是用P,V信號(hào)量來表示。程序編寫時(shí)發(fā)現(xiàn)信號(hào)量只用一個(gè)就足以表達(dá)司機(jī)和售票員之間的同步關(guān)系,而不需要使用2個(gè)。剛做完時(shí)程序功能很不健全只有中間過程而無頭無尾,p1,p22個(gè)函數(shù)輪流調(diào)用程序始終終止不了,就像沒有起點(diǎn)站和終點(diǎn)站的汽車一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 20840.10-2025互感器第10部分:低功率無源電流互感器的補(bǔ)充技術(shù)要求
- 度配件采購與供應(yīng)合同
- 團(tuán)購住宅合同轉(zhuǎn)讓權(quán)名額協(xié)議樣本
- 股權(quán)轉(zhuǎn)讓合同(四):不動(dòng)產(chǎn)相關(guān)
- 婚姻終止財(cái)產(chǎn)分配合同
- 4 繁星教學(xué)設(shè)計(jì)-2024-2025學(xué)年四年級(jí)上冊語文統(tǒng)編版
- 詳盡版住宅租賃合同
- 藥店收購合同范本
- 3宿建德江教學(xué)設(shè)計(jì)-2024-2025學(xué)年六年級(jí)上冊語文統(tǒng)編版
- 藥品供應(yīng)鏈合作合同
- 2024年湖南汽車工程職業(yè)學(xué)院單招職業(yè)技能測試題庫標(biāo)準(zhǔn)卷
- (正式版)HGT 6313-2024 化工園區(qū)智慧化評(píng)價(jià)導(dǎo)則
- 二級(jí)公立醫(yī)院績效考核三級(jí)手術(shù)目錄(2020版)
- 硫酸銨廢水MVR蒸發(fā)結(jié)晶
- 預(yù)防艾滋病、梅毒和乙肝母嬰傳播相關(guān)報(bào)表上報(bào)流程及要求
- DB33- 1015-2021《居住建筑節(jié)能設(shè)計(jì)標(biāo)準(zhǔn)》
- 開學(xué)第一課(七下數(shù)學(xué))
- 完整word版,“呂氏八字命理學(xué)”高級(jí)理論
- 飛達(dá)及其輔助機(jī)構(gòu)
- 深圳地鐵三號(hào)線正線信號(hào)系統(tǒng)
- 高中化學(xué)競賽培訓(xùn)計(jì)劃
評(píng)論
0/150
提交評(píng)論