版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
HUNANUNIVERSITY進(jìn)程調(diào)度算法題目進(jìn)程調(diào)度算法學(xué)生姓名學(xué)生學(xué)號(hào)專業(yè)班級(jí)完成日期 2013.12.06一、實(shí)驗(yàn)題目實(shí)現(xiàn)短進(jìn)程優(yōu)先調(diào)度算法(SPF)實(shí)現(xiàn)時(shí)間片輪轉(zhuǎn)調(diào)度算法(RR)二、實(shí)驗(yàn)?zāi)康耐ㄟ^對(duì)進(jìn)程調(diào)度算法的設(shè)計(jì),深入理解進(jìn)程調(diào)度的原理。進(jìn)程是程序在一個(gè)數(shù)據(jù)集合上運(yùn)行的過程,它是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。進(jìn)程調(diào)度分配處理機(jī),是控制協(xié)調(diào)進(jìn)程對(duì)CPU的競(jìng)爭(zhēng),即按一定的調(diào)度算法從就緒隊(duì)列中選中一個(gè)進(jìn)程,把CPU的使用權(quán)交給被選中的進(jìn)程。三、實(shí)驗(yàn)內(nèi)容1.先來先服務(wù)(FCFS)調(diào)度算法原理:每次調(diào)度是從就緒隊(duì)列中,選擇一個(gè)最先進(jìn)入就緒隊(duì)列的進(jìn)程,把處理器分配給該進(jìn)程,使之得到執(zhí)行。該進(jìn)程一旦占有了處理器,它就一直運(yùn)行下去,直到該進(jìn)程完成或因發(fā)生事件而阻塞,才退出處理器。將用戶作業(yè)和就緒進(jìn)程按提交順序或變?yōu)榫途w狀態(tài)的先后排成隊(duì)列,并按照先來先服務(wù)的方式進(jìn)行調(diào)度處理,是一種最普遍和最簡(jiǎn)單的方法。它優(yōu)先考慮在系統(tǒng)中等待時(shí)間最長(zhǎng)的作業(yè),而不管要求運(yùn)行時(shí)間的長(zhǎng)短。按照就緒進(jìn)程進(jìn)入就緒隊(duì)列的先后次序進(jìn)行調(diào)度,簡(jiǎn)單易實(shí)現(xiàn),利于長(zhǎng)進(jìn)程,CPU繁忙型作業(yè),不利于短進(jìn)程,排隊(duì)時(shí)間相對(duì)過長(zhǎng)。2.時(shí)間片輪轉(zhuǎn)調(diào)度算法RR原理:時(shí)間片輪轉(zhuǎn)法主要用于進(jìn)程調(diào)度。采用此算法的系統(tǒng),其程序就緒隊(duì)列往往按進(jìn)程到達(dá)的時(shí)間來排序。進(jìn)程調(diào)度按一定時(shí)間片(q)輪番運(yùn)行各個(gè)進(jìn)程.進(jìn)程按到達(dá)時(shí)間在就緒隊(duì)列中排隊(duì),調(diào)度程序每次把CPU分配給就緒隊(duì)列首進(jìn)程使用一個(gè)時(shí)間片,運(yùn)行完一個(gè)時(shí)間片釋放CPU,排到就緒隊(duì)列末尾參加下一輪調(diào)度,CPU分配給就緒隊(duì)列的首進(jìn)程。固定時(shí)間片輪轉(zhuǎn)法:1所有就緒進(jìn)程按FCFS規(guī)則排隊(duì)。2處理機(jī)總是分配給就緒隊(duì)列的隊(duì)首進(jìn)程。3如果運(yùn)行的進(jìn)程用完時(shí)間片,則系統(tǒng)就把該進(jìn)程送回就緒隊(duì)列的隊(duì)尾,重新排隊(duì)。4因等待某事件而阻塞的進(jìn)程送到阻塞隊(duì)列。5系統(tǒng)把被喚醒的進(jìn)程送到就緒隊(duì)列的隊(duì)尾??勺儠r(shí)間片輪轉(zhuǎn)法:1進(jìn)程狀態(tài)的轉(zhuǎn)換方法同固定時(shí)間片輪轉(zhuǎn)法。2響應(yīng)時(shí)間固定,時(shí)間片的長(zhǎng)短依據(jù)進(jìn)程數(shù)量的多少由T=N×(q+t)給出的關(guān)系調(diào)整。3根據(jù)進(jìn)程優(yōu)先級(jí)的高低進(jìn)一步調(diào)整時(shí)間片,優(yōu)先級(jí)越高的進(jìn)程,分配的時(shí)間片越長(zhǎng)。3.算法類型:4.模擬程序可由兩部分組成,先來先服務(wù)(FCFS)調(diào)度算法,時(shí)間片輪轉(zhuǎn)。流程圖如下圖所示:四打印的源程序及附上的注釋#include<iostream>usingnamespacestd;#defineP_NUM3//cpu4種狀態(tài)就緒運(yùn)行等待完成enumstate{ ready, waiting, block, finish};//PCB進(jìn)程控制塊包括名稱、優(yōu)先級(jí)、占用CPU時(shí)間、需要時(shí)間structpcb{ charname[4]; intpriority; intcputime; intneedtime; intcount; intround; stateprocess; pcb*next;//構(gòu)建優(yōu)先級(jí)隊(duì)列};//建立一個(gè)優(yōu)先權(quán)的隊(duì)列pcb*get_process(){ pcb*q=NULL;; pcb*t=NULL;; pcb*p=NULL; inti=0; cout<<"inputnameandtime"<<endl; while(i<P_NUM){ q=(structpcb*)malloc(sizeof(pcb)); cin>>q->name; cin>>q->needtime; q->cputime=0; q->priority=P_NUM-i; q->process=ready; q->next=NULL; if(i==0){ p=q; t=q; } else{ t->next=q; t=q; } i++; }//while returnp;}//輸出當(dāng)前隊(duì)列各個(gè)進(jìn)程各種狀態(tài)voiddisplay(pcb*p){ cout<<"name"<<""<<"cputime"<<""<<"needtime"<<""<<"priority"<<""<<"state"<<endl; while(p){ cout<<p->name; cout<<""; cout<<p->cputime; cout<<""; cout<<p->needtime; cout<<""; cout<<p->priority; cout<<""; switch(p->process){ caseready:cout<<"ready"<<endl;break; casewaiting:cout<<"waiting"<<endl;break; caseblock:cout<<"block"<<endl;break; casefinish:cout<<"finish"<<endl;break; } p=p->next; }}//檢查隊(duì)列中進(jìn)程是否完成intprocess_finish(pcb*q){ intbl=1; while(bl&&q){ bl=bl&&q->needtime==0; if(q->next!=NULL) q=q->next; } returnbl;}//找到優(yōu)先權(quán)最大的進(jìn)程執(zhí)行voidcpuexe(pcb*q){ pcb*t=q; inttp=0; while(q){ if(q->process!=finish){ q->process=ready; if(q->needtime==0){ q->process=finish; } } if(tp<q->priority&&q->process!=finish){ tp=q->priority; t=q; } q=q->next; } if(t->needtime!=0){ t->needtime--; t->process=waiting; t->cputime++; }}//優(yōu)先權(quán)調(diào)度voidpriority_cal(){ pcb*p=NULL; p=get_process(); intcpu=0; while(!process_finish(p)){ cpu++; cout<<"cputime:"<<cpu<<endl; cpuexe(p); display(p); } printf("Allprocesseshavefinished,pressanykeytoexit");}//初始化界面voiddisplay_menu(){ cout<<"選擇CPU調(diào)度算法:"<<endl; cout<<"1優(yōu)先權(quán)"<<endl; cout<<"2轉(zhuǎn)輪法"<<endl; cout<<"3退出"<<endl;}//輪轉(zhuǎn)法調(diào)度初始化pcb*get_process_round(){ pcb*q=NULL; pcb*t=NULL; pcb*p=NULL; inti=0; cout<<"inputnameandtime:"<<endl; while(i<P_NUM){ q=(structpcb*)malloc(sizeof(pcb)); cin>>q->name; cin>>q->needtime; q->cputime=0; q->round=0; q->count=0; q->process=ready; q->next=NULL; if(i==0){ p=q; t=q; } else{ t->next=q; t=q; } i++; }//while returnp;}//cpu單位時(shí)間為1voidcpu_round(pcb*q){ q->cputime+=1; q->needtime-=1; if(q->needtime<=0){ q->needtime=0; q->process=finish; return; } q->count++; q->round++; q->process=waiting;}//輪轉(zhuǎn)法找到下一個(gè)可以CPU執(zhí)行的程序pcb*get_next(pcb*k,pcb*head){ pcb*t; t=k; t=t->next; while(t&&t->process==finish){ t=t->next; } if(t==NULL){ t=head; while(t->next!=NULL&&t->process==finish){ if(t->next==k) t=t->next; if(t->next!=NULL) t=t->next; } } returnt;}//整理隊(duì)列里的進(jìn)程狀態(tài)voidset_state(pcb*p){ while(p){ if(p->needtime<=0){ p->process=finish; } if(p->process==waiting){ p->process=ready; } p=p->next; }}//每個(gè)CPU時(shí)間后輸出每個(gè)進(jìn)程狀態(tài)voiddisplay_round(pcb*p){ cout<<"NAME"<<""<<"CPUTIME"<<""<<"NEEDTIME"<<""<<"COUNT"<<""<<"ROUND"<<""<<"STATE"<<endl; while(p){ cout<<p->name; cout<<""; cout<<p->cputime; cout<<""; cout<<p->needtime; cout<<""; cout<<p->count; cout<<""; cout<<p->round; cout<<""; switch(p->process){ caseready:cout<<"ready"<<endl;break; casewaiting:cout<<"waiting"<<endl;break; casefinish:cout<<"finish"<<endl;break; } p=p->next; }}//轉(zhuǎn)輪調(diào)度voidround_cal(){ pcb*p=NULL; pcb*r=NULL; p=get_process_round(); intcpu=0; r=p; while(!process_finish(p)){ cpu+=1; cpu_round(r); r=get_next(r,p);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 襄樊市重點(diǎn)中學(xué)2025屆高三第二次聯(lián)考數(shù)學(xué)試卷含解析
- 四川省成都市雙流中學(xué)2025屆高三最后一卷語文試卷含解析
- 安徽省合肥一中2025屆高考語文全真模擬密押卷含解析
- 2025屆河南省豫西南部分示范性高中高三二診模擬考試英語試卷含解析
- 《solidworks 機(jī)械設(shè)計(jì)實(shí)例教程》 課件 任務(wù)4.2 齒輪軸的設(shè)計(jì)
- 浙江省高中發(fā)展共同體2025屆高考英語一模試卷含解析
- 《保險(xiǎn)業(yè)案件管理》課件
- 普通高等學(xué)校2025屆高考英語三模試卷含解析
- 《設(shè)備管理制度講》課件
- 2025屆四川大學(xué)附屬中學(xué)高考英語考前最后一卷預(yù)測(cè)卷含解析
- 國(guó)開(陜西)2024年《中國(guó)制造之高端裝備》形考作業(yè)1-4答案
- 2024年全國(guó)《勞動(dòng)教育》基礎(chǔ)知識(shí)考試題庫與答案
- 國(guó)家開放大學(xué)《心理學(xué)》形考任務(wù)1-4參考答案
- 物流項(xiàng)目管理(山東聯(lián)盟)智慧樹知到期末考試答案章節(jié)答案2024年山東交通學(xué)院
- 2024年廣西北部灣港集團(tuán)招聘筆試參考題庫含答案解析
- 《細(xì)胞工程學(xué)》考試復(fù)習(xí)題庫(帶答案)
- 新時(shí)代中小學(xué)教師職業(yè)行為十項(xiàng)準(zhǔn)則考核試題及答案
- 300MW的機(jī)組原則性熱力系統(tǒng)計(jì)算
- 人大副主任任前表態(tài)發(fā)言
- 人教PEP五年級(jí)上冊(cè)英語《Unit 5 Read and write 》PPT課件
- 華師大版八年級(jí)《科學(xué)》下冊(cè)的物理學(xué)知識(shí)點(diǎn)
評(píng)論
0/150
提交評(píng)論