版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
課程名稱:課程名稱:實習題目:姓名:系:專業(yè):年級:學號:指導教師:職稱:福建農林大學計算機與信息學院課程設計報告操作系統(tǒng)進程調度算法模擬***計算機計算機科學與技術2011級********2014年1月16日福建農林大學計算機與信息學院信息工程類
課程設計報告結果評定評語:成績:指導教師簽字:評定日期:TOC\o"1-5"\h\z進程調度算法模擬課程設計的目的 1進程調度算法模擬課程設計的要求 1進程調度算法模擬課程設計報告內容 13.1前言 13.2進程調度算法模擬設計的環(huán)境 13.3系統(tǒng)流程圖及各模塊 2總結 18參考文獻 19參考網(wǎng)站 19進程調度算法模擬進程調度算法模擬課程設計的目的和意義2013-2014學年,在學習了《操作系統(tǒng)》這門課后,對當中的進程調度算法產生了濃厚的興趣。各種調度算法,理論上比較好理解。為了加深印象,我決定把各種調度算法用C語言寫出來。于是便產生這份從頭到尾都讓我絞盡腦汁的課程設計。做這份課程設計,對從事系統(tǒng)開發(fā)的人員來說,是必要的,可以在一定程度上為自己以后的發(fā)展鋪路。雖然用處不是特別明顯,但對加深系統(tǒng)調用算法的理解無疑用處是巨大的。進程調度算法模擬課程設計的要求用C語言寫出至少兩種進程調度算法。畫出大概流程圖。對算法過程出現(xiàn)的bug進行調試。展示最后的算法結果3.1前言:目前比較常見的幾種進程調度算法有:先到先服務(FCFS)短進程優(yōu)先(非搶占和搶占)算法(SPF)高響應比優(yōu)先算法時間片輪轉算法我選出其中三種即先到先服務,短進程優(yōu)先(2種)和時間片輪轉算法進行C語言描述以加深對這三種算法的理解。3.2進程調度算法模擬設計的環(huán)境VC++6.0及CodeBlocks,32位計算機WIN7操作系統(tǒng)。
3.3流程圖判斷是否所正程都被調1斷是否肝歆雄已經虢挑選最先到W曲程序一次性執(zhí)行完畢對各進程按到達時E進行排序查我當前己經到達的彘短進程凋用該進蓮設置當前時巨為o當前時巨+1當前進程-]判J新逐程岡U至“達3.3流程圖判斷是否所正程都被調1斷是否肝歆雄已經虢挑選最先到W曲程序一次性執(zhí)行完畢對各進程按到達時E進行排序查我當前己經到達的彘短進程凋用該進蓮設置當前時巨為o當前時巨+1當前進程-]£在熱彳亍的進程貝』.麥尹搶占'進程是結束蘭前進程減去一個時閆片單位按響應比大小'進程是結束蘭前進程減去一個時閆片單位按響應比大小氣到達的進理按輪轉順序選定一個進程所有進程按到二近時閆排序所有進程按到達時向排序調度該進程至結束定義進程結構體:structPro(intnum;〃進程號inttime_in; 〃進程到達時間intwork_time;//進程服務時間intbtime;//用于搶占式進程優(yōu)先記錄該進程開始時間intl_w_time;//用于搶占式進程優(yōu)先記錄剩余服務時間intend_time; 〃記錄該進程結束時間,(需要時時監(jiān)測)intjudge; //用于需要時的標記}pro[10];//進程結構體1先到先服務算法描述:把所有進程按到達先后排序,每次取最先到的進程執(zhí)行后淘汰,再取下一個,直到所有進程調度完畢。主要代碼:voidFCFS()〃先到先服務{chars[]={”先到先服務"};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; //所有進程號查找標志置0,表示還未查找}while(t--){for(i=1;i<=pro_num;i++){if(pro[i].judge==0){min=i;//設其為目前最早到達的時間for(j=i+1;j<=pro_num;j++){if(pro[j].judge==0&&pro[j].time_in<=pro[min].time_in)//該進程號若還未被查找且小于預設min=j;}pro[min].judge=1;//該進程號被查找過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)-進程調度模擬-課程設計瑪心瑪心瑪"*請輸入進程總數(shù)二依次輸入各進程的進程號、到達時間和服務時間aia345?101005?070 ??+ZZi1.+叩女進程號到達時間月艮務日寸間開始時間結束時間周轉時間1013010102341014113E914231841010023123113E9999123213123XXXXXXXXXXXXXXXXXXX先;至11先;服-務-XMXMXMXMXMXMXMXMXMX2段進程優(yōu)先非搶占算法描述:每次選出最短的進程進行調度,調度完畢則淘汰,直到所有進程都調度完畢;voidSJF()〃短進程優(yōu)先(非搶占){chars[]="非搶占短進程優(yōu)先”;printmat(s);PT;structPro*p,*q,*head;intt_num,t_work_time,t_time_in;head=&pro[1];/************************按所有進程到達時間排序*************/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++;}/*************************************************************//**********找出第一個執(zhí)行的進程,即最先到達的最短進程*********/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)-進程調度模擬-課程設計*********g輸入迸程總數(shù)二次輸入各進程的進程號'到達時間和服務時間01055010進程號4到達時間0結束時間周轉時間1110 50*非搶占短進程優(yōu)先進程號4到達時間0結束時間周轉時間1110 50*非搶占短進程優(yōu)先3短進程優(yōu)先(搶占)算法描述:按時間疊加,當新進程到達時,判斷如果比當前執(zhí)行的進程短,則發(fā)生搶占,執(zhí)行完的淘汰,直到所有進程都調度完畢。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() 〃搶占式短進程優(yōu)先{chars[]={"搶占式短進程優(yōu)先"};printmat(s);PT;inti;structPro*p,*q;//先對到達時間進行排序〃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)_進程調度模擬_課程設計*******請輸入進程總數(shù)二依次輸入各進程的進程號r到達時間和服務時間1233141073依次輸入各進程的進程號r到達時間和服務時間12331410731010MIMIMIMIMIMIMIXKXKXKXXXXXX進程號到達時間12110719236719結束時間周轉時間64191B29411531910M:M:M:M:M:M:M:XXXXXXXMKMKM才遷占 j蕓彳呈?[尤 3(N3(N3(N3(NMNMNMNMNMN4時間片輪轉(以單位1為例)取當前已經到達的進程,執(zhí)行一個時間片,跳轉至下一個已經到達的進程,再執(zhí)行一個時間片,直到所有進程都調度完畢。voidTROT(){char*s="時間片輪轉算法”;printmat(s);PT;structPro*p,*q,*head;intt_num,t_time_in,t_work_time;head=&pro[1];p=head;/************************給所有進程按到達時間排序*************/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)//設從開頭再開始找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)-進程調度模棍-課程設計**********質輸入進程總數(shù):%次輸入各進程的進程號、到達時間和服務時間123TOC\o"1-5"\h\z34455&&7進程號到達時間服務曲可開菇御間結束時間周轉時間123213li2343IS15345422184565252056?62?215高響應比優(yōu)先先對所有進程排序,已經到達的進程,每次選取響應比最高的進程進行調度,直到所有進程調度完畢。voidFPF(){char*s="高響應比優(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;/************************給所有進程按到達時間排序*************/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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 語文園地五作業(yè)本
- 課件制作培訓教學課件
- 搶救車管理制度課件
- 出口商合同模板
- 地暖水電裝修合同模板
- 購店鋪協(xié)議合同模板
- 苗木大棚租賃合同模板
- 消防驗收合同模板
- 閣樓裝修工程合同模板
- 公司租民房合同模板
- 2024年4月自考財務管理學試卷真題解析
- 2024年農業(yè)農村部大數(shù)據(jù)發(fā)展中心第三批面向社會公開招聘7人(高頻重點復習提升訓練)共500題附帶答案詳解
- 以數(shù)字化轉型推動職業(yè)院校教師隊伍建設
- 丹參工廠化穴盤育苗技術規(guī)程
- 城市梁橋拆除工程安全技術規(guī)范
- 畜禽屠宰廢水處理操作規(guī)程
- 第一單元探索2 互聯(lián)網(wǎng)的影響力 教學設計 2023--2024學年蘇科版(2023)初中信息技術七年級上冊
- 二年級100以內加減乘除混合口算題(直接打印)
- 中國文化概論第4章中國傳統(tǒng)文化的發(fā)展歷程
- 七年級數(shù)學計算比賽試題(含答案)
- 《統(tǒng)編教材背景下小學語文整本書閱讀策略的研究》中期報告
評論
0/150
提交評論