版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)報(bào)告(本科/專(zhuān)科)課程:操作系統(tǒng)課程設(shè)計(jì)學(xué)號(hào): 姓名: 班級(jí): 教師: 時(shí)間:2012.12.7 -2013.1.7 計(jì)算機(jī)科學(xué)與技術(shù)系15 / 17文檔可自由編輯打印設(shè)計(jì)名稱(chēng):哲學(xué)家進(jìn)餐問(wèn)題設(shè)計(jì)內(nèi)容、目的與要求:實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)實(shí)現(xiàn)哲學(xué)家進(jìn)餐問(wèn)題的同步深入了解和掌握進(jìn)程同步和互斥的原理。內(nèi)容和要求: 哲學(xué)家有N個(gè),也定全體到達(dá)后開(kāi)始討論:在討論的間隙哲學(xué)家進(jìn)餐,每人進(jìn)餐時(shí)都需使用刀、叉各一把,所有哲學(xué)家刀和叉都拿到后才能進(jìn)餐。哲學(xué)家的人數(shù)、餐桌上的布置自行設(shè)定,實(shí)現(xiàn)刀和叉的互斥使用算法的程序?qū)崿F(xiàn)。計(jì)劃與進(jìn)度安排:1:設(shè)置初始條件(12月17號(hào))(1)操作系統(tǒng):windows(2)程序設(shè)
2、計(jì)語(yǔ)言:C+(3)設(shè)定圓桌上有六個(gè)哲學(xué)家,三對(duì)刀叉。2:詳細(xì)設(shè)計(jì):(12月18號(hào)至1月6號(hào))(1):設(shè)計(jì)一個(gè)程序,能夠顯示當(dāng)前各哲學(xué)家的狀態(tài)和桌上餐具的使用情況,并能無(wú)死鎖的推算出下一狀態(tài)各哲學(xué)家的狀態(tài)和桌上餐具的使用情況。即設(shè)計(jì)一個(gè)能安排哲學(xué)家正常生活的程序。(2):為哲學(xué)家設(shè)計(jì)3種狀態(tài),即“等待”“進(jìn)餐”“思考”。每個(gè)哲學(xué)家重復(fù)進(jìn)行“等待”-“進(jìn)餐”-“思考”的行動(dòng)循環(huán)。(3):確定程序模塊。(4):編寫(xiě)程序。(5):調(diào)試修改。(6):結(jié)果分析。設(shè)計(jì)過(guò)程、步驟(可加頁(yè)):1. 分工:湯正愿:課題分析,模塊設(shè)計(jì),主函數(shù)的編寫(xiě); 洪志飛:課題分析,模塊設(shè)計(jì),子函數(shù)的編寫(xiě)。2.確定數(shù)據(jù)結(jié)構(gòu)Phi
3、losopher-number:int-status:int+Philosopher(in num:int)+find() const:int+getinfo() const:int+Change():void圖3-1 哲學(xué)家類(lèi)的UML圖程序中定義一個(gè)哲學(xué)家類(lèi),包含兩個(gè)私有對(duì)象和四個(gè)公有對(duì)象。Number對(duì)象:報(bào)訊哲學(xué)家的編號(hào)。Status對(duì)象:用于保存當(dāng)前該哲學(xué)家的狀態(tài),0表示正在等待(即處于饑餓狀態(tài))1表示得到餐具正在吃飯,2表示正在思考Philosopher(int num)方法:哲學(xué)家類(lèi)構(gòu)造函數(shù),參數(shù)num表示哲學(xué)家編號(hào)find() const方法:返回該哲學(xué)家編號(hào)getinfo()
4、const方法:返回哲學(xué)家當(dāng)前狀態(tài)Change()方法:根據(jù)題目要求改變哲學(xué)家的狀態(tài)(等待-進(jìn)餐-思考-等待)另外,程序中包含一個(gè)公有對(duì)象,bool類(lèi)型數(shù)組tools6,用來(lái)保存6把餐當(dāng)前狀態(tài):true表示該餐具當(dāng)前空閑,false表示該餐具當(dāng)前正被使用。程序中還包含兩個(gè)公有函數(shù):print和toolstatus。Print用來(lái)返回一個(gè)哲學(xué)家的狀態(tài),toolstatus用來(lái)返回一個(gè)餐具的狀態(tài)。3.模塊分析。(1)主程序模塊:(2)狀態(tài)改變模塊:(3)返回哲學(xué)家狀態(tài)模塊:(4)返回餐具狀態(tài)模塊:結(jié)果與分析(可以加頁(yè)): 程序運(yùn)行開(kāi)始界面 哲學(xué)家狀態(tài):1號(hào),3號(hào),5號(hào)哲學(xué)家進(jìn)入等待狀態(tài),2號(hào),4號(hào)
5、哲學(xué)家進(jìn)入就餐狀態(tài),6號(hào)哲學(xué)家進(jìn)入思考狀態(tài),只有4號(hào),5號(hào)餐具空閑。 哲學(xué)家狀態(tài):1號(hào),3號(hào),6號(hào)哲學(xué)家進(jìn)入等待狀態(tài),2號(hào),4號(hào)哲學(xué)家進(jìn)入思考狀態(tài),5號(hào)哲學(xué)家進(jìn)入就餐狀態(tài),只有3號(hào),4號(hào)餐具在使用。退出程序結(jié)果分析:狀態(tài)1:1號(hào),3號(hào),5號(hào)哲學(xué)家進(jìn)入就餐狀態(tài),其他哲學(xué)家仍然等待,6把用餐工具都在使用。 狀態(tài)2:1號(hào),3號(hào),5號(hào)哲學(xué)家進(jìn)入思考狀態(tài),6號(hào)哲學(xué)家進(jìn)入就餐狀態(tài),只有4號(hào),5號(hào)餐具在使用。狀態(tài)3:1號(hào),3號(hào),5號(hào)哲學(xué)家進(jìn)入等待狀態(tài),2號(hào),4號(hào)哲學(xué)家進(jìn)入就餐狀態(tài),6號(hào)哲學(xué)家進(jìn)入思考狀態(tài),只有4號(hào),5號(hào)餐具空閑。狀態(tài)4:1號(hào),3號(hào),6號(hào)哲學(xué)家進(jìn)入等待狀態(tài),2號(hào),4號(hào)哲學(xué)家進(jìn)入思考狀態(tài),5號(hào)哲
6、學(xué)家進(jìn)入就餐狀態(tài),只有3號(hào),4號(hào)餐具在使用。分析:程序能夠?qū)崿F(xiàn)哲學(xué)家的思考,就餐,等待狀態(tài)的轉(zhuǎn)換,餐具能夠?qū)崿F(xiàn)互斥。設(shè)計(jì)體會(huì)與建議: 經(jīng)過(guò)了前后共2周的時(shí)間,我完成了這次課程設(shè)計(jì)。通過(guò)這次課程設(shè)計(jì),我學(xué)到了許多課本上學(xué)不到的知識(shí),注意到了許多課本上沒(méi)有提到的東西。而且,通過(guò)這次設(shè)計(jì),我得到了一個(gè)很好的理論聯(lián)系實(shí)際的機(jī)會(huì),鍛煉了通過(guò)理論解決實(shí)際問(wèn)題的能力。正所謂“實(shí)踐出真知”,有些代碼看上去沒(méi)什么問(wèn)題,但是實(shí)際運(yùn)行起來(lái)就是不出正確結(jié)果。代碼內(nèi)部可能存在邏輯或語(yǔ)法等方面我們平時(shí)不會(huì)注意到的小問(wèn)題,通過(guò)這次課程設(shè)計(jì),我積累了不少這樣小問(wèn)題的解決方法。設(shè)計(jì)中總會(huì)遇到這樣那樣的問(wèn)題,遇到問(wèn)題勢(shì)必要自己分
7、析問(wèn)題,通過(guò)各種渠道解決問(wèn)題,比如利用互聯(lián)網(wǎng)。這次課程設(shè)計(jì)也加強(qiáng)了我上網(wǎng)查數(shù)檢索問(wèn)題的能力。有些時(shí)候,學(xué)習(xí)到的知識(shí)是次要的,重要的是學(xué)習(xí)知識(shí)的方法。源程序代碼:#include #include #include #include #include using namespace std; bool tools6;/全局變量,用餐工具CRITICAL_SECTION cs; /信號(hào)量, 在線(xiàn)程中使用,臨界區(qū),當(dāng)一個(gè)線(xiàn)程執(zhí)行了EnterCritialSection之后,cs里面的信息便被修改了,以指明哪一個(gè)線(xiàn)程占用了它。class Philosopher private: int number;
8、int status; /*標(biāo)記當(dāng)前哲學(xué)家的狀態(tài),0表示正在等待(即處于饑餓狀態(tài)),1表示得到兩支筷子正在吃飯,2表示正在思考*/public:Philosopher(int num=0): status(2), number(num) int find() const return number; int getinfo() const return status; void Change() ; /狀態(tài)改變函數(shù); void Philosopher:Change() EnterCriticalSection (&cs) ; /進(jìn)入臨界區(qū)if(status=1)/正在進(jìn)餐toolsnumber
9、%6=true; /放下左手工具tools(number-1)%6=true; /放下右手工具status=2;/改變狀態(tài)為思考 else if(status=2)/思考中 status=0; /改變狀態(tài)為等待 else if(status=0)/等待中 if(toolsnumber%6&tools(number-1)%6) /左右手兩邊工具均為空閑狀態(tài)toolsnumber%6=false; /拿起左手工具tools(number-1)%6=false; /拿起右手工具status=1; LeaveCriticalSection (&cs) ; string print(Philosophe
10、r *pA) /pA-Change(); int i=pA-getinfo(); string str; if(i=0) str=等待; else if(i=1) str=就餐; else str=思考; return str; string toolstatus(bool a)string state;if(a=true)state=閑;if(a=false)state=用;return state;int main() char con = y; /判斷是否繼續(xù)for(int i=0;i6;i+) toolsi=true; /3組刀叉都未使用,初始化Philosopher P1(1),P2
11、(2),P3(3),P4(4),P5(5),P6(6); InitializeCriticalSection (&cs) ; /初始化初始化臨界區(qū)cout-狀態(tài)說(shuō)明示意圖:-endl;cout哲學(xué)家0號(hào)的狀態(tài)endl;cout哲學(xué)家5號(hào)的狀態(tài)叉3的狀態(tài)刀1的狀態(tài)哲學(xué)家1號(hào)的狀態(tài)endl;cout 刀3的狀態(tài) 叉1的狀態(tài)endl;cout哲學(xué)家4號(hào)的狀態(tài)叉2的狀態(tài)刀2的狀態(tài)哲學(xué)家2號(hào)的狀態(tài)endl;cout哲學(xué)家3號(hào)的狀態(tài)endl;cout餐具的狀態(tài), 用 表示使用中, 閑 表示空閑中。endl;cout-endl;cout哲學(xué)家們開(kāi)始生活:endl;coutendl;coutendl;while(con=y) P1.Change();P2.Change();P3.Change();P4.Change();P5.Change();P6.Change();cout當(dāng)前狀態(tài)為:endl;coutP1.find()print(&P1)endl;coutP6.find()print(&P6)toolstatus(tools0)toolstatus(tools1)P2.find()print(&P2)endl;cout toolstatus(tools5) toolstatus(tools2)endl
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 城市園林綠化工程施工協(xié)議
- 房地產(chǎn)權(quán)益轉(zhuǎn)讓合同范本參考
- 投資借款協(xié)議書(shū)范例
- 工程車(chē)租賃合同樣本
- 教育機(jī)構(gòu)教室租用協(xié)議
- 廣告公司員工合同范本
- 2024年鐵藝安裝合同協(xié)議書(shū)
- 工程輕工承包合同
- 移動(dòng)應(yīng)用程序合作合同模板修訂
- 中外合資企業(yè)勞動(dòng)合同參考
- 0~36個(gè)月兒童中醫(yī)藥健康管理服務(wù)
- 第三章藥物的化學(xué)結(jié)構(gòu)與藥代動(dòng)力
- 智慧樹(shù)關(guān)愛(ài)生命-自救與急救技能章節(jié)習(xí)題及答案
- 讓數(shù)據(jù)成為生產(chǎn)力-數(shù)據(jù)全生命周期管理
- “工匠精神”視域下的高職院校學(xué)生職業(yè)素養(yǎng)教育的路徑研究課題開(kāi)題報(bào)告
- 不要等到畢業(yè)以后(升級(jí)版)
- 一企一標(biāo)準(zhǔn)一崗一清單手冊(cè)模板
- 中西文化鑒賞知到章節(jié)答案智慧樹(shù)2023年鄭州大學(xué)
- 第四單元(知識(shí)清單)【 新教材精講精研精思 】 七年級(jí)語(yǔ)文上冊(cè) (部編版)
- 答題卡(六年級(jí)數(shù)學(xué))
- 潛水員體檢表
評(píng)論
0/150
提交評(píng)論