![操作系統(tǒng)哲學(xué)家就餐問題實(shí)驗(yàn)報(bào)告_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/1/f0e7d072-53d8-4161-83ca-6702bb31d4a1/f0e7d072-53d8-4161-83ca-6702bb31d4a11.gif)
![操作系統(tǒng)哲學(xué)家就餐問題實(shí)驗(yàn)報(bào)告_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/1/f0e7d072-53d8-4161-83ca-6702bb31d4a1/f0e7d072-53d8-4161-83ca-6702bb31d4a12.gif)
![操作系統(tǒng)哲學(xué)家就餐問題實(shí)驗(yàn)報(bào)告_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/1/f0e7d072-53d8-4161-83ca-6702bb31d4a1/f0e7d072-53d8-4161-83ca-6702bb31d4a13.gif)
![操作系統(tǒng)哲學(xué)家就餐問題實(shí)驗(yàn)報(bào)告_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/1/f0e7d072-53d8-4161-83ca-6702bb31d4a1/f0e7d072-53d8-4161-83ca-6702bb31d4a14.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、。1、實(shí)驗(yàn)?zāi)康模海?1)、掌握基本的同步互斥算法,理解哲學(xué)家就餐模型。( 2)、了解 windows 2000/XP 中多線程的并發(fā)執(zhí)行機(jī)制,線程間的同步和互斥。( 3)、學(xué)習(xí)使用 windows 2000/XP 中基本的同步對(duì)象,掌握相應(yīng)的API。2、實(shí)驗(yàn)要求有五個(gè)哲學(xué)家共用一張放有五把椅子的餐桌, 每人坐在一把椅子上, 桌子上有五個(gè)碗和五只筷子, 每人兩邊各放一只筷子。 哲學(xué)家們是交替思考和進(jìn)餐, 饑餓時(shí)便試圖取其左右最靠近他的筷子。條件: (1) 、只有拿到兩只筷子時(shí),哲學(xué)家才能吃飯。 (2) 、如果筷子已被別人拿走,則必須等別人吃完之后才能拿到筷子。 (3) 、任意一個(gè)哲學(xué)家在自己未拿
2、到兩只筷子吃飯前,不會(huì)放下手中拿到的筷子。3、實(shí)驗(yàn)環(huán)境硬件: CPU :AMD QL64內(nèi)存: 2GB 顯卡: ATI 4570 硬盤:日立 250G軟件: Windows 2000/XP。開發(fā)工具: VC+6.04、實(shí)驗(yàn)內(nèi)容1)實(shí)現(xiàn)原理1、利用記錄型信號(hào)量解決哲學(xué)家進(jìn)餐問題;2、臨界區(qū)互斥編程原理。2 )程序結(jié)構(gòu)(流程圖)開始定義信號(hào)量tools5定義哲學(xué)家類對(duì)象P1-P5哲學(xué)家的狀態(tài)發(fā)生改變;P1.change();P2.change();P3.change();P4.change();P5.change()輸出當(dāng)前狀態(tài)否停止程序結(jié)束精選資料,歡迎下載。圖 1. 主程序模塊流程圖開始哲學(xué)家
3、處于的狀態(tài) status=1是放 下 左 右否 哲學(xué)家處于思考狀態(tài)手工具Status=2否 哲學(xué)家處于等待狀態(tài)為思考是狀態(tài)改為等待status=0Status=0Status=2是 左右手筷子均空閑是 拿起左右手筷子狀態(tài)改為就餐status=1結(jié)束圖 2. 狀態(tài)改變模塊流程圖精選資料,歡迎下載。圖 3. 返回哲學(xué)家狀態(tài)流程圖精選資料,歡迎下載。圖 4 返回餐具狀態(tài)模塊流程圖3)數(shù)據(jù)結(jié)構(gòu)(1)、定義一個(gè)哲學(xué)家類,包含兩個(gè)私有對(duì)象和四個(gè)公有對(duì)象。(2)、定義函數(shù):Number對(duì)象:哲學(xué)家的編號(hào);Status 對(duì)象:保存當(dāng)前該哲學(xué)家的狀態(tài), 0 表示等待, 1 表示吃飯, 2 表示思考;Philos
4、opher(int num)方法:哲學(xué)家類構(gòu)造函數(shù),參數(shù) num表示哲學(xué)家編號(hào); find() const 方法:返回該哲學(xué)家編號(hào);getinfo() const方法:返回哲學(xué)家當(dāng)前狀態(tài);Change() 方法:根據(jù)題目要求改變哲學(xué)家的狀態(tài)(等待- 進(jìn)餐 - 思考)另外,程序中包含一個(gè)公有對(duì)象, bool 類型數(shù)組 tools6 ,用來保存 6 把餐具當(dāng)前狀態(tài): true 表示該餐具當(dāng)前空閑, false 表示該餐具當(dāng)前正被使用。程序中還包含兩個(gè)公有函數(shù): print 和 toolstatus 。Print 用來返回一個(gè)哲學(xué)家的狀態(tài), toolstatus 用來返回一個(gè)餐具的狀態(tài)。4)實(shí)現(xiàn)步驟
5、1)打開 VC,選擇菜單項(xiàng) File-New ,選擇 Projects選項(xiàng)卡并建立一個(gè)名為xwj的 win32 console application工程,創(chuàng)建時(shí)注意指定創(chuàng)建該工程的目錄;精選資料,歡迎下載。( 2 ) 在 工 程 中 創(chuàng) 建 源 文 件 xwj.cpp : 選 擇 菜 單 項(xiàng) Project-Add to project-Files, 此時(shí)將打開一個(gè)新窗口,在其中的“文件名”輸入欄中輸入自己想要?jiǎng)?chuàng)建的文件名, 這里是 xwj.cpp ;接著詢問是否創(chuàng)建新文件時(shí)回答 “ yes”。通過 Workspace-Source Files 打開該文件,在其中編輯源文件并保存;( 3)通
6、過調(diào)用菜單項(xiàng) Build-Rebuild all 進(jìn)行編譯連接,可以在指定的工程目錄下得到 debug-xwj.exe 程序。5、實(shí)驗(yàn)測(cè)試及分析:圖 5. 測(cè)試結(jié)果 1精選資料,歡迎下載。圖 6. 測(cè)試結(jié)果 2圖 7. 測(cè)試結(jié)果 3精選資料,歡迎下載。圖 8. 測(cè)試結(jié)果 45、結(jié)果分析:( 1)、程序分為四大模塊, 一步步解決了哲學(xué)家狀態(tài)及狀態(tài)改變的問題, 筷子的“閑”、“用”問題;( 2)、實(shí)現(xiàn)了哲學(xué)家等待、吃飯、思考三個(gè)過程的轉(zhuǎn)換循環(huán),并且避免了死鎖問題;( 3)、讓臨界資源得到了充分的利用。6、實(shí)驗(yàn)心得體會(huì)( 1)、這次實(shí)驗(yàn)加強(qiáng)了我上網(wǎng)查數(shù)檢索問題的能力;( 2)、這次實(shí)驗(yàn)讓我學(xué)會(huì)分模塊
7、解決問題, 怎樣運(yùn)用互斥鎖對(duì)臨界資源進(jìn)行管理;( 3)、這次實(shí)驗(yàn),發(fā)現(xiàn)自己在編程上及一些函數(shù)的認(rèn)識(shí)仍存在較大的問題, 以后應(yīng)該多多實(shí)踐,提高自己的反應(yīng)速度,加強(qiáng)邏輯思維能力。附錄:源代碼#include #include #include #include #include using namespace std;bool tools5; /全局變量,用餐工具CRITICAL_SECTION cs; / 信號(hào)量 ,在線程中使用,臨界區(qū)class Philosopherprivate:int number;int status;/*標(biāo)記當(dāng)前哲學(xué)家的狀態(tài),0 表示正在等待( 即處于饑餓狀態(tài) ),1
8、 表示得到兩支筷子正在吃飯 ,2 表示正在思考 */ public:Philosopher(int num=0): status(2), number(num) const int find()return number;const int getinfo() return status; void Change() ; /狀態(tài)改變函數(shù)void dead_lock();/void Philosopher:dead_lock()EnterCriticalSection (&cs) ; /進(jìn)入臨界區(qū)string s;if(status=1)精選資料,歡迎下載。toolsnumber%5=true;
9、/ tools(number-1)%5=true; status=2;else if(status=2)status=0;/tools(number-1)%5=false;/tools(number-1)%5=true;else if(status=0)toolsnumber%5=false;tools(number-1)%5=false;status=1;LeaveCriticalSection (&cs) ;/ coutChange();int i=pA-getinfo();string str;if(i=0)str=等待 ;else if(i=1)str=就餐 ;else str=思考
10、;return str;string toolstatus(bool a)string state;if(a=true)state=閑;if(a=false)state=用;return state;int main()char con=y; /判斷是否繼續(xù)/ con = n;for(int i=0;i5;i+)toolsi=true; /筷子都未使用,初始化Philosopher P1(1),P2(2),P3(3),P4(4),P5(5);InitializeCriticalSection (&cs) ; /初始化初始化臨界區(qū)cout-狀態(tài)說明示意圖:-endl;cout哲學(xué)家 1 號(hào)的狀態(tài)
11、 endl;cout筷子 0 的狀態(tài) 筷子 1 的狀態(tài) endl;cout 哲學(xué)家5 號(hào)的狀態(tài) 哲學(xué)家2 號(hào)的狀態(tài)endl;cout筷子 4 的狀態(tài) 筷子 2 的狀態(tài) endl;cout哲學(xué)家 4 號(hào)的狀態(tài) 哲學(xué)家 3 號(hào)的狀態(tài) endl;cout筷子 3 的狀態(tài) endl;/cout哲學(xué)家 3 號(hào)的狀態(tài) endl;cout 筷子的狀態(tài),用表示使用中,閑表示空閑中。endl;cout-精選資料,歡迎下載。endl;/cout哲學(xué)家們開始生活: endl;/cout當(dāng)前狀態(tài): ;coutcon;while(con=y)P1.Change();P2.Change();P3.Change();P4.
12、Change();P5.Change();cout 當(dāng)前狀態(tài)為: endl;coutP1.find()print(&P1)endl;couttoolstatus(tools0)toolstatus(tools1)endl;coutP5.find()print(&P5)P2.find()print(&P2)endl;couttoolstatus(tools4)toolstatus(tools2)endl;coutP4.find()print(&P4)P3.find()print(&P3)endl;couttoolstatus(tools3)endl;cout-endl;coutcon;Sleep(20);while(con=n)P1.dead_lock();P2.dead_lock();P3.dead_lock();P4.dead_lock();P5.dead_lock();cout 死鎖情況 endl;coutP1.find()print(&P1)endl;couttoolstatus(tools0)toolstatus(tools1)endl;coutP5.find()print(&P5)P2.find()print(&P2)endl;couttoolstatus(tools4)toolstatu
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 職場(chǎng)溝通中的情緒管理技巧
- 食品企業(yè)安全生產(chǎn)事故綜合應(yīng)急預(yù)案
- 工業(yè)環(huán)境下的安全教育及應(yīng)急措施
- 兩人合作研發(fā)合同范本
- 事業(yè)單位臨時(shí)工勞動(dòng)合同相關(guān)規(guī)定
- 二手車交易合同官方范本
- 個(gè)人業(yè)務(wù)合作合同版
- 二手房買賣合同模板全新版
- 專業(yè)育兒嫂勞動(dòng)合同協(xié)議書范例
- 個(gè)人車輛抵押借款合同標(biāo)準(zhǔn)版
- 抖音賬號(hào)租賃合同協(xié)議
- 2024年高考真題-化學(xué)(重慶卷) 含解析
- 三甲醫(yī)院臨床試驗(yàn)機(jī)構(gòu)-31 V00 專業(yè)組備案及考核SOP
- 胞嘧啶化學(xué)合成
- 職業(yè)衛(wèi)生培訓(xùn)課件
- 柴油墊資合同模板
- GB/T 44489-2024高級(jí)輔助駕駛地圖審查要求
- 2024-2030年中國體外除顫器行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 2024-2030年中國人力資源行業(yè)市場(chǎng)發(fā)展前瞻及投資戰(zhàn)略研究報(bào)告
- 2024-2030年中國樺樹汁行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 全冊(cè)(教案)外研版(一起)英語四年級(jí)下冊(cè)
評(píng)論
0/150
提交評(píng)論