實(shí)驗(yàn)21進(jìn)程調(diào)度_第1頁
實(shí)驗(yàn)21進(jìn)程調(diào)度_第2頁
實(shí)驗(yàn)21進(jìn)程調(diào)度_第3頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)2、1進(jìn)程調(diào)度一、實(shí)驗(yàn)?zāi)康亩嗟莱绦蛟O(shè)計中,經(jīng)常就是若干個進(jìn)程同時處于就緒狀態(tài),必須依照某種策略來決定那個進(jìn)程優(yōu)先占有處理機(jī)。因而引起進(jìn)程調(diào)度。本實(shí)驗(yàn)?zāi)M在單處理機(jī)情況下的處理機(jī)調(diào)度問題深對進(jìn)程調(diào)度的理解。二、實(shí)驗(yàn)要求1.設(shè)計進(jìn)程調(diào)度算法,進(jìn)程數(shù)不定2 .包含幾種調(diào)度算法,并加以實(shí)現(xiàn)3 輸出進(jìn)程的調(diào)度過程一一進(jìn)程的狀態(tài)、鏈表等。三、參考例,加1 題目一一優(yōu)先權(quán)法、輪轉(zhuǎn)法簡化假設(shè)1)進(jìn)程為計算型的(無I/O)2)進(jìn)程狀態(tài):ready、running、finish3)進(jìn)程需要的CPU時間以時間片為單位確定2 算法描述1)2)四、優(yōu)先權(quán)法一一動態(tài)優(yōu)先權(quán)當(dāng)前運(yùn)行進(jìn)程用完時間片后,其優(yōu)先權(quán)減去一個常數(shù)

2、。 輪轉(zhuǎn)法實(shí)驗(yàn)流程圖開始鍵盤輸入進(jìn)程數(shù),n,與調(diào)度方法的選擇N 輪轉(zhuǎn)法優(yōu)先權(quán)法?Y J產(chǎn)生n個進(jìn)程,對每個進(jìn)程產(chǎn)生一個 PCB,并用隨機(jī) 數(shù)產(chǎn)生進(jìn)程的優(yōu)先權(quán)及進(jìn)程所需的CPU時間按優(yōu)先權(quán)大小,把n個進(jìn)程拉成一個就緒隊列初始化其她數(shù)據(jù)結(jié)構(gòu)區(qū)鏈?zhǔn)走M(jìn)程投入運(yùn)行時間片到,進(jìn)程所需的CPU時間減1,優(yōu)先權(quán)減3輸 出個進(jìn)程的運(yùn)行情況所需的CPU時間=0 ?N 撤銷進(jìn)程+將進(jìn)程插入就緒隊列就緒隊列為空?Y結(jié)束產(chǎn)生n個進(jìn)程,對每個進(jìn)程用隨機(jī)數(shù)產(chǎn)生進(jìn)程的輪轉(zhuǎn)時間片數(shù)及進(jìn)程所需的時間片數(shù),已占用CPU的時間片數(shù)置為 0按進(jìn)程產(chǎn)生的先后次序拉成就緒隊列鏈鏈?zhǔn)走M(jìn)程投入運(yùn)行時間片到,進(jìn)程所需時間片數(shù)減 1,已占用CPU

3、時間片數(shù)加1輸出各進(jìn)程的運(yùn)行情況Y進(jìn)程所需時間片數(shù)=0 ? J撤銷該進(jìn)程t N占用CPU的時間片數(shù)=輪轉(zhuǎn)時間片數(shù)?Y占用CPU的時間片數(shù)置為0N就緒隊列為空不?列 Y結(jié)束把該進(jìn)程插入就緒隊列尾注意:1.產(chǎn)生的各種隨機(jī)數(shù)的取值范圍加以限制,如所需的CPU時間限制在120之間。2 進(jìn)程數(shù)n不要太大通常取48個3. 使用動態(tài)數(shù)據(jù)結(jié)構(gòu)4. 獨(dú)立編程5至少三種調(diào)度算法6.若有可能請在圖形方式下,將PCB的調(diào)度用圖形成動畫顯示。五實(shí)驗(yàn)過程:(1)輸入:進(jìn)程流文件(1、txt),其中存儲的就是一系列要執(zhí)行的進(jìn)程,每個作業(yè)包括四個數(shù)據(jù)項:進(jìn)程名進(jìn)程狀態(tài)(1就緒2等待3運(yùn)行)所需時間優(yōu)先數(shù)(0級最高)進(jìn)程015

4、02進(jìn)程12104進(jìn)程21150進(jìn)程33285進(jìn)程42191進(jìn)程5387輸出:進(jìn)程執(zhí)行流等待時間,平均等待時間本程序包括:FIFO算法,優(yōu)先數(shù)調(diào)度算法,時間片輪轉(zhuǎn)調(diào)度算法(2)程序代碼#include#include#include10 秒const int block_time=10; / 定義時間片的長度為 const int MAXPCB=100; / 定義最大進(jìn)程數(shù) /定義進(jìn)程結(jié)構(gòu)體typedef struct nodechar name20;int status;int time;int privilege;int finished;int wait_time; pcb;pcb pc

5、bsMAXPCB;int quantity;/初始化函數(shù)void initial()int i;for(i=0;iMAXPCB;i+)strcpy(pcbsi 、 name,);pcbsi 、 status=0; pcbsi 、 time=0; pcbsi 、 privilege=0; pcbsi 、 finished=0; pcbsi 、 wait_time=0;quantity=0;/讀數(shù)據(jù)函數(shù)int readData()FILE *fp;char fname20;int i;coutfname;if(fp=fopen(fname,r)=NULL)cout 錯誤 ,文件打不開 ,請檢查文件

6、名 endl;elsewhile(!feof(fp)fscanf(fp,%s %d %d %d,pcbsquantity 、 name,&pcbsquantity 、status, &pcbsquantity 、 time,&pcbsquantity 、privilege);quantity+; / 輸出所讀入的數(shù)據(jù)cout 輸出所讀入的數(shù)據(jù) endl;cout進(jìn)程名進(jìn)程狀態(tài)所需時間優(yōu)先數(shù)endl;for(i=0;iquantity;i+)cout pcbsi 、 name pcbsi 、 status pcbsi 、 time pcbsi 、privilegeendl;return(1);r

7、eturn(0);/重置數(shù)據(jù) ,以供另一個算法使用void init()int i;for(i=0;iMAXPCB;i+)pcbsi 、finished=0; pcbsi 、wait_time=0;/先進(jìn)先出算法void FIFO()int i,j; int total;/輸出 FIFO 算法執(zhí)行流endl;coutendl*coutFIFO 算法執(zhí)行流 :endl; cout 進(jìn)程名 等待時間 endl;for(i=0;iquantity;i+)cout pcbsi 、name pcbsi 、 wait_timeendl; for(j=i+1;jquantity;j+) pcbsj 、 wa

8、it_time+=pcbsi 、 time; total=0; for(i=0;iquantity;i+) total+=pcbsi 、 wait_time; cout 總等待時間 :total 平均等待時間 :total/quantityendl;/優(yōu)先數(shù)調(diào)度算法 void privilege()int i,j,p;int passed_time=0;int total;int queueMAXPCB;int current_privilege=1000; for(i=0;iquantity;i+) current_privilege=1000; for(j=0;jquantity;j+)i

9、f(pcbsj 、 finished=0)&(pcbsj 、 privilegecurrent_privilege) p=j;current_privilege=pcbsj 、 privilege; queuei=p;pcbsp 、 finished=1;pcbsp 、 wait_time+=passed_time; passed_time+=pcbsp、 time; /輸出優(yōu)先數(shù)調(diào)度執(zhí)行流coutendl* endl;cout 優(yōu)先數(shù)調(diào)度執(zhí)行流 :endl;cout 進(jìn)程名 等待時間 endl; for(i=0;iquantity;i+)cout pcbsqueuei 、 name pcbs

10、queuei 、 wait_timeendl; total=0; for(i=0;iquantity;i+) total+=pcbsi 、 wait_time; cout 總等待時間 :total 平均等待時間 :total/quantityendl; /時間片輪轉(zhuǎn)調(diào)度算法 void timer()int i,j,number,flag=1; int passed_time=0;int max_time=0;int round=0;int queue1000;int total=0;while(flag=1)flag=0;number=0;for(i=0;i1)for(i=0;iquantit

11、y;i+)if(pcbsi 、 finished=0) flag=1; queuetotal=i; total+;if(pcbsi 、 time=block_time*(round+1) pcbsi 、 finished=1;round+;if(queuetotal-1=queuetotal-2) total-; endl;coutendlcout 時間片輪轉(zhuǎn)調(diào)度執(zhí)行流 :endl;for(i=0;itotal;i+)coutpcbsqueuei 、 name coutendl;/顯示void version。 cout/*進(jìn)程調(diào)度*/coute ndle ndl; II主函數(shù)void mai n()int flag;versio n();in itial();flag=readData();if(flag=1) FIFO();in it();privilege。;in it();timer();(3)運(yùn)行結(jié)果:輸入進(jìn)程流文件名1、txt即可得出以下輸出結(jié)果MMMMKMKMM-JM-M-H;M-KMJM.44XM 1|-.耳呈 周 世 M.KMM遼僕涯文件呂:“1:進(jìn)趕狀態(tài)所需吋同憂先數(shù)0 1 50 2 2 10 4

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論