版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
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ù)年 級(jí):2011級(jí)學(xué) 號(hào):*指導(dǎo)教師:*職 稱:*2014年1月16日福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院信息工程類課程設(shè)計(jì)報(bào)告結(jié)果評(píng)定評(píng)語(yǔ):成績(jī):指導(dǎo)教師簽字:評(píng)定日期:目 錄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)這門課后,對(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)用算法的理解無疑用處是巨大的。2.進(jìn)程調(diào)度算法模擬課程設(shè)計(jì)的要求1. 用C語(yǔ)言寫出至少兩種進(jìn)程調(diào)度算法。2. 畫出大概流程圖。3. 對(duì)算法過程出現(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語(yǔ)言描述以加深對(duì)這三種算法的理解。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)程號(hào)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)測(cè))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)程號(hào)查找標(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)程號(hào)若還未被查找且小于預(yù)設(shè) min = j; promin.judge = 1;/該進(jìn)程號(hào)被查找過 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;/ 先對(duì)到達(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)先先對(duì)所有進(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等.壓縮文件請(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東省濱州市2025-2026學(xué)年高三上學(xué)期期末模擬物理試題(含答案)
- 湖南省衡陽(yáng)市祁東縣2026屆九年級(jí)上學(xué)期1月期末考試歷史試卷
- 中學(xué)教學(xué)質(zhì)量保證措施制度
- 養(yǎng)老院突發(fā)事件應(yīng)急預(yù)案制度
- 養(yǎng)老院安全防范與應(yīng)急處理制度
- 企業(yè)內(nèi)部控制與合規(guī)制度
- 紅河州事業(yè)單位招聘考試綜合知識(shí)選擇題
- 化工工藝技術(shù)員風(fēng)險(xiǎn)識(shí)別測(cè)試考核試卷含答案
- 加氣混凝土切割工安全技能強(qiáng)化考核試卷含答案
- 高低壓電器及成套設(shè)備裝配工崗前健康知識(shí)考核試卷含答案
- 2噸每小時(shí)雙級(jí)反滲透設(shè)備工藝流程介紹資料
- 魯迅《為了忘卻的紀(jì)念》散文全文
- 四位數(shù)乘四位數(shù)乘法題500道
- 二次根式的化簡(jiǎn)與最簡(jiǎn)二次根式
- GB/T 13871.1-2022密封元件為彈性體材料的旋轉(zhuǎn)軸唇形密封圈第1部分:尺寸和公差
- 計(jì)量經(jīng)濟(jì)學(xué)分章習(xí)題與答案
- 醫(yī)院消毒滅菌效果環(huán)境衛(wèi)生學(xué)監(jiān)測(cè)報(bào)告單(檢驗(yàn))
- xxx項(xiàng)目勘察設(shè)計(jì)任務(wù)書
- 熱浸鋅產(chǎn)品表面修復(fù)作業(yè)指導(dǎo)書正式版
- 中國(guó)礦業(yè)權(quán)評(píng)估準(zhǔn)則
- 臨床生物化學(xué)檢驗(yàn)技術(shù):第17章 消化系統(tǒng)疾病的生物化學(xué)檢驗(yàn)
評(píng)論
0/150
提交評(píng)論