操作系統(tǒng)課程設(shè)計(jì)-進(jìn)程調(diào)度模擬算法_第1頁(yè)
操作系統(tǒng)課程設(shè)計(jì)-進(jìn)程調(diào)度模擬算法_第2頁(yè)
操作系統(tǒng)課程設(shè)計(jì)-進(jìn)程調(diào)度模擬算法_第3頁(yè)
操作系統(tǒng)課程設(shè)計(jì)-進(jìn)程調(diào)度模擬算法_第4頁(yè)
操作系統(tǒng)課程設(shè)計(jì)-進(jìn)程調(diào)度模擬算法_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

課程名稱:課程名稱:實(shí)習(xí)題目:姓名:系:專業(yè):年級(jí):學(xué)號(hào):指導(dǎo)教師:職稱:福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院課程設(shè)計(jì)報(bào)告操作系統(tǒng)進(jìn)程調(diào)度算法模擬***計(jì)算機(jī)計(jì)算機(jī)科學(xué)與技術(shù)2011級(jí)********2014年1月16日福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院信息工程類

課程設(shè)計(jì)報(bào)告結(jié)果評(píng)定評(píng)語(yǔ):成績(jī):指導(dǎo)教師簽字:評(píng)定日期:TOC\o"1-5"\h\z進(jìn)程調(diào)度算法模擬課程設(shè)計(jì)的目的 1進(jìn)程調(diào)度算法模擬課程設(shè)計(jì)的要求 1進(jìn)程調(diào)度算法模擬課程設(shè)計(jì)報(bào)告內(nèi)容 13.1前言 13.2進(jìn)程調(diào)度算法模擬設(shè)計(jì)的環(huán)境 13.3系統(tǒng)流程圖及各模塊 2總結(jié) 18參考文獻(xiàn) 19參考網(wǎng)站 19進(jìn)程調(diào)度算法模擬進(jìn)程調(diào)度算法模擬課程設(shè)計(jì)的目的和意義2013-2014學(xué)年,在學(xué)習(xí)了《操作系統(tǒng)》這門課后,對(duì)當(dāng)中的進(jìn)程調(diào)度算法產(chǎn)生了濃厚的興趣。各種調(diào)度算法,理論上比較好理解。為了加深印象,我決定把各種調(diào)度算法用C語(yǔ)言寫出來。于是便產(chǎn)生這份從頭到尾都讓我絞盡腦汁的課程設(shè)計(jì)。做這份課程設(shè)計(jì),對(duì)從事系統(tǒng)開發(fā)的人員來說,是必要的,可以在一定程度上為自己以后的發(fā)展鋪路。雖然用處不是特別明顯,但對(duì)加深系統(tǒng)調(diào)用算法的理解無疑用處是巨大的。進(jìn)程調(diào)度算法模擬課程設(shè)計(jì)的要求用C語(yǔ)言寫出至少兩種進(jìn)程調(diào)度算法。畫出大概流程圖。對(duì)算法過程出現(xiàn)的bug進(jìn)行調(diào)試。展示最后的算法結(jié)果3.1前言:目前比較常見的幾種進(jìn)程調(diào)度算法有:先到先服務(wù)(FCFS)短進(jìn)程優(yōu)先(非搶占和搶占)算法(SPF)高響應(yīng)比優(yōu)先算法時(shí)間片輪轉(zhuǎn)算法我選出其中三種即先到先服務(wù),短進(jìn)程優(yōu)先(2種)和時(shí)間片輪轉(zhuǎn)算法進(jìn)行C語(yǔ)言描述以加深對(duì)這三種算法的理解。3.2進(jìn)程調(diào)度算法模擬設(shè)計(jì)的環(huán)境VC++6.0及CodeBlocks,32位計(jì)算機(jī)WIN7操作系統(tǒng)。

3.3流程圖判斷是否所正程都被調(diào)1斷是否肝歆雄已經(jīng)虢挑選最先到W曲程序一次性執(zhí)行完畢對(duì)各進(jìn)程按到達(dá)時(shí)E進(jìn)行排序查我當(dāng)前己經(jīng)到達(dá)的彘短進(jìn)程凋用該進(jìn)蓮設(shè)置當(dāng)前時(shí)巨為o當(dāng)前時(shí)巨+1當(dāng)前進(jìn)程-]判J新逐程岡U至“達(dá)3.3流程圖判斷是否所正程都被調(diào)1斷是否肝歆雄已經(jīng)虢挑選最先到W曲程序一次性執(zhí)行完畢對(duì)各進(jìn)程按到達(dá)時(shí)E進(jìn)行排序查我當(dāng)前己經(jīng)到達(dá)的彘短進(jìn)程凋用該進(jìn)蓮設(shè)置當(dāng)前時(shí)巨為o當(dāng)前時(shí)巨+1當(dāng)前進(jìn)程-]£在熱彳亍的進(jìn)程貝』.麥尹搶占'進(jìn)程是結(jié)束蘭前進(jìn)程減去一個(gè)時(shí)閆片單位按響應(yīng)比大小'進(jìn)程是結(jié)束蘭前進(jìn)程減去一個(gè)時(shí)閆片單位按響應(yīng)比大小氣到達(dá)的進(jìn)理按輪轉(zhuǎn)順序選定一個(gè)進(jìn)程所有進(jìn)程按到二近時(shí)閆排序所有進(jìn)程按到達(dá)時(shí)向排序調(diào)度該進(jìn)程至結(jié)束定義進(jìn)程結(jié)構(gòu)體:structPro(intnum;〃進(jìn)程號(hào)inttime_in; 〃進(jìn)程到達(dá)時(shí)間intwork_time;//進(jìn)程服務(wù)時(shí)間intbtime;//用于搶占式進(jìn)程優(yōu)先記錄該進(jìn)程開始時(shí)間intl_w_time;//用于搶占式進(jìn)程優(yōu)先記錄剩余服務(wù)時(shí)間intend_time; 〃記錄該進(jìn)程結(jié)束時(shí)間,(需要時(shí)時(shí)監(jiān)測(cè))intjudge; //用于需要時(shí)的標(biāo)記}pro[10];//進(jìn)程結(jié)構(gòu)體1先到先服務(wù)算法描述:把所有進(jìn)程按到達(dá)先后排序,每次取最先到的進(jìn)程執(zhí)行后淘汰,再取下一個(gè),直到所有進(jìn)程調(diào)度完畢。主要代碼:voidFCFS()〃先到先服務(wù){(diào)chars[]={”先到先服務(wù)"};printmat(s);PT;inti,j;intmin;intt=pro_num;intbegin_time=0x7fff;for(i=1;i<=pro_num;i++){if(pro[i].time_in<begin_time)begin_time=pro[i].time_in;pro[i].judge=0; //所有進(jìn)程號(hào)查找標(biāo)志置0,表示還未查找}while(t--){for(i=1;i<=pro_num;i++){if(pro[i].judge==0){min=i;//設(shè)其為目前最早到達(dá)的時(shí)間for(j=i+1;j<=pro_num;j++){if(pro[j].judge==0&&pro[j].time_in<=pro[min].time_in)//該進(jìn)程號(hào)若還未被查找且小于預(yù)設(shè)min=j;}pro[min].judge=1;//該進(jìn)程號(hào)被查找過printf(Format2,pro[min].num,pro[min].time_in,pro[min].work_time,begin_time,begin_time+pro[min].work_time,begin_time+pro[min].work_time-pro[min].time_in);begin_time+=pro[min].work_time;puts(?;}}}printmat(s);puts(?;}程序截圖:心心心心心心折中峰元-操作系統(tǒng)-進(jìn)程調(diào)度模擬-課程設(shè)計(jì)瑪心瑪心瑪"*請(qǐng)輸入進(jìn)程總數(shù)二依次輸入各進(jìn)程的進(jìn)程號(hào)、到達(dá)時(shí)間和服務(wù)時(shí)間aia345?101005?070 ??+ZZi1.+叩女進(jìn)程號(hào)到達(dá)時(shí)間月艮務(wù)日寸間開始時(shí)間結(jié)束時(shí)間周轉(zhuǎn)時(shí)間1013010102341014113E914231841010023123113E9999123213123XXXXXXXXXXXXXXXXXXX先;至11先;服-務(wù)-XMXMXMXMXMXMXMXMXMX2段進(jìn)程優(yōu)先非搶占算法描述:每次選出最短的進(jìn)程進(jìn)行調(diào)度,調(diào)度完畢則淘汰,直到所有進(jìn)程都調(diào)度完畢;voidSJF()〃短進(jìn)程優(yōu)先(非搶占){chars[]="非搶占短進(jìn)程優(yōu)先”;printmat(s);PT;structPro*p,*q,*head;intt_num,t_work_time,t_time_in;head=&pro[1];/************************按所有進(jìn)程到達(dá)時(shí)間排序*************/p=head;while(p-head<pro_num){for(q=p+1;q-head<pro_num;q++){if(q->time_in<p->time_in||(q->work_time<p->work_time&&q->time_in==p->time_in)){t_num=p->num,t_time_in=p->time_in,t_work_time=p->work_time;p->num=q->num,p->time_in=q->time_in,p->work_time=q->work_time;q->num=t_num,q->time_in=t_time_in,q->work_time=t_work_time;}}p++;}/*************************************************************//**********找出第一個(gè)執(zhí)行的進(jìn)程,即最先到達(dá)的最短進(jìn)程*********/inttime=0;p=head;for(q=head;q<head+pro_num;q++){q->judge=0;if(q->time_in<p->time_in)p=q;if(q->time_in==p->time_in&&q->work_time<p->work_time)p=q;}intcnt=pro_num;p=head;while(cnt--){time=time<p->time_in?p->time_in:time;p->judge=1;p->begin_time=time;time+=p->work_time;p->end_time=time;for(q=head;q<head+pro_num;q++){if(p->judge==1&&q->judge==0)p=q;elseif(p->judge==0&&(q->work_time<p->work_time)){p=q;}}}for(p=head;p<head+pro_num;p++){printf(Format2,p->num,p->time_in,p->work_time,p->begin_time,p->end_time,p->end_time-

p->time_in);puts("");}printmat(s);puts("");}***************^中峰元-操作系統(tǒng)-進(jìn)程調(diào)度模擬-課程設(shè)計(jì)*********g輸入迸程總數(shù)二次輸入各進(jìn)程的進(jìn)程號(hào)'到達(dá)時(shí)間和服務(wù)時(shí)間01055010進(jìn)程號(hào)4到達(dá)時(shí)間0結(jié)束時(shí)間周轉(zhuǎn)時(shí)間1110 50*非搶占短進(jìn)程優(yōu)先進(jìn)程號(hào)4到達(dá)時(shí)間0結(jié)束時(shí)間周轉(zhuǎn)時(shí)間1110 50*非搶占短進(jìn)程優(yōu)先3短進(jìn)程優(yōu)先(搶占)算法描述:按時(shí)間疊加,當(dāng)新進(jìn)程到達(dá)時(shí),判斷如果比當(dāng)前執(zhí)行的進(jìn)程短,則發(fā)生搶占,執(zhí)行完的淘汰,直到所有進(jìn)程都調(diào)度完畢。intfind(intpp,inttime){inti;for(i=1;i<=pro_num;i++){if(pro[pp].l_w_time==011(pro[i].l_w_time!=0&&pro[i].l_w_time<pro[pp].l_w_time&&time>=pro[i].time_in))pp=i;}returnpp;}voidtest(){inti;for(i=1;i<=pro_num;i++){printf(Format2,pro[i].num,pro[i].time_in,pro[i].work_time,pro[i].btime,pro[i].end_time,pro[i].end_time-pro[i].time_in);puts(?;}}voidSJF2() 〃搶占式短進(jìn)程優(yōu)先{chars[]={"搶占式短進(jìn)程優(yōu)先"};printmat(s);PT;inti;structPro*p,*q;//先對(duì)到達(dá)時(shí)間進(jìn)行排序〃structPro*head=&pro[1];intt_num,t_time_in,t_work_time;inttime_cnt=0,time;p=head=&pro[1];while(p-head<pro_num){for(q=p+1;q-head<pro_num;q++){if(q->time_in<p->time_in){t_num=p->num,t_time_in=p->time_in,t_work_time=p->work_time;p->num=q->num,p->time_in=q->time_in,p->work_time=q->work_time;q->num=t_num,q->time_in=t_time_in,q->work_time=t_work_time;}}p++;}for(i=1;i<=pro_num;i++){pro[i].l_w_time=pro[i].work_time;time_cnt+=pro[i].work_time;}intpp=1;time=pro[pp].time_in;while(time_cnt--){pro[pp].l_w_time--;time++;if(pro[pp].l_w_time==0){pro[pp].end_time=time;}else;if(pro[pp].btime==0&&pro[pp].time_in!=0)pro[pp].btime=time-1;else;

pp=find(pp,time);}test();printmat(s);puts("");}M——f中峰元—操作系統(tǒng)_進(jìn)程調(diào)度模擬_課程設(shè)計(jì)*******請(qǐng)輸入進(jìn)程總數(shù)二依次輸入各進(jìn)程的進(jìn)程號(hào)r到達(dá)時(shí)間和服務(wù)時(shí)間1233141073依次輸入各進(jìn)程的進(jìn)程號(hào)r到達(dá)時(shí)間和服務(wù)時(shí)間12331410731010MIMIMIMIMIMIMIXKXKXKXXXXXX進(jìn)程號(hào)到達(dá)時(shí)間12110719236719結(jié)束時(shí)間周轉(zhuǎn)時(shí)間64191B29411531910M:M:M:M:M:M:M:XXXXXXXMKMKM才遷占 j蕓彳呈?[尤 3(N3(N3(N3(NMNMNMNMNMN4時(shí)間片輪轉(zhuǎn)(以單位1為例)取當(dāng)前已經(jīng)到達(dá)的進(jìn)程,執(zhí)行一個(gè)時(shí)間片,跳轉(zhuǎn)至下一個(gè)已經(jīng)到達(dá)的進(jìn)程,再執(zhí)行一個(gè)時(shí)間片,直到所有進(jìn)程都調(diào)度完畢。voidTROT(){char*s="時(shí)間片輪轉(zhuǎn)算法”;printmat(s);PT;structPro*p,*q,*head;intt_num,t_time_in,t_work_time;head=&pro[1];p=head;/************************給所有進(jìn)程按到達(dá)時(shí)間排序*************/while(p-head<pro_num){for(q=p+1;q-head<pro_num;q++){if(q->time_in<p->time_in)t_num=p->num,t_time_in=p->time_in,t_work_time=p->work_time;p->num=q->num,p->time_in=q->time_in,p->work_time=q->work_time;q->num=t_num,q->time_in=t_time_in,q->work_time=t_work_time;}}p++;}/*************************************************************/inttime=pro[1].time_in;for(p=head;p<head+pro_num;p++){p->judge=0;p->left_work=p->work_time;}intflag=1;for(p=head;flag;p++){if(p->time_in<=time&&p->left_work>0){p->left_work--;if(p->judge==0){p->judge=1;p->begin_time=time;}if(p->left_work==0)p->end_time=time+1;}elsecontinue;time++;for(q=head;q<head+pro_num;q++){if(q->left_work!=0)break;}if(q==head+pro_num)flag=0;if(p==head+pro_num-1)//設(shè)從開頭再開始找p=head-1;}for(q=head;q<head+pro_num;q++){printf(Format2,q->num,q->time_in,q->work_time,q->begin_time,q->end_time,q->end_time-q->time_in);puts("");}printmat(s);}

“msf中峰元-操作系統(tǒng)-進(jìn)程調(diào)度模棍-課程設(shè)計(jì)**********質(zhì)輸入進(jìn)程總數(shù):%次輸入各進(jìn)程的進(jìn)程號(hào)、到達(dá)時(shí)間和服務(wù)時(shí)間123TOC\o"1-5"\h\z34455&&7進(jìn)程號(hào)到達(dá)時(shí)間服務(wù)曲可開菇御間結(jié)束時(shí)間周轉(zhuǎn)時(shí)間123213li2343IS15345422184565252056?62?215高響應(yīng)比優(yōu)先先對(duì)所有進(jìn)程排序,已經(jīng)到達(dá)的進(jìn)程,每次選取響應(yīng)比最高的進(jìn)程進(jìn)行調(diào)度,直到所有進(jìn)程調(diào)度完畢。voidFPF(){char*s="高響應(yīng)比優(yōu)先算法”;char*ss=char*ss=”****************”.;printmat(s);PT;structPro*p,*q,*head;intt_num,t_time_in,t_work_time;head=&pro[1];p=head;/************************給所有進(jìn)程按到達(dá)時(shí)間排序*************/while(p-head<pro_num){for(q=p+1;q-head<pro_num;q++){if(q->time_in<p->time_in){t_num=p->num,t_time_in=p->time_in,t_work_time=p->work_time;p->num=q->num,p->time_in=q->time_in,p->work_time=q->work_time;q->num=t_num,q->time_in=t_time_in,q->work_time=t_work_time;p++;}/*************************************************************/inttime=pro[1].time_in;intcnt=pro_num;for(p=head;p<head+pro_num;p++)(p->judge=0;p->left_work=p->work_time;}p=head;while(cnt--)〃查找、打印cnt次{p=head;while(1){if(p->judge==

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論