動(dòng)態(tài)優(yōu)先權(quán)進(jìn)程調(diào)度算法模擬實(shí)驗(yàn)報(bào)告_第1頁
動(dòng)態(tài)優(yōu)先權(quán)進(jìn)程調(diào)度算法模擬實(shí)驗(yàn)報(bào)告_第2頁
動(dòng)態(tài)優(yōu)先權(quán)進(jìn)程調(diào)度算法模擬實(shí)驗(yàn)報(bào)告_第3頁
動(dòng)態(tài)優(yōu)先權(quán)進(jìn)程調(diào)度算法模擬實(shí)驗(yàn)報(bào)告_第4頁
動(dòng)態(tài)優(yōu)先權(quán)進(jìn)程調(diào)度算法模擬實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、鄭州輕工業(yè)學(xué)院實(shí) 驗(yàn) 報(bào) 告 實(shí)驗(yàn)名稱 動(dòng)態(tài)優(yōu)先權(quán)進(jìn)程調(diào)度算法模擬 課程名稱 計(jì)算機(jī)操作系統(tǒng) 專業(yè)班級: 學(xué)生姓名: 學(xué) 號: 成 績:指導(dǎo)教師: 實(shí)驗(yàn)日期: 0 1鄭州輕工業(yè)學(xué)院 實(shí) 驗(yàn) 報(bào) 告一實(shí)驗(yàn)?zāi)康模和ㄟ^動(dòng)態(tài)優(yōu)先權(quán)算法的模擬加深對進(jìn)程概念和進(jìn)程調(diào)度過程的理解。二實(shí)驗(yàn)內(nèi)容:(1)用C語言(或其它語言,如Java)實(shí)現(xiàn)對N個(gè)進(jìn)程采用某種進(jìn)程調(diào)度算法(如動(dòng)態(tài)優(yōu)先權(quán)調(diào)度)的調(diào)度。(2)每個(gè)用來標(biāo)識進(jìn)程的進(jìn)程控制塊PCB可用結(jié)構(gòu)來描述,包括以下字段:² 進(jìn)程標(biāo)識數(shù)ID。² 進(jìn)程優(yōu)先數(shù)PRIORITY,并規(guī)定優(yōu)先數(shù)越大的進(jìn)程,其優(yōu)先權(quán)越高。² 進(jìn)程已占用CPU時(shí)間CP

2、UTIME。² 進(jìn)程還需占用的CPU時(shí)間ALLTIME。當(dāng)進(jìn)程運(yùn)行完畢時(shí),ALLTIME變?yōu)?。² 進(jìn)程的阻塞時(shí)間STARTBLOCK,表示當(dāng)進(jìn)程再運(yùn)行STARTBLOCK個(gè)時(shí)間片后,進(jìn)程將進(jìn)入阻塞狀態(tài)。² 進(jìn)程被阻塞的時(shí)間BLOCKTIME,表示已阻塞的進(jìn)程再等待BLOCKTIME個(gè)時(shí)間片后,將轉(zhuǎn)換成就緒狀態(tài)。² 進(jìn)程狀態(tài)STATE。² 隊(duì)列指針NEXT,用來將PCB排成隊(duì)列。(3)優(yōu)先數(shù)改變的原則:² 進(jìn)程在就緒隊(duì)列中呆一個(gè)時(shí)間片,優(yōu)先數(shù)增加1。² 進(jìn)程每運(yùn)行一個(gè)時(shí)間片,優(yōu)先數(shù)減3。(4)為了清楚地觀察每個(gè)進(jìn)程的調(diào)度過程

3、,程序應(yīng)將每個(gè)時(shí)間片內(nèi)的進(jìn)程的情況顯示出來,包括正在運(yùn)行的進(jìn)程,處于就緒隊(duì)列中的進(jìn)程和處于阻塞隊(duì)列中的進(jìn)程。(5)分析程序運(yùn)行的結(jié)果,談一下自己的認(rèn)識。三、設(shè)計(jì)思路和方法通過VC+程序模擬動(dòng)態(tài)優(yōu)先權(quán)程序調(diào)度算法,主要思路和方法就是,通過結(jié)構(gòu)體模擬計(jì)算機(jī)的控制模組,構(gòu)造一個(gè)PCB結(jié)構(gòu)體即進(jìn)程控制塊結(jié)構(gòu)體,用來記錄當(dāng)前進(jìn)程的的相關(guān)狀態(tài)信息,包括進(jìn)程標(biāo)識符、處理機(jī)狀態(tài)、進(jìn)程調(diào)度信息、進(jìn)程控制信息。并通過C+語言模擬計(jì)算機(jī)的相關(guān)調(diào)度算法,對構(gòu)建的PCB進(jìn)程進(jìn)行模擬調(diào)度和運(yùn)行,從而實(shí)現(xiàn)用計(jì)算機(jī)對進(jìn)程的調(diào)度過程進(jìn)行過程仿真。四、數(shù)據(jù)結(jié)構(gòu)和算法數(shù)據(jù)結(jié)構(gòu):1. 包含PCB信息的結(jié)構(gòu)體2. 包含進(jìn)程信息的順序表

4、結(jié)構(gòu)算法: 優(yōu)先權(quán)=(等待時(shí)間+要求服務(wù)時(shí)間)/要求服務(wù)時(shí)間 Rp=(等待時(shí)間+要求服務(wù)時(shí)間)/要求服務(wù)時(shí)間=相應(yīng)時(shí)間/要求服務(wù)時(shí)間系統(tǒng)將所有就緒隊(duì)列按優(yōu)先級高低排成一個(gè)隊(duì)列,每次調(diào)度時(shí),將CPU分配給優(yōu)先級最高的進(jìn)程,并令其執(zhí)行一個(gè)時(shí)間片,而后中斷,尋找并運(yùn)行下一個(gè)優(yōu)先級最高的進(jìn)程。而所有進(jìn)程的優(yōu)先權(quán)在隨進(jìn)程的推進(jìn)或隨其等待時(shí)間的增加而增加,而被調(diào)度之后的程序則降低一定的優(yōu)先級,從而使所有進(jìn)程都有運(yùn)行的機(jī)會(huì),從而保證系統(tǒng)能在給定的時(shí)間內(nèi)響應(yīng)所有用戶的請求。五程序代碼和輸出1 程序代碼如下#include "iostream.h"#include "windows

5、.h"/#define N 3typedef structint ID;int PRIORITY;int CPUTIME;int ALLTIME;int STARTBLOCK;int BLOCKTIME;int STATE;/0-運(yùn)行 1-阻塞 2-就緒 3-結(jié)束 4-未到達(dá)int REACH;int TIME;PROCESS;void textcolor (int color) SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), color );void main()int i,time,max,l,l1,time1

6、,flag=0,total=0,N,server10,sum=0;PROCESS pro10;textcolor(13);cout<<"注意:本程序中狀態(tài)代表如下"<<endl<<"0-運(yùn)行 1-阻塞 2-就緒 3-結(jié)束 4-未到達(dá)"<<endl<<endl;textcolor(15);cout<<"請輸入進(jìn)程數(shù):"cin>>N;cout<<"請?jiān)O(shè)置時(shí)間片長度:"cin>>time;cout<<&

7、quot;請輸入各進(jìn)程初始狀態(tài):"<<endl;cout<<"ID PRIORITY REACH ALLTIME STARTBLOCK BLOCKTIME"<<endl;for(i=0;i<N;i+)proi.CPUTIME=0;proi.TIME=0;cin>>proi.ID>>proi.PRIORITY>>proi.REACH;cin>>proi.ALLTIME>>proi.STARTBLOCK>>proi.BLOCKTIME;serveri=pr

8、oi.ALLTIME;if(proi.REACH=0) proi.STATE=0;else proi.STATE=4;docout<<endl<<"當(dāng)前時(shí)刻為:"<<total;textcolor(12);cout<<endl<<"=各進(jìn)程狀態(tài)為="<<endl;textcolor(15);cout<<"ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE"<<endl;for(i=0

9、;i<N;i+)cout<<proi.ID<<" "<<proi.PRIORITY<<" "<<proi.CPUTIME<<" "cout<<proi.ALLTIME<<" "<<proi.STARTBLOCK<<" "<<proi.BLOCKTIME<<" "<<proi.STATE;cout<<end

10、l;total+=time;for(i=0;i<N;i+)if(proi.STATE=4&&proi.REACH<total)proi.STATE=1;for(i=0;i<N;i+)time1=proi.ALLTIME;if(proi.STATE=0)if(proi.ALLTIME<=time)/proi.CPUTIME+=time1;proi.ALLTIME=0;proi.STATE=3;proi.TIME=total-time+time1;else/proi.CPUTIME+=time;proi.ALLTIME-=time;proi.STARTBLO

11、CK-;if(proi.STARTBLOCK=0)proi.STATE=1;proi.BLOCKTIME=time1;proi.STARTBLOCK=time1;proi.PRIORITY-=3;proi.TIME=total;if(proi.STATE=1)proi.BLOCKTIME-;if(proi.BLOCKTIME=0) proi.STATE=2;proi.TIME=total;if(proi.STATE=2)/proi.CPUTIME+=time;proi.PRIORITY+;proi.TIME=total;max=-100;l1=-1;l=-1;for(i=0;i<N;i+

12、)if(proi.PRIORITY>max&&(proi.STATE=0|proi.STATE=2)l=i;max=proi.PRIORITY;if(proi.STATE=0) l1=i;if(l!=-1&&l!=l1) prol.STATE=0;if(l1!=-1) prol1.STATE=2;flag=0;for(i=0;i<N;i+)if(proi.STATE!=3)flag=1;break;if(flag=0) break;while(1);cout<<endl<<"當(dāng)前時(shí)刻:"<<to

13、tal;textcolor(12);cout<<endl<<"=各進(jìn)程狀態(tài)為="<<endl;textcolor(15);cout<<"ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE"<<endl;for(i=0;i<N;i+)cout<<proi.ID<<" "<<proi.PRIORITY<<" "<<proi.CPUTIME

14、<<" "cout<<proi.ALLTIME<<" "<<proi.STARTBLOCK<<" "<<proi.BLOCKTIME<<" "<<proi.STATE;cout<<endl;cout<<endl<<"各進(jìn)程運(yùn)行結(jié)束!"<<endl;cout<<"進(jìn)程號 到達(dá)時(shí)間 結(jié)束時(shí)間 周轉(zhuǎn)時(shí)間 帶權(quán)周轉(zhuǎn)時(shí)間"<&

15、lt;endl;textcolor(10);for(i=0;i<N;i+)cout<<" "<<proi.ID<<" "<<proi.REACH<<" "<<proi.TIME<<" "<<proi.TIME-proi.REACH<<" "<<(float)(proi.TIME-proi.REACH)/serveri<<endl;sum+=proi.TIME-

16、proi.REACH;cout<<"平均周轉(zhuǎn)時(shí)間為:"<<(float)sum/N<<endl;textcolor(15);2輸入注意:本程序中狀態(tài)代表如下0-運(yùn)行 1-阻塞 2-就緒 3-結(jié)束 4-未到達(dá)請輸入進(jìn)程數(shù):5請?jiān)O(shè)置時(shí)間片長度:4請輸入各進(jìn)程初始狀態(tài):ID PRIORITY REACH ALLTIME STARTBLOCK BLOCKTIME1 2 3 0 1 42 6 4 0 3 12 0 3 4 5 22 1 2 4 3 41 5 2 4 5 33輸出結(jié)果當(dāng)前時(shí)刻為:0=各進(jìn)程狀態(tài)為=ID PRIORITY CPUTIME

17、 ALLTIME STARTBLOCK BLOCKTIME STATE1 2 0 0 1 4 42 6 0 0 3 1 42 0 0 4 5 2 42 1 0 4 3 4 41 5 0 4 5 3 4當(dāng)前時(shí)刻為:4=各進(jìn)程狀態(tài)為=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 2 0 0 1 3 12 6 0 0 3 1 42 0 0 4 5 1 12 1 0 4 3 3 11 5 0 4 5 2 1當(dāng)前時(shí)刻為:8=各進(jìn)程狀態(tài)為=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME ST

18、ATE1 2 0 0 1 2 12 7 0 0 3 0 02 1 0 4 5 0 22 1 0 4 3 2 11 5 0 4 5 1 1當(dāng)前時(shí)刻為:12=各進(jìn)程狀態(tài)為=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 2 0 0 1 1 12 7 0 0 3 0 32 2 0 4 5 0 22 1 0 4 3 1 11 6 0 4 5 0 0當(dāng)前時(shí)刻為:16=各進(jìn)程狀態(tài)為=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 3 0 0 1 0 02 7 0 0 3 0 32

19、 3 0 4 5 0 22 2 0 4 3 0 21 6 0 0 5 0 3當(dāng)前時(shí)刻為:20=各進(jìn)程狀態(tài)為=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 3 0 0 1 0 32 7 0 0 3 0 32 4 0 4 5 0 02 3 0 4 3 0 21 6 0 0 5 0 3當(dāng)前時(shí)刻為:24=各進(jìn)程狀態(tài)為=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 3 0 0 1 0 32 7 0 0 3 0 32 4 0 0 5 0 32 4 0 4 3 0 01 6 0 0 5 0 3當(dāng)前時(shí)刻:28=各

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論