实验2 - 作业调度实验Word格式文档下载.docx

上传人:b****1 文档编号:13179621 上传时间:2022-10-07 格式:DOCX 页数:24 大小:65.86KB
下载 相关 举报
实验2 - 作业调度实验Word格式文档下载.docx_第1页
第1页 / 共24页
实验2 - 作业调度实验Word格式文档下载.docx_第2页
第2页 / 共24页
实验2 - 作业调度实验Word格式文档下载.docx_第3页
第3页 / 共24页
实验2 - 作业调度实验Word格式文档下载.docx_第4页
第4页 / 共24页
实验2 - 作业调度实验Word格式文档下载.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

实验2 - 作业调度实验Word格式文档下载.docx

《实验2 - 作业调度实验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验2 - 作业调度实验Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。

实验2 - 作业调度实验Word格式文档下载.docx

charstate;

structjcb*link;

}*ready=NULL,*p;

typedefstructjcbJCB;

intinput()

{intnum,i,t=0;

voidsort();

printf("

\n请输入作业个数:

"

);

scanf("

%d"

&

num);

for(i=1;

i<

=num;

i++)

{printf("

\n作业%d"

i);

p=(JCB*)malloc(sizeof(JCB));

\n作业名:

%s"

p->

name);

\n作业运行时间:

scanf("

p->

ntime);

htime=t;

p->

state='

w'

;

link=NULL;

sort();

t++;

}

returnt;

voidsort()

{JCB*flag;

if(ready==NULL)ready=p;

else{flag=ready;

while(flag->

link!

=NULL)flag=flag->

link;

flag->

link=p;

voidshow()

{JCB*pr;

\n***正在运行的作业是:

%s"

printf("

\nname\thtime\tntime\tstate\n"

%s\t"

%d\t"

htime);

%c\t"

state);

\n\n***就绪队列"

for(pr=ready;

pr!

=NULL;

pr=pr->

link)

{

pr->

voidrunning()

\n作业[%s]已经完成\n"

free(p);

main()

charc;

intt=0;

inttb,tc,ti,wi;

inttis=0,wis=0,i=0;

t=input();

while(ready!

=NULL)

{c=getchar();

++i;

p=ready;

ready=p->

r'

tb=t;

show();

//printf("

\npressanykeytocontinue..."

c=getchar();

running();

tc=tb+p->

ntime;

//完成时间ti=tc-p->

htime;

//周转时间tis+=ti;

wi=ti/p->

//平均带权周转

wis+=wi;

\n作业%d开始:

\n"

t);

\n作业[%d]完成:

\n"

t);

\n周转时间:

%d\n"

ti);

\n带权周转时间:

%d\n"

wi);

t=t+p->

c=getchar();

\n***所有作业都已经完成"

\n总周转时间:

tis/i);

\n总带权周转时间:

wis/i);

运行结果:

2.多道程序系统的作业调度模拟程序(采用基于先来先服务的调度算法)

#include<

stdio.h>

#include<

stdlib.h>

#definegetjch(type)(type*)malloc(sizeof(type))

#defineN10

structjcb{/*定义作业控制块PCB*/charname[10];

floatneedtime;

/*运行时间*/

floatarrivetime;

/*提交时刻*/floatstorage[N];

/*系统资源*/

structjcb*link;

}*ready=NULL,*pb=NULL,*p;

floatTc,Ti,Wi,T=0;

/*完成时刻,周转时间,带权周转时间,时间量*/

floatTiSum=0,WiSum=0;

/*平均周转时间,带权a平均周转时间*/

floatsource[N];

intn;

voidinput();

/*输入作业信息*/

intspace();

/*返回就绪队列中作业的数目*/

voidfcfs();

/*先来先服务算法*/

voiddisp(JCB*pr);

/*显示相应的作业*/

voidrunning();

/*运行作业组*/voiddestroy();

/*撤销作业*/voidinput()/*建立作业控制块函数*/

inti,k,num;

请输入所拥有的资源种类:

n);

输入系统所拥有资源数:

for(i=0;

n;

资源[%d]:

%f"

source[i]);

\n输入作业数量:

for(i=0;

num;

\n作业号[%d]:

p=getjch(JCB);

输入作业名:

输入提交时间:

arrivetime);

输入运行时间:

needtime);

输入所需资源数:

for(k=0;

k<

k++)

storage[k]);

fcfs();

intspace()

intl=0;

JCB*pr=ready;

while(pr!

l++;

return(l);

voiddisp(JCB*pr)/*建立作业显示函数,用于显示当前作业*/

inti;

\n%6s\t%6s\t%6s\t"

"

作业名"

运行时间"

提交时刻"

资源[%d]\t"

\n%6s\t%6.2f\t\t%6.2f\t"

name,pr->

needtime,pr-

>

\t%6.2f"

storage[i]);

voiddestroy()/*建立作业撤消函数(作业运行结束,撤消作业)*/

free(p);

voidcheck()

JCB*first,*fir,*p;

intflag=0,i,test=0;

first=pb;

while(first&

&

(T>

=first->

arrivetime)&

(flag==0))

if(source[i]>

storage[i])source[i]=source[i]-first->

storage[i];

else

test=1;

if(test==0)

p=first;

first=first->

if(ready==NULL)

ready=p;

else

fir=ready;

while(fir->

fir=fir->

fir->

flag=1;

pb=first;

voidfcfs()

JCB*first,*second;

intins=0;

if((pb==NULL)||(p->

arrivetime<

pb->

arrivetime))

link=pb;

pb=p;

first=pb;

second=first->

while(second!

if(p->

second->

arrivetime)

link=second;

second=NULL;

first->

ins=1;

first=first->

second=second->

i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 自我管理与提升

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1