




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院課程設(shè)計(jì)報(bào)告課程名稱:操作系統(tǒng)實(shí)習(xí)題目:進(jìn)程調(diào)度算法模擬姓 名:*系:計(jì)算機(jī)專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)年 級:2011級學(xué) 號:*指導(dǎo)教師:*職 稱:*2014年1月16日福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院信息工程類課程設(shè)計(jì)報(bào)告結(jié)果評定評語:成績:指導(dǎo)教師簽字:評定日期:目 錄1.進(jìn)程調(diào)度算法模擬課程設(shè)計(jì)的目的12.進(jìn)程調(diào)度算法模擬課程設(shè)計(jì)的要求13.進(jìn)程調(diào)度算法模擬課程設(shè)計(jì)報(bào)告內(nèi)容131前言 132進(jìn)程調(diào)度算法模擬設(shè)計(jì)的環(huán)境 1 33系統(tǒng)流程圖及各模塊 24總結(jié) 18 參考文獻(xiàn)19 參考網(wǎng)站19進(jìn)程調(diào)度算法模擬1.進(jìn)程調(diào)度算法模擬課程設(shè)計(jì)的目的和意義2013-2014學(xué)年
2、,在學(xué)習(xí)了操作系統(tǒng)這門課后,對當(dāng)中的進(jìn)程調(diào)度算法產(chǎn)生了濃厚的興趣。各種調(diào)度算法,理論上比較好理解。為了加深印象,我決定把各種調(diào)度算法用C語言寫出來。于是便產(chǎn)生這份從頭到尾都讓我絞盡腦汁的課程設(shè)計(jì)。做這份課程設(shè)計(jì),對從事系統(tǒng)開發(fā)的人員來說,是必要的,可以在一定程度上為自己以后的發(fā)展鋪路。雖然用處不是特別明顯,但對加深系統(tǒng)調(diào)用算法的理解無疑用處是巨大的。2.進(jìn)程調(diào)度算法模擬課程設(shè)計(jì)的要求1. 用C語言寫出至少兩種進(jìn)程調(diào)度算法。2. 畫出大概流程圖。3. 對算法過程出現(xiàn)的bug進(jìn)行調(diào)試。4. 展示最后的算法結(jié)果3.1前言:目前比較常見的幾種進(jìn)程調(diào)度算法有:1. 先到先服務(wù)(FCFS)2. 短進(jìn)程優(yōu)先
3、(非搶占和搶占)算法(SPF)3. 高響應(yīng)比優(yōu)先算法4. 時(shí)間片輪轉(zhuǎn)算法我選出其中三種即先到先服務(wù),短進(jìn)程優(yōu)先(2種)和時(shí)間片輪轉(zhuǎn)算法進(jìn)行C語言描述以加深對這三種算法的理解。3.2進(jìn)程調(diào)度算法模擬設(shè)計(jì)的環(huán)境VC+6.0及CodeBlocks,32位計(jì)算機(jī)WIN7操作系統(tǒng)。3.3流程圖定義進(jìn)程結(jié)構(gòu)體:struct Proint num;/進(jìn)程號int time_in;/進(jìn)程到達(dá)時(shí)間int work_time;/進(jìn)程服務(wù)時(shí)間 int btime;/用于搶占式進(jìn)程優(yōu)先記錄該進(jìn)程開始時(shí)間 int l_w_time;/用于搶占式進(jìn)程優(yōu)先記錄剩余服務(wù)時(shí)間 int end_time; /記錄該進(jìn)程結(jié)束時(shí)間,
4、(需要時(shí)時(shí)監(jiān)測)int judge;/用于需要時(shí)的標(biāo)記pro10;/進(jìn)程結(jié)構(gòu)體1先到先服務(wù)算法描述:把所有進(jìn)程按到達(dá)先后排序,每次取最先到的進(jìn)程執(zhí)行后淘汰,再取下一個(gè),直到所有進(jìn)程調(diào)度完畢。主要代碼:void FCFS() /先到先服務(wù)char s = "先到先服務(wù)"printmat(s); PT;int i, j;int min;int t = pro_num;int begin_time = 0x7fff;for(i = 1; i <= pro_num; i+) if(proi.time_in < begin_time) begin_time = proi.
5、time_in;proi.judge = 0;/所有進(jìn)程號查找標(biāo)志置0,表示還未查找 while(t-) for(i = 1; i <= pro_num; i+) if(proi.judge=0) min = i;/設(shè)其為目前最早到達(dá)的時(shí)間 for(j = i+1; j <= pro_num; j+) if(proj.judge = 0 && proj.time_in <= promin.time_in)/該進(jìn)程號若還未被查找且小于預(yù)設(shè) min = j; promin.judge = 1;/該進(jìn)程號被查找過 printf(Format2,promin.num,
6、promin.time_in,promin.work_time, begin_time,begin_time+promin.work_time,begin_time+promin.work_time-promin.time_in); begin_time += promin.work_time; puts(""); printmat(s);puts("");程序截圖:2段進(jìn)程優(yōu)先非搶占算法描述:每次選出最短的進(jìn)程進(jìn)行調(diào)度,調(diào)度完畢則淘汰,直到所有進(jìn)程都調(diào)度完畢;void SJF() /短進(jìn)程優(yōu)先(非搶占) char s = "非搶占短進(jìn)程優(yōu)先&
7、quot; printmat(s); PT;struct Pro *p,*q,*head;int t_num,t_work_time,t_time_in;head = &pro1;/*按所有進(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_i
8、n) 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)程*/int time = 0;p = head;for(q
9、= 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;int cnt = pro_num;p = head;while(cnt-)time = time < p->time_in ? p->time_in:time;p->judge = 1;p->begin_tim
10、e = 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;else if(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_i
11、n,p->work_time,p->begin_time,p->end_time,p->end_time-p->time_in);puts("");printmat(s);puts("");3短進(jìn)程優(yōu)先(搶占)算法描述:按時(shí)間疊加,當(dāng)新進(jìn)程到達(dá)時(shí),判斷如果比當(dāng)前執(zhí)行的進(jìn)程短,則發(fā)生搶占,執(zhí)行完的淘汰,直到所有進(jìn)程都調(diào)度完畢。int find(int pp,int time)int i;for(i = 1; i <= pro_num; i+)if(propp.l_w_time = 0 |( proi.l_w_time !
12、= 0 && proi.l_w_time < propp.l_w_time && time >= proi.time_in)pp = i;return pp;void test()int i;for(i = 1; i <= pro_num; i+)printf(Format2,proi.num,proi.time_in,proi.work_time,proi.btime,proi.end_time,proi.end_time-proi.time_in);puts("");void SJF2()/搶占式短進(jìn)程優(yōu)先char s
13、= "搶占式短進(jìn)程優(yōu)先"printmat(s); PT;int i; struct Pro *p,*q;/ 先對到達(dá)時(shí)間進(jìn)行排序/struct Pro *head = &pro1; int t_num, t_time_in,t_work_time;int time_cnt = 0,time; p = head = &pro1; while(p - head < pro_num) for(q = p+1; q-head < pro_num; q+) if(q->time_in < p->time_in) t_num = p->
14、;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+)proi.l_w_time = proi.work_time;time_cnt
15、+= proi.work_time;int pp = 1;time = propp.time_in;while(time_cnt-)propp.l_w_time-;time+;if(propp.l_w_time=0)propp.end_time = time;else;if(propp.btime = 0 && propp.time_in != 0)propp.btime = time-1;else;pp = find(pp,time);test();printmat(s);puts("");4時(shí)間片輪轉(zhuǎn)(以單位1為例)取當(dāng)前已經(jīng)到達(dá)的進(jìn)程,執(zhí)行一個(gè)時(shí)間片,
16、跳轉(zhuǎn)至下一個(gè)已經(jīng)到達(dá)的進(jìn)程,再執(zhí)行一個(gè)時(shí)間片,直到所有進(jìn)程都調(diào)度完畢。void TROT()char *s = "時(shí)間片輪轉(zhuǎn)算法"printmat(s);PT;struct Pro *p,*q,*head;int t_num,t_time_in,t_work_time;head = &pro1;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
17、->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+; /*/int time = pro1.time_in;for(p = head; p < head+pro_num; p+)p-
18、>judge = 0;p->left_work = p->work_time;int flag = 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;else continue;time+;for(q = he
19、ad; 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("
20、;");printmat(s);5高響應(yīng)比優(yōu)先先對所有進(jìn)程排序,已經(jīng)到達(dá)的進(jìn)程,每次選取響應(yīng)比最高的進(jìn)程進(jìn)行調(diào)度,直到所有進(jìn)程調(diào)度完畢。void FPF()char *s = "高響應(yīng)比優(yōu)先算法"char *ss = "*"printmat(s);PT;struct Pro *p,*q,*head;int t_num,t_time_in,t_work_time;head = &pro1;p = head;/*給所有進(jìn)程按到達(dá)時(shí)間排序*/while(p - head < pro_num) for(q = p+1; q-head &l
21、t; 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+; /*/int time = pro1.time_in;int cnt = pro_num;for(p = head; p < head+pro_num; p+)p->judge = 0;p->left_work = p->work_time;p = he
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司沉浸式展廳策劃方案
- 公司組織轟趴活動(dòng)方案
- 公司文化圈策劃方案
- 公司月刊創(chuàng)刊策劃方案
- 公司歡迎儀式活動(dòng)方案
- 公司老干部活動(dòng)方案
- 公司激情文化活動(dòng)方案
- 公司來新人了活動(dòng)方案
- 公司匯演暖場活動(dòng)方案
- 公司旅游年會策劃方案
- AI賦能與素養(yǎng)導(dǎo)向:初中英語智慧課堂的融合實(shí)踐研究
- 《2025年危險(xiǎn)化學(xué)品企業(yè)安全生產(chǎn)執(zhí)法檢查重點(diǎn)事項(xiàng)指導(dǎo)目錄》解讀與培訓(xùn)
- 2025全國交通運(yùn)輸行業(yè)職業(yè)技能競賽學(xué)生組技術(shù)方案
- 常用儀表使用方法鐵道信號綜合實(shí)訓(xùn)課件
- 2025云南黃金礦業(yè)集團(tuán)股份限公司招聘114人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 預(yù)防職務(wù)犯罪交流課件
- 2025年初一下冊語文-課內(nèi)現(xiàn)代文復(fù)習(xí)18課.《井岡翠竹》(教師版)
- 人工智能應(yīng)用產(chǎn)業(yè)園及配套基礎(chǔ)設(shè)施項(xiàng)目可行性研究報(bào)告(范文模板)
- 未成年人權(quán)益保護(hù)法律解析
- 藥品售后服務(wù)承諾書示例
- 2025年南模中學(xué)自招試題及答案
評論
0/150
提交評論