進(jìn)程調(diào)度算法設(shè)計(jì)報(bào)告.doc_第1頁
進(jìn)程調(diào)度算法設(shè)計(jì)報(bào)告.doc_第2頁
進(jìn)程調(diào)度算法設(shè)計(jì)報(bào)告.doc_第3頁
進(jìn)程調(diào)度算法設(shè)計(jì)報(bào)告.doc_第4頁
進(jìn)程調(diào)度算法設(shè)計(jì)報(bào)告.doc_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

實(shí)驗(yàn)一 進(jìn)程調(diào)度一、目的要求用高級語言編寫和調(diào)試一個(gè)進(jìn)程。以加深對進(jìn)程的概念及進(jìn)程調(diào)度算法的理解。二、程序的過程設(shè)計(jì)進(jìn)程調(diào)度算法:采用最高優(yōu)先數(shù)優(yōu)先的調(diào)度算法,即把處理機(jī)分配給優(yōu)先數(shù)最高的進(jìn)程。每個(gè)進(jìn)程由一個(gè)進(jìn)程控制塊(PCB)表示。進(jìn)程控制塊可以包含如下信息:進(jìn)程名、優(yōu)先數(shù)、需要運(yùn)行的時(shí)間、已占用的CPU時(shí)間、進(jìn)程狀態(tài)等等。進(jìn)程的優(yōu)先數(shù)及所需要運(yùn)行的時(shí)間可以事先人為地指定(也可由隨機(jī)數(shù)產(chǎn)生)。進(jìn)程的運(yùn)行時(shí)間以時(shí)間片為單位進(jìn)行計(jì)算。每個(gè)進(jìn)程的狀態(tài)可以是就緒W(Wait),運(yùn)行R(Run),或完成F(Finish)三種狀態(tài)之一。各個(gè)就緒進(jìn)程依優(yōu)先數(shù)從高到低排列。總是把CPU分配給優(yōu)先數(shù)最高的進(jìn)程。就緒進(jìn)程獲得CPU后都只能運(yùn)行一個(gè)時(shí)間片。用已占用CPU時(shí)間加1來表示。如果運(yùn)行一個(gè)時(shí)間片后,進(jìn)程的已占用CPU時(shí)間已達(dá)到所需要的運(yùn)行時(shí)間,則撤銷該進(jìn)程。如果運(yùn)行一個(gè)時(shí)間片后進(jìn)程的已占用CPU時(shí)間還未達(dá)所需的運(yùn)行時(shí)間,也就是進(jìn)程還需要繼續(xù)運(yùn)行,此時(shí)應(yīng)將進(jìn)程的優(yōu)先數(shù)減1(即降低一級),然后把它插入就緒隊(duì)列等待CPU。每進(jìn)行一次調(diào)度程序都打印一次運(yùn)行進(jìn)程,就緒隊(duì)列。以及各個(gè)進(jìn)程的PCB,以便進(jìn)行檢查。重復(fù)上述過程,直到所要進(jìn)程都完成為止。三、調(diào)度算法的流程圖如下:開始初始化PCB,輸入進(jìn)程信息各進(jìn)程按優(yōu)先數(shù)從高到低排列 就緒隊(duì)列空? 結(jié)束就緒隊(duì)列鏈?zhǔn)走M(jìn)程投入運(yùn)行時(shí)間片到運(yùn)行進(jìn)程已占用CPU時(shí)間+1運(yùn)行進(jìn)程已占用CPU時(shí)間已達(dá)到所需的運(yùn)行時(shí)間?使運(yùn)行進(jìn)程的優(yōu)先數(shù)-1 進(jìn)程完成把運(yùn)行進(jìn)程插入就緒隊(duì)列 撤銷該進(jìn)程四、程序代碼:#include#include#include#define getpcb(type)(type*)malloc(sizeof (type)#define NULL 0#define waittime 2 struct pcb char name10; char state; int super; int ntime; int wtime; int rtime; struct pcb*link; *ready=NULL,*p,*f; typedef struct pcb PCB;void sort();void destroy();void input()int i,num;/ clrscr(); printf(ninput process nunmber?); scanf(%d,&num); for(i=0;iname); printf(nthe super of process:); scanf(%d,&p-super); printf(nthe time need:); scanf(%d,&p-ntime); printf(n); p-rtime=0;p-wtime=0;p-state=w; p-link=NULL; sort(); void sort()PCB *fir,*sec;int ins=0;if(ready=NULL)|(p-super)(ready-super) p-link=ready; ready=p; elsefir=ready; sec=fir-link; while(sec!=NULL) if(p-super)(sec-super) p-link=sec; fir-link=p; sec=NULL; ins=1; elsefir=fir-link; sec=sec-link; if(ins=0)fir-link=p; void sort1(PCB *p)PCB *fir,*sec;PCB *th;int ins=0;fir=ready;th=ready;sec=fir-link;if(ready!=NULL)while(th-link!=p)&(th-link!=NULL)th=th-link;if(fir-link=NULL)|(fir=p) return;else if(p-superready-super)th-link=p-link;p-link=ready;ready=p;else while(sec-link!=p)&(sec-link!=NULL) if(p-super)(sec-super) th-link=p-link; fir-link=p; p-link=sec; elsefir=fir-link; sec=sec-link; void running() f=NULL; (p-rtime)+; if(p-rtime=p-ntime) destroy(); else (p-super)-; p-state=w; p-wtime=0; f=p; / sort(); if(ready!=NULL) p=ready; while(p!=NULL) p-wtime+; if(p-wtime=2) p-super+; p-wtime=0; sort1(p); p=p-link; if(f!=NULL)p=f;sort();int space() int l=0; PCB*pr=ready; while(pr!=NULL) l+; pr=pr-link; return(l);void disp(PCB *pr);void check()PCB*pr; printf(n*Now the process running is:%s,p-name);disp(p);pr=ready;printf(n*Now the ready queue is:n);while(pr!=NULL)disp(pr); pr=pr-link; void disp(PCB *pr)printf(nqnametstatetsupertndtimetwtimetruntimen);printf(|%st,pr-name);printf(|%ct,pr-state);printf(|%dt,pr-super);printf(|%dt,pr-ntime);printf(|%dt,pr-wtime);printf(|%dt,pr-rtime);printf(n);void destroy()printf(nprocess%s has finished.n,p-name); free(p);void main () int len=0, h=0; input(); len=space(); while(len!=0)&(ready!=NULL) getchar(); h+;coutnthe execute numberhlink; p-l

溫馨提示

  • 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

提交評論