




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)踐教學(xué)蘭州理工大學(xué)計(jì)算機(jī)與通信學(xué)院2013年秋季學(xué)期操作系統(tǒng)原理課程設(shè)計(jì)題目:蘋(píng)果一桔子問(wèn)題的實(shí)現(xiàn)專業(yè)班級(jí):姓名:學(xué)號(hào):指導(dǎo)教師:成績(jī):目錄TOC\o"1-5"\h\z摘要 2正文 3\o"CurrentDocument"問(wèn)題描述 3\o"CurrentDocument"設(shè)計(jì)目的 3\o"CurrentDocument"設(shè)計(jì)要求 4\o"CurrentDocument"詳細(xì)設(shè)計(jì) 4界面設(shè)計(jì) 4算法設(shè)計(jì) 54.2.1數(shù)據(jù)結(jié)構(gòu) 5模塊聲明 6算法設(shè)計(jì) 6流程圖 8\o"CurrentDocument"結(jié)果分析 12\o"CurrentDocument"設(shè)計(jì)總結(jié) 16\o"CurrentDocument"參考文獻(xiàn) 17致謝 18\o"CurrentDocument"附錄:源程序代碼 19摘要本設(shè)計(jì)實(shí)際是生產(chǎn)者—消費(fèi)者的變形,是典型的進(jìn)程同步問(wèn)題。本問(wèn)題利用C語(yǔ)言實(shí)現(xiàn)相應(yīng)的P、V原語(yǔ)。主要過(guò)程可用生產(chǎn)消費(fèi)者來(lái)模擬,這里,生產(chǎn)者(父親和母親)放入緩沖區(qū)(盤(pán)子)的產(chǎn)品有兩類(蘋(píng)果和桔子),消費(fèi)者(女兒和兒子)也有兩類,每類消費(fèi)者只消費(fèi)其中固定的一類產(chǎn)品。生產(chǎn)者和消費(fèi)者共享緩沖區(qū),緩沖區(qū)中有空時(shí),生產(chǎn)者可放入產(chǎn)品(不許放重),否則等待。緩沖區(qū)中有產(chǎn)品時(shí),消費(fèi)者可取出產(chǎn)品(不許取重),否則等待。關(guān)鍵字:進(jìn)程同步,P、V操作,信號(hào)量正文問(wèn)題描述桌上有一個(gè)空盤(pán)子,只允許放一個(gè)水果。爸爸專向盤(pán)中放蘋(píng)果,媽媽專向盤(pán)中放桔子,兒子專等吃盤(pán)中的桔子,女兒專等吃盤(pán)中的蘋(píng)果。規(guī)定當(dāng)盤(pán)空時(shí),一次只能放一個(gè)水果。這個(gè)問(wèn)題實(shí)際上是兩個(gè)生產(chǎn)者和兩個(gè)消費(fèi)者被連接到僅能放一個(gè)產(chǎn)品的緩沖器上。生產(chǎn)者各自生產(chǎn)不同的產(chǎn)品,但就其本質(zhì)而言,他們是同一類生產(chǎn)者。而消費(fèi)者則各自去需要的產(chǎn)品消費(fèi),但消費(fèi)的方式不同。解決此類問(wèn)題利用記錄型信號(hào)量機(jī)制和P、V操作來(lái)實(shí)現(xiàn)進(jìn)程同步。進(jìn)程同步是指一個(gè)進(jìn)程的執(zhí)行依賴于另一個(gè)進(jìn)程的信號(hào)或消息,當(dāng)一個(gè)進(jìn)程沒(méi)有得到來(lái)自與另一個(gè)進(jìn)程的信號(hào)或消息時(shí)則等待,直到信號(hào)或消息到達(dá)才被喚醒。設(shè)計(jì)目的本實(shí)驗(yàn)是典型的進(jìn)程同步問(wèn)題。某些進(jìn)程為了完成同一任務(wù)分工合作,由于合作的每一個(gè)進(jìn)程都是獨(dú)立的不可預(yù)知的推進(jìn),這就需要相互合作的進(jìn)程在某些合作點(diǎn)上協(xié)調(diào)各自的工作。當(dāng)合作進(jìn)程中的一個(gè)到達(dá)合作點(diǎn)后,在尚未得到其他合作進(jìn)程發(fā)來(lái)的消息或信號(hào)前應(yīng)阻塞自己,直到其合作進(jìn)程發(fā)來(lái)協(xié)調(diào)信號(hào)或消息后才能被喚醒。這就是進(jìn)程同步要解決的問(wèn)題。本實(shí)驗(yàn)借助C語(yǔ)言實(shí)現(xiàn)進(jìn)程同步經(jīng)典問(wèn)題—蘋(píng)果-桔子問(wèn)題,用高級(jí)語(yǔ)言編寫(xiě)和調(diào)試一個(gè)進(jìn)程同步程序,以加深對(duì)進(jìn)程同步機(jī)制的理解。通過(guò)用C語(yǔ)言模擬進(jìn)程同步實(shí)現(xiàn),加深理解有關(guān)進(jìn)程同步機(jī)制的概念及P、V操作的應(yīng)用。通過(guò)該題目的設(shè)計(jì)過(guò)程,掌握進(jìn)程同步問(wèn)題的原理、軟件開(kāi)發(fā)方法并提高解決實(shí)際問(wèn)題的能力。設(shè)計(jì)要求(1)分析設(shè)計(jì)要求,給出解決方案(要說(shuō)明設(shè)計(jì)實(shí)現(xiàn)所用的原理、采用的數(shù)據(jù)結(jié)構(gòu))。(2)設(shè)計(jì)合適的測(cè)試用例,對(duì)得到的運(yùn)行結(jié)果要有分析。(3)設(shè)計(jì)中遇到的問(wèn)題,設(shè)計(jì)的心得體會(huì)。(4)文檔:課程設(shè)計(jì)打印文檔每個(gè)學(xué)生一份,并裝在統(tǒng)一的資料袋中,資料袋前面要貼有學(xué)校統(tǒng)一的資料袋封面。(5)光盤(pán):每個(gè)學(xué)生文檔和程序資料分別建在一個(gè)以自己學(xué)號(hào)和姓名命名的文件夾下,并要求每班負(fù)責(zé)人匯總每個(gè)學(xué)生的文件放在以班級(jí)姓名命名的文件夾下,刻錄成5寸光盤(pán),并復(fù)制四份(共五張內(nèi)容相同的光盤(pán)),放在一個(gè)專門(mén)的資料袋中,不必再裝軟盤(pán)。詳細(xì)設(shè)計(jì)4.1界面設(shè)計(jì)printf("現(xiàn)在盤(pán)子里有%d個(gè)蘋(píng)果,%d個(gè)桔子\n",apple,orange);F見(jiàn)在盤(pán)于里有上企蘋(píng)果亠回個(gè)桔子printf("father進(jìn)程處于等待狀態(tài)\n");printf("mother進(jìn)程處于等待狀態(tài)\n");printf("son進(jìn)程處于等待狀態(tài)\n");printf("daughter進(jìn)程處于等待狀態(tài)\n");豳亦七呼進(jìn)程處十尊待拔態(tài)printf("第%d次操作:\n",k+l);printf("處于等待的daughter自動(dòng)被調(diào)用\n");as耳詡呻頤e卻圖噩■printf("處于等待的son自動(dòng)被調(diào)用。\n");printf("處于等待的father自動(dòng)被調(diào)用\n");printf("處于等待的mother自動(dòng)被調(diào)用\n");被調(diào)處于等待的"otherprintf("處于等待的father自動(dòng)被調(diào)用\n");printf("father被調(diào)處于等待的"otherprintf("處于等待的father自動(dòng)被調(diào)用\n");printf("father調(diào)用.\n");空護(hù)空週用二printf("mother調(diào)用.\n");printf("son調(diào)用.\n");printf("daughter調(diào)用\n");aughteFijo4.2算法設(shè)計(jì)4.2.1數(shù)據(jù)結(jié)構(gòu)1) 用一個(gè)整型變量plat_size表示盤(pán)子,初始值為0,plat_size=apple+orange,當(dāng)放水果plat_size加1,取水果plat_size減1。當(dāng)plat_size為1時(shí),表示盤(pán)子已滿,此時(shí)若進(jìn)行放水果操作,放水果將處于等待狀態(tài);當(dāng)為0時(shí),表示盤(pán)子已空,此時(shí)若進(jìn)行取水果操作,取水果操作將處于等待狀態(tài)。2) 整型變量orang和apple分別表示盤(pán)中桔子和蘋(píng)果的數(shù)目,初始值都為0,。3) 用4個(gè)整型變量father_lag、mother_lag、son_lag、daughter_lag表示4個(gè)進(jìn)程是否處于等待狀態(tài),處于等待狀態(tài)時(shí),變量值為1。4) 兩個(gè)水果同時(shí)處等待狀態(tài)時(shí),若有取水果的操作將自動(dòng)執(zhí)行等待放水果進(jìn)程,執(zhí)行按等待的先后順序。5) 用一個(gè)隨機(jī)函數(shù)產(chǎn)生0~3的4個(gè)整數(shù),分別對(duì)應(yīng)4個(gè)進(jìn)程調(diào)用。intapple=0;//蘋(píng)果個(gè)數(shù)intorange=0;//桔子個(gè)數(shù)intfather_lag=1;//father進(jìn)程標(biāo)志intmother_lag=1;//mother進(jìn)程標(biāo)志intson_lag=1;//son進(jìn)程標(biāo)志intdaughter_lag=1;//女兒進(jìn)程標(biāo)志intplat_size=0;//盤(pán)子中水果數(shù)量intmf=0;//father與mother進(jìn)程等待先后順序4.2.2模塊聲明主函數(shù)用一個(gè)隨機(jī)函數(shù)產(chǎn)生0~3的4個(gè)整數(shù),分別對(duì)應(yīng)4個(gè)進(jìn)程的調(diào)用調(diào)用的次數(shù)可以自己輸入,本程序共產(chǎn)生10次隨機(jī)調(diào)用過(guò)程。4個(gè)進(jìn)程函數(shù)爸爸向盤(pán)中放一個(gè)蘋(píng)果操作:father。媽媽想盤(pán)中放一個(gè)桔子造作:mother()兒子從盤(pán)中取一個(gè)桔子操作:son()女兒從盤(pán)中取一個(gè)蘋(píng)果操作:daughter()print()函數(shù) 用于輸出盤(pán)中蘋(píng)果和桔子的個(gè)數(shù)及有哪些進(jìn)程處于等待狀態(tài)。4.2.3算法設(shè)計(jì)本程序算法較為簡(jiǎn)單,僅僅使用了大量的if?else結(jié)構(gòu)和一個(gè)for循環(huán)結(jié)構(gòu),其算法用P、V原語(yǔ)描述如下:Semaphoreplat_size=1,orange=0,apple=0;父親進(jìn)程do{削一個(gè)蘋(píng)果;p(plat_size);將蘋(píng)果放入盤(pán)中;v(apple);}while(1)母親進(jìn)程do{剝一個(gè)桔子;p(plat_size);將桔子放入盤(pán)中v(orange);}while(1)兒子進(jìn)程do{p(oange);從盤(pán)中去桔子v(plat_size);吃桔子;}while(1)女兒進(jìn)程do{p(apple);從盤(pán)中取蘋(píng)果v(plat_size);}while(1)4.3流程圖爸爸放蘋(píng)果進(jìn)程的操作流程(如圖一)媽媽放桔子進(jìn)程的操作流程(如圖二):兒子取桔子的操作流程圖(如圖三):圖三女兒取蘋(píng)果的操作流程圖(如圖四):圖四結(jié)果分析第一次運(yùn)行結(jié)果為(圖五、圖六)圖五圖五圖六第二次運(yùn)行結(jié)果(圖七、圖八):圖七1勅枝操作:fathep調(diào)用.乍見(jiàn)在盤(pán)-在里崔士個(gè)蘋(píng)果,片father進(jìn)程址于等待狀蠱nothe1ressanykeytocontinue進(jìn)程處手等再:菠態(tài)taught"遠(yuǎn)程處于等舂狀態(tài)處丁等待的daughter自劫里有矽T蘋(píng)里,^ther進(jìn)程址于?亠?「「mother進(jìn)程處于ressanykeytocontinue/態(tài),態(tài)態(tài)狀果蘋(píng)逐価次操作:daughter調(diào)用乍見(jiàn)注盤(pán)干里有矽個(gè)Father/態(tài),態(tài)態(tài)狀果蘋(píng)daught"進(jìn)程處于圖八設(shè)計(jì)總結(jié)在此次面向?qū)ο笳n程設(shè)計(jì)中,我的題目是:蘋(píng)果—桔子問(wèn)題的實(shí)現(xiàn)。剛拿到這個(gè)任務(wù)時(shí)就感覺(jué)到了一種困難和挑戰(zhàn)!不知道從何下手開(kāi)始設(shè)計(jì)程序,經(jīng)過(guò)三天的思考,才有了一定的眉目。最后在老師和同學(xué)的幫助下,終于得出了一套可行的方案。依照策劃的設(shè)計(jì)思想,又過(guò)了六天的編寫(xiě)和測(cè)試,終于實(shí)現(xiàn)了進(jìn)程的同步功能,雖然整體還有待提高,但總算實(shí)現(xiàn)了基本功能,還算滿意。通過(guò)此次設(shè)計(jì)實(shí)訓(xùn)我對(duì)操作系統(tǒng)原理有了更進(jìn)一步的了解,學(xué)會(huì)應(yīng)用進(jìn)程同步及P、V原語(yǔ),相信會(huì)對(duì)以后的課程設(shè)計(jì)有很大的幫助作用。也體會(huì)了到同學(xué)之間的相互合作幫助可以克服一切困難,尤其是在理論聯(lián)系實(shí)際的過(guò)程中。我的同學(xué)在設(shè)計(jì)過(guò)程中為我發(fā)現(xiàn)許多錯(cuò)誤,也幫助我解決了很多問(wèn)題,在此我衷心的感謝他們。在以后的學(xué)習(xí)中我會(huì)更加注意各個(gè)方面的能力的協(xié)調(diào)發(fā)展,培養(yǎng)自己的動(dòng)手能力和拓寬自己的知識(shí)面,逐漸提高自己的專業(yè)技能。在課程設(shè)計(jì)時(shí)遇到了很多的問(wèn)題,在老師的幫助,和對(duì)各種資料的查閱中,將問(wèn)題一個(gè)一個(gè)的解決了,培養(yǎng)了我自主動(dòng)手,獨(dú)立研究的能力,為今后在學(xué)習(xí)工作中能更好的發(fā)展打下了堅(jiān)實(shí)的基礎(chǔ)??偟膩?lái)說(shuō)這次試驗(yàn)比較成功,加深我對(duì)進(jìn)程的理解,同時(shí)也提高了自己編程能力。編程是個(gè)長(zhǎng)久的過(guò)程,平時(shí)要多去動(dòng)手實(shí)踐,去提高自己的分析問(wèn)題、發(fā)現(xiàn)問(wèn)題、解決問(wèn)題的能力。參考文獻(xiàn)湯子瀛,哲鳳屏.《計(jì)算機(jī)操作系統(tǒng)》.西安電子科技大學(xué)學(xué)出版社.王清,李光明.《計(jì)算機(jī)操作系統(tǒng)》.冶金工業(yè)出版社.孫鐘秀等.操作系統(tǒng)教程.高等教育出版社曾明.Linux操作系統(tǒng)應(yīng)用教程.陜西科學(xué)技術(shù)出版社.張麗芬,劉利雄.《操作系統(tǒng)實(shí)驗(yàn)教程》.清華大學(xué)出版社.孟靜,操作系統(tǒng)教程--原理和實(shí)例分析.高等教育出版社周長(zhǎng)林,計(jì)算機(jī)操作系統(tǒng)教程.高等教育出版社張堯?qū)W,計(jì)算機(jī)操作系統(tǒng)教程,清華大學(xué)出版社任滿杰,操作系統(tǒng)原理實(shí)用教程,電子工業(yè)出版社致謝首先感謝我的老師和同學(xué)們?cè)谠O(shè)計(jì)過(guò)程中給我提出了許多寶貴的意見(jiàn)和建議,并細(xì)心的幫助我解決問(wèn)題,還在最后的調(diào)試程序的過(guò)程中幫我找出了一些潛在的錯(cuò)誤,沒(méi)有他們,我也許發(fā)現(xiàn)不了這些錯(cuò)誤,在此非常感謝他們。同時(shí)也感謝我的操作系統(tǒng)課的王旭陽(yáng)老師,感謝她在基礎(chǔ)課學(xué)習(xí)中為我打下良好的基礎(chǔ),這是我這次課程設(shè)計(jì)能夠順利完成的前提。附錄:源程序代碼#include<stdio.h>#include<stdlib.h>#include<time.h>intapple=0;intorange=0;intfather_lag=1;intmother_lag=1;intson_lag=1;intdaughter_lag=1;intplat_size=0;intmf=0;voidprint();voidfather()//父進(jìn)程{apple++;print();}voidmother() //母進(jìn)程{orange++;print();}voidson() //兒子進(jìn)程{orange--;print();}voiddaughter()//女兒進(jìn)程{apple--;print();}voidprint(){printf("現(xiàn)在盤(pán)子里有%d個(gè)蘋(píng)果,%d個(gè)桔子\n",apple,orange);if(father_lag==1)printf("father進(jìn)程處于等待狀態(tài)\n");if(mother_lag==1)printf("mother進(jìn)程處于等待狀態(tài)\n");if(son_lag==1)printf("son進(jìn)程處于等待狀態(tài)\n");if(daughter_lag==1)printf("daughter進(jìn)程處于等待狀態(tài)\n");if((father_lag==0)&&(mother_lag==0)&&(son_lag==0)&&(daughter==0))printf("\n");}voidmain(){intk;inti;srand((unsigned)time(NULL)); //隨機(jī)產(chǎn)生一個(gè)以當(dāng)前時(shí)間開(kāi)始的隨機(jī)種子for(k=0;k<10;k++){printf(" \n");printf("第%4次操作:\n",k+l);i=rand()%4; //隨機(jī)生成1-5plat_size=apple+orange;switch(i){case0:printf("father調(diào)用.\n");if(plat_size==l){father_lag=l;//father處于等待狀態(tài)print();if(mother_lag==0)mf=l; //father與mother互斥信號(hào)量決定先后順序}else{father();if(daughter_lag==l){daughter_lag=0; //等待取消printf("處于等待的daughter自動(dòng)被調(diào)用\n");daughter();}
}printf(" \n");break;casel:printf("mother調(diào)用.\n");if(plat_size==l){mother_lag=1;//mother處于等待狀態(tài)print();if(father_lag==0)mf=2;}else{mother();//print();if(son_lag==1) //等待取消{son_lag=0;printf("處于等待的son自動(dòng)被調(diào)用。\n");son();}}printf(" \n");break;case2:printf("son調(diào)用.\n");if(orange==0){son_lag=1;//son處于等待狀態(tài)print();}else{son();if(mother_lag==1&&father_lag==1){if(mf==1){father_lag=0;printf("處于等待的father自動(dòng)被調(diào)用\n");father();mf=2;}else{mo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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)地設(shè)備租賃合同(14篇)
- 廣東科學(xué)技術(shù)職業(yè)學(xué)院《微機(jī)原理與應(yīng)用A》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南工業(yè)職業(yè)技術(shù)學(xué)院《種子質(zhì)量檢驗(yàn)理論與技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 青海民族大學(xué)《用戶研究與體驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 揚(yáng)州中瑞酒店職業(yè)學(xué)院《競(jìng)技武術(shù)套路5》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年遼寧省建筑安全員B證考試題庫(kù)
- 蘇州大學(xué)應(yīng)用技術(shù)學(xué)院《色譜學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年江西省安全員C證(專職安全員)考試題庫(kù)
- 山西財(cái)貿(mào)職業(yè)技術(shù)學(xué)院《工程信息學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱幼兒師范高等??茖W(xué)校《英語(yǔ)課程標(biāo)準(zhǔn)解析與教材研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 空天地一體化公路智能巡查技術(shù)應(yīng)用與實(shí)踐
- CJJ129-2009 城市快速路設(shè)計(jì)規(guī)程
- punctuation-英語(yǔ)標(biāo)點(diǎn)的使用
- 股權(quán)糾紛案例分析申訴報(bào)告
- 2022云南省中考道法真題試卷和答案
- 如何在質(zhì)保到期后提供售后服務(wù)
- 勞務(wù)經(jīng)濟(jì)人培訓(xùn)課件
- 海爾集團(tuán)周云杰發(fā)表主題為《無(wú)界生態(tài) 無(wú)限可能》戰(zhàn)略報(bào)告
- 漢字真有趣教學(xué)設(shè)計(jì)
- 經(jīng)典成語(yǔ)故事葉公好龍
- 自導(dǎo)式教學(xué)心得體會(huì)范文【3篇】
評(píng)論
0/150
提交評(píng)論