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