操作系統(tǒng)課程設(shè)計(論文)-哲學(xué)家問題的模擬實現(xiàn)_第1頁
操作系統(tǒng)課程設(shè)計(論文)-哲學(xué)家問題的模擬實現(xiàn)_第2頁
操作系統(tǒng)課程設(shè)計(論文)-哲學(xué)家問題的模擬實現(xiàn)_第3頁
操作系統(tǒng)課程設(shè)計(論文)-哲學(xué)家問題的模擬實現(xiàn)_第4頁
操作系統(tǒng)課程設(shè)計(論文)-哲學(xué)家問題的模擬實現(xiàn)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第6頁課程設(shè)計(論文)任務(wù)書軟件學(xué)院學(xué)院軟件測試專業(yè)05—測試1班一、課程設(shè)計(論文)題目哲學(xué)家問題的模擬實現(xiàn)二、課程設(shè)計(論文)工作自2008年1月7日起至2008年1月11日止。三、課程設(shè)計(論文)地點:信息機(jī)房5號樓四、課程設(shè)計(論文)內(nèi)容要求:1.本課程設(shè)計的目的通過課程設(shè)計,使學(xué)生理論聯(lián)系實際,在程序設(shè)計實踐中進(jìn)一步了解操作系統(tǒng)的原理和算法的實現(xiàn),了解設(shè)計系統(tǒng)時應(yīng)考慮的因素。了解C應(yīng)用程序編寫。培養(yǎng)學(xué)生分析、解決問題的能力,提高學(xué)生的論文寫作能力。2.課程設(shè)計的任務(wù)及要求1)基本要求:(1)熟悉C語言的運用,掌握和理解操作系統(tǒng)中的原理和算法;(2)結(jié)合操作系統(tǒng)的基本原理,進(jìn)行程序設(shè)計;(3)對操作系統(tǒng)的設(shè)計和實現(xiàn)有進(jìn)一步認(rèn)識和理解。2)課程設(shè)計論文編寫要求(1)理論設(shè)計部分以課程設(shè)計論文的形式提交,格式必須按照課程設(shè)計論文標(biāo)準(zhǔn)格式進(jìn)行書寫和裝訂。(2)課程設(shè)計報告(論文)包括目錄、設(shè)計目的和要求、正文(相關(guān)原理分析、程序設(shè)計、流程圖、程序?qū)崿F(xiàn)和程序調(diào)試等內(nèi)容)、設(shè)計小結(jié)、參考文獻(xiàn)、附錄等。3)課程設(shè)計評分標(biāo)準(zhǔn):(1)考勤與學(xué)習(xí)態(tài)度:20分(2)理論理解與課程設(shè)計報告論文:30分;(3)動手操作與程序設(shè)計:30分;(4)設(shè)計論文答辯:20分。4)參考文獻(xiàn):(1)湯子瀛.計算機(jī)操作系統(tǒng)[M].西安電子科技大學(xué)出版社.2006.95)課程設(shè)計進(jìn)度安排1.準(zhǔn)備階段(2學(xué)時):選擇設(shè)計題目、了解設(shè)計目的要求、查閱相關(guān)資料2.程序模塊設(shè)計分析階段(2學(xué)時):程序總體設(shè)計、詳細(xì)設(shè)計3.代碼編寫調(diào)試階段(6學(xué)時):程序模塊代碼編寫、調(diào)試、測試4.撰寫課程設(shè)計論文階段(2學(xué)時):總結(jié)課程設(shè)計任務(wù)和設(shè)計內(nèi)容,撰寫課程設(shè)計論文學(xué)生簽名:2008年1月11日6)選擇課程設(shè)計題目具體要求:課程設(shè)計(論文)評審意見(1)考勤與學(xué)習(xí)態(tài)度(20分):優(yōu)()、良()、中()、一般()、差();(2)理論理解與課程設(shè)計報告論文(30分):優(yōu)()、良()、中()、一般()、差();(3)動手操作與程序設(shè)計(30分):優(yōu)()、良()、中()、一般()、差();(4)設(shè)計論文答辯(20分):優(yōu)()、良()、中()、一般()、差();(5)格式規(guī)范性及考勤是否降等級:是()、否()評閱人:職稱:講師2008年1月日目錄1、設(shè)計目的和要求……………42、設(shè)計內(nèi)容……………………53、流程圖………64、設(shè)計程序和設(shè)計實現(xiàn)………86、設(shè)計小結(jié)……………………135、參考文獻(xiàn)……………………146、附錄(源代碼)………………15設(shè)計目的和要求1、課設(shè)目的:通過課程設(shè)計,使理論聯(lián)系實際,在程序設(shè)計實踐中進(jìn)一步了解操作系統(tǒng)的原理和算法的實現(xiàn),全面分析設(shè)計系統(tǒng)時應(yīng)考慮的各種因素。另外,開設(shè)此課程設(shè)計也是為了配合《計算機(jī)操作系統(tǒng)》課程的教學(xué),通過模擬操作、系統(tǒng)原理的實現(xiàn),使學(xué)生能更深刻地領(lǐng)會操作系統(tǒng)工作原理和操作系統(tǒng)實現(xiàn)方法的理解,并可練習(xí)程序設(shè)計。2、課設(shè)要求:問題描述:有五個哲學(xué)家共用一張圓桌,分別坐在周圍的五章椅子上,在圓桌上有五個碗和五只筷子,他們的生活方式是交替地進(jìn)行思考和進(jìn)餐。平時,一個哲學(xué)家進(jìn)行思考,饑餓時便試圖去用其左右最靠進(jìn)他的筷子,只有在他拿到兩只筷子時才能進(jìn)餐。進(jìn)餐畢,放下筷子繼續(xù)思考。①用VC編程創(chuàng)建五個線程,模擬實現(xiàn)五個哲學(xué)家來競爭五只筷子(資源)去吃通心面的情況;②使進(jìn)程可以在任意時間內(nèi)運行;③確保五個線程的同步和互斥;④運行時不會產(chǎn)生死鎖。設(shè)計內(nèi)容1、依據(jù)題目要求,對于問題中的“筷子”(臨界資源),在程序中用數(shù)組b[j]表示,并且通過調(diào)用函數(shù)“_beginthread(ThreadFunc1,0,&ph1)void和ThreadFunc1—3(PVOIDparam)”兩個系統(tǒng)函數(shù)來編寫線程,以及進(jìn)行相關(guān)操作。2、五位哲學(xué)家則是通過類philosopher來定義。3、線程的同步和互斥是通過調(diào)用VC類庫中的"windows.h"類和"process.h"類實現(xiàn)的,具體來說是通過函數(shù)“EnterCriticalSection(&cs)、LeaveCriticalSection(&cs)、InitializeCriticalSection(&cs)、DeleteCriticalSection(&cs)”構(gòu)建臨界區(qū)來實現(xiàn)線程的同步和互斥。4、解決死鎖的辦法:通過檢測進(jìn)程狀態(tài),一旦五位哲學(xué)家同時處于wating狀態(tài),則認(rèn)為進(jìn)程處于死鎖狀態(tài),此時采用釋放哲學(xué)家1(即:進(jìn)程1)的資源,來解除死鎖,當(dāng)然也可以釋放其他進(jìn)程所占用的資源。在本程序中是通過drop()函數(shù)來實現(xiàn)以上過程的(詳見,程序?qū)崿F(xiàn))。5、為了使測試更具普遍性和隨機(jī)性,本程序通過調(diào)用系統(tǒng)類"time.h"當(dāng)中的函數(shù)srand()、rand()以及Sleep()來自動產(chǎn)生一個隨機(jī)時間,以及生成一個指定的進(jìn)程之間的掛起時間,以此起到一定的延時作用。流程圖開始開始創(chuàng)建進(jìn)程創(chuàng)建進(jìn)程進(jìn)程操作進(jìn)程操作左或右資源為空進(jìn)程狀態(tài)為WaitingN左或右資源為空進(jìn)程狀態(tài)為Waiting釋放左資源YN釋放左資源狀態(tài)改為Thingking選擇左資源進(jìn)程狀態(tài)為Eating狀態(tài)改為Thingking選擇左資源進(jìn)程狀態(tài)為Eating狀態(tài)改為Eating狀態(tài)改為EatingN進(jìn)程狀態(tài)為Thinking進(jìn)程狀態(tài)為ThinkingN釋放左右資源釋放左右資源Y其余進(jìn)程狀態(tài)為Waiting狀態(tài)改為Thinking其余進(jìn)程狀態(tài)為Waiting狀態(tài)改為ThinkingY左或右資源未占用釋放進(jìn)程1資源左或右資源未占用釋放進(jìn)程1資源改變進(jìn)程1狀態(tài)為ThinkingN改變進(jìn)程1狀態(tài)為ThinkingY保持Thinking狀態(tài)占用左資源保持Thinking狀態(tài)占用左資源返回進(jìn)程操作狀態(tài)改變?yōu)閃aiting返回進(jìn)程操作狀態(tài)改變?yōu)閃aiting返回進(jìn)程操作返回進(jìn)程操作結(jié)束演示結(jié)束演示NY返回進(jìn)程操作結(jié)束演示返回進(jìn)程操作結(jié)束演示四、程序設(shè)計和程序?qū)崿F(xiàn)該算法的實現(xiàn)主要包括:線程創(chuàng)建、狀態(tài)轉(zhuǎn)變和解除死鎖三大模塊,其中,狀態(tài)轉(zhuǎn)變模塊包括:eating狀態(tài)轉(zhuǎn)變?yōu)閠hinking狀態(tài)、thinking狀態(tài)轉(zhuǎn)變?yōu)閣aiting狀態(tài)、waiting狀態(tài)轉(zhuǎn)變?yōu)閑ating狀態(tài)?,F(xiàn)將各主要模塊表示如下:1、線程創(chuàng)建模塊:_beginthread(ThreadFunc1,0,&ph1);_beginthread(ThreadFunc2,0,&ph2);_beginthread(ThreadFunc3,0,&ph3);_beginthread(ThreadFunc4,0,&ph4);_beginthread(ThreadFunc5,0,&ph5);線程相關(guān)操作:voidThreadFunc1...5(PVOIDparam){while(1) {philosopher*pPh;pPh=(philosopher*)param;pPh->ChangeStatus(); }}說明:因為創(chuàng)建的五個線程,其相關(guān)操作都一樣,故上面僅僅給出了其中一個操作模塊,其余的類似,不再贅述。

2、狀態(tài)轉(zhuǎn)變模塊:eating狀態(tài)轉(zhuǎn)變?yōu)閠hinking狀態(tài)模塊:EnterCriticalSection(&cs);if(m_index==1){assert(!b[m_num]);b[m_num]=TRUE;if(m_num==1) {b[5]=FALSE;assert(!b[5]);b[5]=TRUE; }m_index=2;srand(time(NULL)*10000);Sleep(rand()%100);}thinking狀態(tài)轉(zhuǎn)變?yōu)閣aiting狀態(tài):elseif(m_index==2){if(m_num==1){if(b[1]==TRUE||b[5]==TRUE) m_index=0;}elseif(b[m_num]==TRUE||b[m_num-1]==TRUE){m_index=0;} elsem_index=2;}waiting狀態(tài)轉(zhuǎn)變?yōu)閑ating狀態(tài):elseif(m_index==0){if(m_num==1) {if(b[1]&&b[5]) {b[1]=FALSE;b[5]=FALSE;m_index=1;srand(time(NULL)*10000);Sleep(rand()%100); } else {b[1]=TRUE; m_index=2; srand(time(NULL)*10000);Sleep(rand()%100); } }else {if(b[m_num]&&b[m_num-1]) {b[m_num]=FALSE;b[m_num-1]=FALSE;m_index=1;srand(time(NULL)*10000);Sleep(rand()%100); }else {b[m_num]=TRUE; m_index=2; srand(time(NULL)*10000);Sleep(rand()%100); } }}LeaveCriticalSection(&cs);3、死鎖解除模塊:voiddrop(){philosopherph1(1),ph2(2),ph3(3),ph4(4),ph5(5); if(ph1.GetStatus()==0&&ph2.GetStatus()==0&&ph3.GetStatus()==0&&ph4.GetStatus()==0&&ph5.GetStatus()==0) {ph1.status();}調(diào)試結(jié)果見(圖—1)圖—1五、設(shè)計小結(jié)課程設(shè)計終于順利完成,在松一口氣刻的是同時,也要感謝給過我指導(dǎo)的張老師以及幫助過我的所有同學(xué),再次感謝你們!一個多星期課設(shè)時間里,我學(xué)到很多的東西,不僅鞏固

溫馨提示

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

最新文檔

評論

0/150

提交評論