作業(yè)調(diào)度算法(先來先服務(wù)算法,短作業(yè)算法)_第1頁
作業(yè)調(diào)度算法(先來先服務(wù)算法,短作業(yè)算法)_第2頁
作業(yè)調(diào)度算法(先來先服務(wù)算法,短作業(yè)算法)_第3頁
作業(yè)調(diào)度算法(先來先服務(wù)算法,短作業(yè)算法)_第4頁
作業(yè)調(diào)度算法(先來先服務(wù)算法,短作業(yè)算法)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《操作曲疣》賣險(xiǎn)想告

題目:作業(yè)調(diào)度算法

班級(jí):網(wǎng)絡(luò)工程

姓名:朱錦濤

學(xué)號(hào):E31314037

一、實(shí)驗(yàn)?zāi)康?/p>

用代碼實(shí)現(xiàn)頁面調(diào)度算法,即先來先服務(wù)(FCFS)調(diào)度算

、短作業(yè)優(yōu)先算法、高響應(yīng)比優(yōu)先調(diào)度算法。通過代碼得具體實(shí)現(xiàn),

加深對(duì)算法得核心得理解.

二、實(shí)驗(yàn)原理

1、先來先服務(wù)(FCFS)調(diào)度算法

FCFS就是最簡(jiǎn)單得調(diào)度算法,該算法既可用于作業(yè)調(diào)度,也可

用于進(jìn)程調(diào)度。當(dāng)在作業(yè)調(diào)度中采用該算法時(shí),系統(tǒng)將按照作業(yè)到達(dá)

得先后次序來進(jìn)行調(diào)度,或者說它就是優(yōu)先考慮在系統(tǒng)中等待時(shí)間最

長得作業(yè),而不管該作業(yè)所需執(zhí)行得時(shí)間得長短,從后備作業(yè)隊(duì)列中

選擇幾個(gè)最先進(jìn)入該隊(duì)列得作業(yè),將它們調(diào)入內(nèi)存,為它們分配資源

與創(chuàng)建進(jìn)程.然后把它放入就緒隊(duì)列。

2、短作業(yè)優(yōu)先算法

SJF算法就是以作業(yè)得長短來計(jì)算優(yōu)先級(jí),作業(yè)越短,其優(yōu)先級(jí)

越高。作業(yè)得長短就是以作業(yè)所要求得運(yùn)行時(shí)間來衡量得。SJF算

法可以分別用于作業(yè)與進(jìn)程調(diào)度。在把短作業(yè)優(yōu)先調(diào)度算法用于作業(yè)

調(diào)度時(shí),它將從外存得作業(yè)后備隊(duì)列中選擇若干個(gè)估計(jì)運(yùn)行時(shí)間最短

得作業(yè),優(yōu)先將它們調(diào)入內(nèi)存。

3、高響應(yīng)比優(yōu)先調(diào)度算法

高響應(yīng)比優(yōu)先調(diào)度算法則就是既考慮了作業(yè)得等待時(shí)間,又考慮

了作業(yè)得運(yùn)行時(shí)間得算法,因此既照顧了短作業(yè),又不致使長作業(yè)等

待得時(shí)間過長,從而改善了處理機(jī)調(diào)度得性能。

如果我們引入一個(gè)動(dòng)態(tài)優(yōu)先級(jí),即優(yōu)先級(jí)就是可以改變得令它隨

等待得時(shí)間得延長而增加,這將使長作業(yè)得優(yōu)先級(jí)在等待期間不斷地

增加,等到足夠得時(shí)間后,必然有機(jī)會(huì)獲得處理機(jī).該優(yōu)先級(jí)得變化規(guī)

律可以描述為:

優(yōu)先權(quán)=(等待時(shí)間+要求服務(wù)時(shí)間)/要求服務(wù)時(shí)間

三、實(shí)驗(yàn)內(nèi)容

源程序:

#inc1ude<stdio,h>

#include<stdlib、h>

#include<time>h>

structwork

{

?intid;

intarrive_time;

intwork_time;

intwait;

f1oatpriority;

);

typedefstructsjf_work

{

structworks_work;//數(shù)據(jù)域

ostructsjf_work*pNext;〃指針域

}NODE,*PNODE;

voidFCFS();

voidSJF();

voidshowmenu();

boolIs_empty(PNODEpHead);

intcnt_work(PNODEpHead);

PNODEdo_work(PNODEpHead,int*w_finish_time,

inti);

voidshow(int*w_finish_time,inti,PNODEq,

int*w_re;

voidHRRN();

PNODEpriorit(PNODEpHead);

voiddo_work_l(PNODEpHead,int*w_finish_ti

me,inti);

intmain()

{

intchoice;//設(shè)置選擇數(shù)

showmenu();//顯示菜單

oscanf("%d",&choice);

owhile(choice!=0)〃選擇算法

switch(choice)

1ocase1:

,printf("您選擇得就是先來先服務(wù)算法:\n");

1?&?FCFS();

…break;

「case2:

printf("您選擇得就是短作業(yè)優(yōu)先算法:\n”);

,SJF();

1>break;

(ocase3:

,>>>printf("您選擇得就是高響應(yīng)比優(yōu)先調(diào)度算法'

n”);

…HRRN();

1>break;

default:

ooprintf(”請(qǐng)重新選擇!n);

o?>break;

b}

?oprintf("\n");

sprintf("下面就是菜單,請(qǐng)繼續(xù),或者按‘0'退出");

oshowmenu();

oscanf("%d”,&choice);

。}

Bprintf("感謝您使用本系統(tǒng),再見!”);

return0;

)

voidFCFS()

{

&intj,k;

intw_re1_time⑸;

ointw_finish_time[5];

floatrel_time=0;

structworktemp;

inti;

struetworkw[5];

srand(time(0));

for(i=0;i<5;i++)

3{

ow[i]、id=rand()%10;

?w[i]、arrive_time=rand()%10;

?w[iKwork_time=rand()%10+l;

9}

for(j=0;j<5;j++)

{

…printf("第%d個(gè)作業(yè)得編號(hào)就是:%d\t”,j+1,w[j]、

id);

o?printf("第%d個(gè)作業(yè)到達(dá)時(shí)間:%d\t”,j+l,w[j]、arrive

_time);

66printf(“第%(1個(gè)作業(yè)服務(wù)時(shí)間:%d\t",j+1,w[j]、

work_time);

printf("\n");

}

3for(j=1;j<5;j++)

ofor(k=0;k<5-j;k++)

66{

oooif(w[k]、arrive_time>w[k+1]、arriv

e_time)

3{

。otemp=w[k];

sw[k]=wLk+11;

?w[k+l]=temp;

od}

o}

oprintf(w\n");

w_finish_time[0]=w[0]、arrive_time

+w[0]、work_time;

6ofor(j=0;j<5;j++)

oif(w_finish_timeEj]〈w[j+1]、arrive_time)

oow_finish_timeEj+1]=w[j+1]、arrive_time+

wEj+1]>work_time;

>}

oooeIse

ooow_finish_time[j+1]=w_finish_time[j]+

w[j+l]、work_time;

0}

6for(j=0;j<5;j++)

oow_rel_time[j]=w_finish_time[j]-w[j]、

arrive_time;

6for(j=0;j<5;j++)

,(

o3rel_time+=w_rel_timeEj];

6for(j=0;j<5;j++)

printf(”第%(1個(gè)系統(tǒng)執(zhí)行得作業(yè)到達(dá)時(shí)間:%d”

arrive_time);

sprintf("編號(hào)就是:%d",w[j]、id);

sprintf("服務(wù)時(shí)間就是:%d",w[j]>work_time);

oooprintf("完成時(shí)間就是:%d",w_finish_time

LjD;

printf("周轉(zhuǎn)時(shí)間就是:%d”,w_re1—time

EjD;

??printf("\n");

)

printf("平均周轉(zhuǎn)時(shí)間:%f\n",re1_time/5);

)

voidSJF()

{

intw_rel_time[10];

?intw_finish_time[10];

*f1oatre1time0;

srand(time(O));

?inti;

ointj=0;

。PNODEpHead=(PNODE)mal1oc(sizeof(NODE));

oif(NULL==pHead)

(

printf("分配失敗,程序終止!\n");

oexit(-1);

}

PNODEpTai1=pHead;

spTail->pNext=NULL;〃定義該鏈表有頭結(jié)點(diǎn),

且第一個(gè)節(jié)點(diǎn)初始化為空

?for(i=0;i<10;i++)

。{

PNODEpNew=(PNODE)mal1oc(sizeof(NODE));

if(NULL==pNew)

oooprintf("分配失敗,程序終止!\n");

?t>t>exit(-1);

}

oopNew—>s_work、id=rand()%100;

,pNew->s_work^arrive_time=rand()%10;

opNew—>s_work,work_time=rand()%10+l;

opTai1—>pNext=pNew;

spNew->pNext=NULL;

??pTai1=pNew;

}

PNODEp=pHead—〉pNext;//p指向第一個(gè)節(jié)點(diǎn)

owhile(NULL!=p)

>(

ooprintf("第%d個(gè)作業(yè)得編號(hào)就是:%d\t”,j+1,p—〉

s_work、id);

printf(”第%(1個(gè)作業(yè)到達(dá)時(shí)間:%d\t",j+l,p—〉s_w

ork、arrive_time);

ooprintf("第%d個(gè)作業(yè)服務(wù)時(shí)間:%d\t",j+l,p->s_wo

rk、work_time);

ooprintf("\n");

oop=p—>pNext;

?printf("\n");

6j++;

。}

>p=pHead"—>pNext;

sPNODEq=p;〃p,q都指向第一個(gè)節(jié)點(diǎn)

p=p->pNext;

owhile(p!=NULL)

(

if(p—〉s_work、arrive_time〈q->s—work、

arrive_time)

q=P;

p=p—>pNext;

}

PNODErpHead—>pNext;//r也指向第一個(gè)節(jié)點(diǎn)

?intcnt=0;〃記錄所有節(jié)點(diǎn)數(shù)據(jù)域中到達(dá)時(shí)間最

短且相等得個(gè)數(shù)

whi1e(r!=NULL)

9{

oif(r—>s_work、arrive_time==q-)s_work、

arrive_time)

&cnt++;

or=r->pNext;

}

>p=pHead-)pNext;

owhile(p!=NULL)//在相等到達(dá)時(shí)間得作業(yè)中找服

務(wù)時(shí)間最短得作業(yè)

(

oif(ent>1)

ddt

>if(p—〉s_work>arrive_time==q->s_work、

arrivetime)

ooif(p—>s_work>work_time〈q-)s_work>

work_time)

>q=P;

op=p->pNext;

}

else

ooop=NULL;

}//確定q所指作業(yè)最先到達(dá)且服務(wù)時(shí)間最短

ow_finish_time[0]=q->s_work、arrive_time+q

—>s__work^work_time;

?w_re1_time[0]=w_finish_time[01—q—〉

s_work、arrive_time;

。printf("第1個(gè)系統(tǒng)執(zhí)行得作業(yè)到達(dá)時(shí)間:%d",q->

s_work、arrive_time);

printf(w編號(hào)就是:%d”,q-〉s_work、id);

printf(”服務(wù)時(shí)間就是:%d\n”,q—〉s_work>work_ti

me);

printf("完成時(shí)間就是:%d",w_finish_time[0]);

printf(”周轉(zhuǎn)時(shí)間就是:%d\n”,w_rel_time[0]);

9p=pHead;〃尋找q得前一個(gè)節(jié)點(diǎn),方便刪掉q節(jié)點(diǎn)

while(p->pNext!=q)

o(

op=p->pNext;

}

op一〉pNext=q—>pNext;

free(q);

。q=NULL;

ofor(i=0;i〈9&&!Is_empty(pHead);i++)

>{

?printf("現(xiàn)在系統(tǒng)還剩%d個(gè)作業(yè)!\n",cnt_work(pHe

ad));

ooq=do_work(pHead,w_finish_time,i);

oshow(w_finish_time,i,q?w_rel—time);

b6p=pHead;〃尋找q得前一個(gè)節(jié)點(diǎn),方便刪掉q節(jié)點(diǎn)

while(p—>pNext!=q)

op=p->pNext;

&&}

?p—〉pNext=q->pNext;

>free(q);

oq=NULL;

。}

for(j=0;j<10;j++)

(

?re1_time+=w_rel_time[j];

}

oprintf(”平均周轉(zhuǎn)時(shí)間:%f\n",re/10);

)

boolIs_empty(PNODEpHead)//判斷作業(yè)就是否做

?PNODEp;

。p=pHead一>pNext;

int1en=0;

while(p!=NULL)

(

,1en++;

??p=p一>pNext;

}

if(1en==0)

?returntrue;〃當(dāng)沒有作業(yè)時(shí),返回為真

else

returnfalse;

}

intcnt_work(PNODEpHead)〃計(jì)算當(dāng)前還剩多少作

業(yè)

(

PNODEp;

p=pHead-〉pNext;

intlen=0;

?whi1e(p!=NULL)

>(

o1en++;

>>p=p->pNext;

o}

return1en;

}

PNODEdo_work(PNODEpHead,int*w_fini

sh_time,inti)

(

oPNODEp,q;

intent=0;〃計(jì)數(shù)器清0,計(jì)算當(dāng)前作業(yè)完成時(shí),系統(tǒng)

中有多少個(gè)作業(yè)已經(jīng)到達(dá)

p=pHead—>pNext;

q=p;

whi1e(p!=NULL)

if(p-〉s_work>arrive_time<=w_finish_time

Ei])

oocnt++;

q=p;

p=p->pNext;

3}

oe1se

bop=p->pNext;

&&)

。}//q指向當(dāng)前到達(dá)時(shí)間小于剛剛完成得作業(yè),但不一

定就是服務(wù)時(shí)間最短得(如果有得話)

printf("系統(tǒng)中有%d個(gè)作業(yè)在當(dāng)前作業(yè)完成時(shí)已經(jīng)到達(dá)!

\n”,cnt);

0p=pHead—〉pNext;

while(p!=NULL)

。if(ent〉1)//執(zhí)行此次判斷后,q現(xiàn)在指向所有條件都

滿足得作業(yè)(如果有得話)

oif(p—>s_work^arrive_time<=w_finish_time

[i])

(

o>if(p->s_work、work—time〈q->s_work^wor

k_time)

(

9>q=p;

ooaop=p—〉pNext;

&&}

&&selse

sop=p-〉pNext;

60b}

ooelse

oop=p->pNext;

。else//當(dāng)前作業(yè)完成時(shí),沒有作業(yè)到達(dá)得情況

。。p=p->pNext;//用q來接收最先到達(dá)得,用p來

遍歷

owhile(p!=NULL)

dd{

ooif(p->s_work>arrive_time〈q->s_work>ar

rive_time)

…q=P;

?p=p->pNext;

3}

w_finish_timeLi+l]=q->s_work、arrive—tim

e+q—〉s_work、work_time;

bb}

o}

ow_finish_time[i+1]=w_finish_time[i]+q—>

s_work、work_time;

returnq;

voidshow(int*w_finish_time,inti,PNODEq,

int*w_rel_time)

{

?w_finish_time[i+1]=w_finish_time[i]+q

—)s_work、work_time;

?w_re1_time[i+l]=w_finish_time[i+l]-q->s_

work、arrive_time;

printf("第%(1個(gè)系統(tǒng)執(zhí)行得作業(yè)到達(dá)時(shí)間:%d",i+

2,q—>s_work、arrive_time);

oprintf(”編號(hào)就是:%d",q—〉s_work、id);

printf("服務(wù)時(shí)間就是:%d\n",q—〉s_work、work_ti

me);

printf(”完成時(shí)間就是:%d",w_finish_tim

e[i+1]);

printf("周轉(zhuǎn)時(shí)間就是:%d\n",w_rel_time[i+1]);

voidshowmenu()

printf("*************************

*********\n");

。printf("請(qǐng)選擇您要執(zhí)行得命令?:\n");

printf("1:先來先服務(wù)算法\n");

。printf("2:短作業(yè)優(yōu)先算法\n”);

printf(”3:高響應(yīng)比優(yōu)先算法\n”);

oprintf("0:退出菜單"");

printf("****************************

******\n");

}

voidHRRN()

?intw_re1_time[10];

intw_finish_time[10];

floatreltime=0;

floatpriority;〃計(jì)算優(yōu)先權(quán)

?srand(time(0));

inti;

intj=0;

PNODEpHead=(PNODE)ma1loc(sizeof(NODE));

if(NULL==pHead)

(

。printf("分配失敗,程序終止!\n");

?exit(—1);

9}

oPNODEpTai1=pHead;

pTai1-)pNext=NULL;//定義該鏈表有頭結(jié)點(diǎn),

且第一個(gè)節(jié)點(diǎn)初始化為空

for(i=0;i<10;i++)〃定義了十個(gè)進(jìn)程

。{

o>PNODEpNew=(PNODE)ma1loc(sizeof(NODE));

if(NULL==pNew)

。。printf("分配失敗,程序終止!\n”);

oexit(-1);

3}

opNew—〉s_work>id=rand()%100;

?pNew—>s_work、arrive_time=rand()%10;

o?pNew—>s_work、work_time=rand()%10+1;

?pTail—>pNext=pNew;

opNew—>pNext=NULL;

?opTai1=pNew;

)

oPNODEp=pHead-)pNext;//p指向第一個(gè)節(jié)點(diǎn)

while(NULL!=p)

(

oprintf("第%d個(gè)作業(yè)得編號(hào)就是:%d\t”,j+l,p—>s_wo

rk、id);

bprintf("第%(1個(gè)作業(yè)至U達(dá)時(shí)間:%d\t",j+l,—>S_W0

rk、arrive_time);

oprintf("第%d個(gè)作業(yè)服務(wù)時(shí)間:%d\t",j1,p-)

s_work、work_time);

oprintf("\n");

op=p->pNext;

??printf("\n");

j++;

}

p=pHead—>pNext;

0PNODEq=p;//p,q都指向第一個(gè)節(jié)點(diǎn)

p=p-〉pNext;

?whi1e(p!=NULL)

0{

oif(p-)s_work、arrive_time<q一〉work、

arrive_time)

&q=P;

op=p—>pNext;

}

t>PNODEr=pHead—>pNext;〃1*也指向第一個(gè)

節(jié)點(diǎn)

,intent=0;//記錄所有節(jié)點(diǎn)數(shù)據(jù)域中到達(dá)時(shí)間最

短且相等得個(gè)數(shù)

owhile(r!=NULL)

3{

if(r->s_work^arrive—time==q->s_work>arrive

—time)

cnt++;

r=r->pNext;

)

?p=pHead—>pNext;

,while(p!=NULL)//在相等到達(dá)時(shí)間得作業(yè)中找服

務(wù)時(shí)間最短得作業(yè)

,if(cnt)1)

ooif(p->s_work>arrive_time==q->s_work>

arrive_time)

o>oif(p->s_work>work_time<q->s_work>work_ti

me)

q=P;

?op=p->pNext;

3}

bselse

…p=NULL;

}//確定q所指作業(yè)最先到達(dá)且服務(wù)時(shí)間最短

>w_finish_timeEO]=q->s_work、arrive_time+q-

>s_work、work_time;

?w_re1_time[0]=w_finish_time[0]-q—〉

s_work、arrive_time;

。printf("第1個(gè)系統(tǒng)執(zhí)行得作業(yè)到達(dá)時(shí)間:%dn,q->

s_work>arrive—time);

printf(”編號(hào)就是:%d",q—>s_work、id);

printf("服務(wù)時(shí)間就是:%d\n",q->s_work>work_tim

e);

printf("完成時(shí)間就是:%d",w_finish_time[0]);

oprintf("周轉(zhuǎn)時(shí)間就是:%d\n,w_rel_time[0]);

9p=pHead;〃尋找q得前一個(gè)節(jié)點(diǎn),方便刪掉q節(jié)點(diǎn)

while(p—>pNext!=q)

3{

>>p=p->pNext;

)

op—>pNext=q—>pNext;

ofree(q);

3q=NULL;〃已經(jīng)找到并執(zhí)行第一個(gè)進(jìn)程,執(zhí)行完之后

又將其刪除了

ofor(i=0;i<9&&!Is—empty(pHead);i++)

oprintf("現(xiàn)在系統(tǒng)還剩%d個(gè)作業(yè)!\n",cnt_wor

k(pHead));

odo_work_1(pHead,w_finish_time,i);

oq=priorit(pHead);

?oshow(w_finish_time,i,q,w_rel_time);

000p=pHead;〃尋找q得前一個(gè)節(jié)點(diǎn),方便刪掉q

節(jié)點(diǎn)

??whi1e(p—〉pNext!=q)

3{

op=p—〉pNext;

3}

p->pNext=q->pNext;

o>free(q);

>q=NULL;

)

for(j=0;j<10;j++)

3{

orel_time+=w—rel_time[j];

>}

printf(“平均周轉(zhuǎn)時(shí)間:%f\n",re1—time/10);

)

voiddo_work_l(PNODEpHead,int*w_finish_t

ime,inti)

(

PNODEp,q;

intent=0;〃計(jì)數(shù)器清0,計(jì)算當(dāng)前作業(yè)完成時(shí),系

統(tǒng)中有多少個(gè)作業(yè)已經(jīng)到達(dá)

p=pHead—>pNext;

q=P;

3whi1e(p!=NULL)

3{

ooif(p->s_work、arrive_time〈=w_finish

_timeEi])

o(

§。ent++;

…q=P;

p=p-)pNext;

else

p=p—〉pNext;

)

}//q指向當(dāng)前到達(dá)時(shí)間小于剛剛完成得作業(yè),但有可

能有另外幾個(gè)進(jìn)程也已經(jīng)到達(dá)了,所以要進(jìn)行下面得判斷

printf("系統(tǒng)中有%d個(gè)作業(yè)在當(dāng)前作業(yè)完成時(shí)已經(jīng)到達(dá)!\

n",ent);

p=pHead-)pNext;

§while(p!=NULL)

3{

if(cnt>l)//說明此時(shí)有好幾個(gè)都已經(jīng)到達(dá)了

。(

?if(p->s_work、arrive_time<=w_finish

_timeEi])

0{

op->s_work、wait=w_finish_time[i]一p

->s_work、arrive_time;

p=p—〉pNext;

sselse

od{

Osop->s_work>wait=0;

??p=p->pNext;

6b}

3}

。else〃當(dāng)前作業(yè)完成時(shí),沒有作業(yè)到達(dá)得情況

3{

。p=p->pNext;//此時(shí)p指向第一個(gè)節(jié)點(diǎn),q指

向第二個(gè)節(jié)點(diǎn),還就是找最先到達(dá)得

sbwhi1e(p!=NULL)

。(

ooif(p->s_work、arrive—time<q—〉s_work>

arrive_time)

oooq=p;

dpp->pNext;

)

w_finish_time[i+1]=q->s_work>arrive_time

+q->s_work>work—time;

oreturn;

3)

}

?w_finish_time[i+1]=w_finish_time[i]+

q->s_work、work_time;

)

PNODEpriorit(PNODEpHead)

PNODEp=pHead—〉pNext;

whi1e(p!=NULL)

if(p->s_work>wait〉0)

p->s_work>priority=(p—>s_work、wait+

p—>s_workwork_time)/p->s_work>work_time;

〃計(jì)算每一個(gè)已經(jīng)等待得進(jìn)程得優(yōu)先等級(jí)

p=p—〉pNext;

?}

oe1se

op=p->pNext;

9}

p=pHead—>pNext;

oPNODEq;

>q=p;

p=p->pNext;//p已經(jīng)指向第二個(gè)節(jié)點(diǎn)

?while(p!=NULL)

{

sif(p->s_work、wait>0)

。(

sot)if(p->s_work^priority>q->s_work^priori

ty)

dq=P;

t>bbbp=p->pNext;

&)

oelse

op=p—>pNext;

3}

oelse

ooop=p—>pNext;

}

6printf("該進(jìn)程優(yōu)先級(jí)最高,為:%f\n",q—〉s_w

ork、priority);

oreturnq;

}

實(shí)驗(yàn)結(jié)果:

系統(tǒng)自動(dòng)為每個(gè)算法模擬分配五個(gè)作業(yè),同時(shí)隨機(jī)生成作業(yè)得

編號(hào),作業(yè)得到達(dá)時(shí)間,作業(yè)估計(jì)運(yùn)行得時(shí)間。

1、先來先服務(wù)算法

■1?E:\C語言練習(xí)\Debug\100L

▲一

***********************

-M--M--M--M-一

1

務(wù)

n算法

R:

號(hào)

業(yè)

務(wù)

A業(yè)~f-

業(yè)m

2151二10

.6-sp-燈0

pA-二

否T.

業(yè)

號(hào)

務(wù)

業(yè).

22二2

第.5g1pm-

業(yè)JB

pTap-J一

否.

業(yè)

號(hào)

務(wù)

.業(yè)-.

弟7-

833:^-pm-10

廳B

業(yè)Ta-

否.ap-p-

業(yè)

業(yè)

務(wù)

號(hào)

HA二-m-3

3424二^-

廳Tr

.?B

業(yè)arap-.

業(yè)

p業(yè)

號(hào)

.務(wù)

第H-

15T05-nm8

Ar匚

廳1-

a-'燈

p二

AEap-

堂系統(tǒng)執(zhí)行的作業(yè)到達(dá)時(shí)間:0編號(hào)是:工服務(wù)時(shí)間是:8完成時(shí)間是:8周轉(zhuǎn)時(shí)

7爭(zhēng)E系:8統(tǒng)執(zhí)行的作業(yè)到達(dá)時(shí)間

11編號(hào)是:5服務(wù)時(shí)間是:2完成時(shí)間是:10周轉(zhuǎn)時(shí)

辭或統(tǒng)執(zhí)行的作業(yè)到達(dá)時(shí)間:2

編號(hào)是:3服務(wù)時(shí)間是:3完成時(shí)間是:13周轉(zhuǎn)時(shí)

於養(yǎng)統(tǒng)執(zhí)行的作業(yè)到達(dá)時(shí)間:

5編號(hào)是:2服務(wù)時(shí)間是:10完成時(shí)間是:23周轉(zhuǎn)

|Bj#:18

售統(tǒng)執(zhí)行的作業(yè)到達(dá)時(shí)間:

g7編號(hào)是:8服務(wù)時(shí)間是:10完成時(shí)間是:33周轉(zhuǎn)

間是:26

均周轉(zhuǎn)時(shí)間:14.400000

退出***?*?**?*

該算法嚴(yán)格按照各作業(yè)到達(dá)時(shí)間來為其分配進(jìn)程與資源,實(shí)

驗(yàn)得結(jié)果見截圖,最后算出該算法五個(gè)作業(yè)得平均周轉(zhuǎn)時(shí)間。

2、短作業(yè)優(yōu)先

短作業(yè)優(yōu)先算法考慮得比較多,系統(tǒng)先找出最先到達(dá)得作業(yè),

若有多個(gè)相同時(shí)間到達(dá)得作業(yè),則按照其運(yùn)行時(shí)間長短先為時(shí)間

短得服務(wù)。

T?E:\C語言練習(xí)\Debug\1001.exe-1=1回

手髓尤暨法嬴個(gè)作業(yè)到達(dá)時(shí)間:

1第1個(gè)作業(yè)服務(wù)時(shí)間:6

12第2個(gè)作業(yè)到達(dá)時(shí)間:第2個(gè)作業(yè)服務(wù)時(shí)間:4

26第3個(gè)作業(yè)到達(dá)時(shí)間:3第3個(gè)作業(yè)服務(wù)時(shí)間:4

83第4個(gè)作業(yè)到達(dá)時(shí)間:8第4個(gè)作業(yè)服務(wù)時(shí)間:1

19第5個(gè)作業(yè)到達(dá)時(shí)間:9第5個(gè)作業(yè)服務(wù)時(shí)間:7

第6個(gè)作業(yè)到達(dá)時(shí)間:1第6個(gè)作業(yè)服務(wù)時(shí)間:2

18第7個(gè)作業(yè)到達(dá)時(shí)間:8第7個(gè)作業(yè)服務(wù)時(shí)間:1

56第8個(gè)作業(yè)到達(dá)時(shí)間:4第8個(gè)作業(yè)服務(wù)時(shí)間:6

31第9個(gè)作業(yè)到達(dá)時(shí)間:7第9個(gè)作業(yè)服務(wù)時(shí)間:10

:84第10個(gè)作業(yè)到達(dá)時(shí)間:9第10個(gè)作業(yè)服務(wù)時(shí)間:4

卜系維執(zhí)行的作業(yè)到達(dá)時(shí)間11編號(hào)是I46服務(wù)時(shí)間是:2

,時(shí)間鼠3周轉(zhuǎn)時(shí)間息2

系統(tǒng)還乘19個(gè)作業(yè)!

蟠2個(gè)作業(yè)在當(dāng)前隹業(yè)完成時(shí)已經(jīng)至慳!

卜冢妹知才〒的花業(yè)到狀日由扎3維號(hào)皂,264

,E:\C語言練習(xí)\Debug\1001.exe'I=1回

:84第個(gè)作業(yè)到達(dá)時(shí)間:9第10個(gè)作業(yè)服務(wù)時(shí)間:4

扁是

達(dá)瞿

業(yè)

號(hào)

號(hào)

wT-HI司1

H:46服務(wù)時(shí)間是:2

轉(zhuǎn)i

3S2

個(gè)

7E9業(yè)I

業(yè)

業(yè)

時(shí)

當(dāng)4

i即J

業(yè)K9

丁3

h:26服務(wù)時(shí)間是:4

轉(zhuǎn)i

7S■,4

個(gè)

^業(yè)I

7E87E

還,

時(shí)

當(dāng)

^業(yè)f

一■

業(yè)

丁5

4',':

曾12服務(wù)時(shí)間是:4

11髀6

個(gè)

7業(yè)1

,

當(dāng)

7E業(yè)

還,

業(yè)

M的

丁83服務(wù)時(shí)間是:1

12會(huì)

個(gè)

W6業(yè)I

,

時(shí)

業(yè)

7E當(dāng)^I

g還

一5■

業(yè)

丁8

^:18服務(wù)時(shí)間是:工

13患5

圖.

個(gè)

^5當(dāng)I

,

?

業(yè)

業(yè)□8Xn

^刖m

AE一M

還■

4三

丁M9

U84服務(wù)時(shí)間是:4

17業(yè)5^8

業(yè)^

落-

個(gè)

4一!

,

務(wù)

時(shí)

業(yè)'-4

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論