进程调度模拟程序实验实验报告文档格式.docx

上传人:b****6 文档编号:19542096 上传时间:2023-01-07 格式:DOCX 页数:20 大小:315.45KB
下载 相关 举报
进程调度模拟程序实验实验报告文档格式.docx_第1页
第1页 / 共20页
进程调度模拟程序实验实验报告文档格式.docx_第2页
第2页 / 共20页
进程调度模拟程序实验实验报告文档格式.docx_第3页
第3页 / 共20页
进程调度模拟程序实验实验报告文档格式.docx_第4页
第4页 / 共20页
进程调度模拟程序实验实验报告文档格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

进程调度模拟程序实验实验报告文档格式.docx

《进程调度模拟程序实验实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《进程调度模拟程序实验实验报告文档格式.docx(20页珍藏版)》请在冰豆网上搜索。

进程调度模拟程序实验实验报告文档格式.docx

#include<

stdio.h>

conio.h>

string.h>

#defineMAX24

structjcb{

charname[10];

intreqtime;

intruntime;

intstartime;

intfintime;

intprio;

charstatus;

};

typedefstructjcbJCB;

voidinput(JCBjob[],int*pnum)

{

intnum;

inti;

printf("

process数:

"

);

scanf("

%d"

&

num);

for(i=0;

i<

num;

i++)

{

\n第%d个process:

\n"

i+1);

输入proc名:

%s"

job[i].name);

Priority:

job[i].prio);

要求服务时间:

job[i].reqtime);

job[i].status='

r'

;

job[i].runtime=0;

}

*pnum=num;

voidjcbprintf(JCBjcbp[],intn)

{

if(n==0)

printf("

thequeueisnull!

!

return;

\tname\tprio\trqtime\truntime\tstatus"

n;

\nN%d"

\t&

s"

jcbp[i].name);

d"

jcbp[i].prio);

jcbp[i].reqtime);

jcbp[i].runtime);

c"

jcbp[i].status);

voidbtsort(JCBbtjcb[],intn)

{

inti,j;

JCBjcbtemp;

for(j=1;

j<

j++)

n-j;

if(btjcb[i].prio<

btjcb[i+1].prio)

jcbtemp=btjcb[i];

btjcb[i]=btjcb[i+1];

btjcb[i+1]=jcbtemp;

}

}

main()

JCBjobarrived[MAX],jobfinished[MAX];

intnumarr,numfin;

intsystime=0;

inti,j,n;

JCBjcbrunning;

input(jobarrived,&

numarr);

numfin=0;

systime=0;

btsort(jobarrived,numarr);

经按priority排序后,readqueue是\n"

jcbprintf(jobarrived,numarr);

do

btsort(jobarrived,numarr);

\n\n\t\t现在系统时间%d:

\n\n"

systime);

readyqueue有\n"

jcbrunning=jobarrived[0];

numarr--;

numarr;

jobarrived[i]=jobarrived[i+1];

jcbrunning.status='

R'

jcbrunning.startime=systime;

\n\n\t\t处于运行态的作业名%s\n"

jcbrunning.name);

systime++;

jcbrunning.runtime++;

if(jcbrunning.runtime==jcbrunning.reqtime)

jobfinished[numfin]=jcbrunning;

jobfinished[numfin].status='

F'

numfin++;

else

jcbrunning.prio--;

jobarrived[numarr]=jcbrunning;

numarr++;

\n\n\t\t系统时间:

%d已经完成的有\n\n"

jcbprintf(jobfinished,numfin);

getchar();

}while((numarr!

=0));

\nCompleted!

ByeBye!

2、#include<

#defineMAX100

charname[10];

intarritime;

voidinput(JCBjcb[],int*pnum){

intnum;

inti;

printf("

进程调度程序:

scanf("

for(i=0;

i++){

\n第%d个进程:

\n"

i);

请输入进程名:

jcb[i].name);

到达时间:

jcb[i].arritime);

运行时间:

jcb[i].reqtime);

\n现在输出%d个进程"

\t%s"

jcb[i].name);

\t%d"

jcb[i].arritime);

jcb[i].reqtime);

*pnum=num;

voidjcbprintf(JCBjcbp[],intn){

\t进程名称\t运行时间"

%s"

%d"

voidbtsort(JCBbtjcb[],intn){

inti,j;

JCBjcbtemp;

for(j=1;

j++){

n-1;

if(btjcb[i].arritime>

btjcb[i+1].arritime){

jcbtemp=btjcb[i];

}

voidPrintf(JCBjob[],intn){

进程名称运行时间运行时间片\n"

%s%d%d\n"

job[i].name,job[i].reqtime,job[i].runtime);

voidmain(){

JCBjobarrived[MAX];

intnumarr,i;

JCBjcbrunning;

input(jobarrived,&

\n请按任意键继续............."

getchar();

btsort(jobarrived,numarr);

\n按到达时间排序后,就绪队列是\n"

jcbprintf(jobarrived,numarr);

jobarrived[i].runtime=0;

\n.............就绪队列是.................\n"

Printf(jobarrived,numarr);

while(numarr>

0){

jcbrunning=jobarrived[0];

jcbrunning.reqtime=jcbrunning.reqtime-1;

jcbrunning.runtime=jcbrunning.runtime+1;

\n正在执行的进程名称是%s\n"

if(jcbrunning.reqtime>

jobarrived[numarr-1]=jcbrunning;

else{

numarr--;

3、#include<

intfirsttime;

进程调度程序数目:

优先级:

jcb[i].firsttime);

jcb[i].firsttime);

\t进程名称\t优先级\t运行时间"

jcbp[i].firsttime);

进程名称优先级运行时间运行时间片\n"

%s%d%d%d\n"

job[i].name,job[i].firsttime,job[i].reqtime,job[i].runtime);

JCBjobarrived1[MAX],jobarrived2[MAX],jobarrived3[MAX],jobarrived[MAX];

intnumarr1,numarr2,numarr3,numarr,i;

numarr2=0;

numarr1=0;

numarr3=0;

jobarrived3[i]=jobarrived[i];

numarr3++;

\n.............就绪队列3是..........\n"

jcbprintf(jobarrived3,numarr3);

\n.............就绪队列2是..........\n"

jcbprintf(jobarrived2,numarr2);

\n...........就绪队列1是.............\n"

jcbprintf(jobarrived1,numarr1);

while(numarr3>

jcbrunning=jobarrived3[0];

if(jcbrunning.firsttime==3){

if(jcbrunning.reqtime>

jcbrunning.firsttime=jcbrunning.firsttime-1;

jobarrived3[0]=jcbrunning;

if(jobarrived3[0].reqtime>

jobarrived2[numarr2]=jobarrived3[0];

numarr2++;

numarr3--;

numarr3;

jobarrived3[i]=jobarrived3[i+1];

Printf(jobarrived3,numarr3);

Printf(jobarrived2,numarr2);

Printf(jobarrived1,numarr1);

while(numarr2>

jcbrunning=jobarrived2[0];

if(jcbrunning.firsttime==2){

2){

jcbrunning.reqtime=jcbrunning.reqtime-2;

jcbrunning.runtime=jcbrunning.runtime+2;

else{

jcbrunning.firsttime=jcbrunning.firsttime-1;

jcbrunning.reqtime=jcbrunning.reqtime-jcbrunning.reqtime;

jcbrunning.runtime=jcbrunning.runtime+jcbrunning.reqtime;

jobarrived2[0]=jcbrunning;

if(jobarrived2[0].reqtime>

jobarrived1[numarr1]=jobarrived2[0];

numarr1++;

numarr2--;

numarr2;

jobarrived2[i]=jobarrived2[i+1];

while(numarr1>

jcbrunning=jobarrived1[0];

if(jcbrunning.firsttime==1){

0){

jcbrunning.reqtime=jcbrunning.reqtime-jcbrunning.reqtime;

jcbrunning.runtime=jcbrunning.runtime+jcbrunning.reqtime;

numarr1--;

numarr1;

jobarriv

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

当前位置:首页 > 表格模板 > 合同协议

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

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