操作系统进程调度算法
5种方式都包含
我这里的短作业优先采用的是按照时间和短作业比较方法,判断执行的。
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include<iostream>
# include<queue>
# include<list>
#include <Windows.h>
using namespace std;
struct input{
int num;
char name;
double daoda;
double service;
}input[ ]={
{ 0, 'A', 0, 3 },
{ 1, 'B', 2, 6 },
{ 2, 'C', 4, 4 },
{ 3, 'D', 6, 5 },
{ 4, 'E', 8, 2 }
};
struct FCFS{
char name;
double wancheng;
double changetime;//平均周转时间
double powertime;//带权周转时间
}FCFS[6];
struct SJF{
char name;
double wancheng;
double changetime;//平均周转时间
double powertime;//带权周转时间
}SJF[6];
struct GXY{
char name;
double wancheng;
double changetime;//平均周转时间
double powertime;//带权周转时间
double zanshi;//存放暂时的优先权
}GXY[6];
struct RR{
char name;
double wancheng;
double changetime;//平均周转时间
double powertime;//带权周转时间
double ser;//存放任务经历的时间
}RR[6];
struct MFQ{
char name;
double wancheng;
double changetime;//平均周转时间
double powertime;//带权周转时间
double ser;
}MFQ[7];
//list<node>ListQ; //链表队列
char jincheng[6]={'A','B','C','D','E'};//进程名
int daoda[6]={0,2,4,6,8};//到达时间
int service[6]={3,6,4,5,2};//服务时间
int time[7];//到达时间排序之后的表
int duan[7];//按照作业长短排序
double FCFSchangetime=0;
double FCFSpowertime=0;
double SJFchangetime=0;
double SJFpowertime=0;
double GXYchangetime=0;
double GXYpowertime=0;
double RRchangetime=0;
double RRpowertime=0;
double MFQchangetime=0;
double MFQpowertime=0;
void shurujincheng();//1输入作业模拟情况;
void perform();//显示作业情况
void xianlaixianfuwu();//先来先服务
void performFCFS();//先来先服务算法输出时间
void paixutime();//按照到达时间排序
void duanzuoye();//短作业优先
void paixuwork();//按照作业服务时间排序
void performSJF();//输出短作业优先
void gaoxingying();//高响应比
void performGXY();//输出高响应比
void timeswitch();//时间片轮转
void performRR() ;//输出时间片轮转
void duojiMFQ();//多级反馈队列
void performMFQ();//输出多级反馈队列
int main()
{
int n = 1;
while( n!=0 )
{
printf("**************************\n") ;
printf("进程调度模拟程序:\n");
printf("1: 输入作业模拟情况\n");
printf("2: 显示作业情况\n");
printf("3: 先来先服务\n");
printf("4: 短作业优先算法\n");
printf("5: 高响应比优先算法\n");
printf("6: 时间片轮转算法\n");
printf("7: 多级反馈队列\n");
printf("8: 算法结果比较\n");
printf("0: 退出\n");
printf("请输入选择:\n");
printf("*****************************\n");
//printf("%d\n",n);
scanf("%d",&n);
switch(n)
{
case 1:
printf("\n*****************************\n");
shurujincheng();
perform();
printf("\n*****************************\n");
break;
case 2:
printf("\n*****************************\n");
perform();
printf("\n*****************************\n");
break;
case 3:
printf("\n*****************************\n");
xianlaixianfuwu();
perform();
performFCFS();
printf("\n*****************************\n");
break;
case 4:
printf("\n*****************************\n");
//duanzuoye();
duanzuoye();
perform();
performSJF();
printf("\n*****************************\n");
break;
case 5:
printf("\n*****************************\n");
gaoxingying();
perform();
performGXY();
printf("\n*****************************\n");
break;
case 6:
printf("\n*****************************\n");
timeswitch();
perform();
performRR();
printf("\n*****************************\n");
break;
case 7:
printf("\n*****************************\n");
duojiMFQ();
perform();
performMFQ();
printf("\n*****************************\n");
break;
case 8:
printf("\n*****************************\n");
perform();
printf("\n*****************************\n");
performFCFS();
printf("\n*****************************\n");
performSJF();
printf("\n*****************************\n");
performGXY();
printf("\n*****************************\n");
performRR();
printf("\n*****************************\n");
performMFQ();
printf("\n*****************************\n");
break;
case 0:
printf("\n*****************************\n");
n=0;
printf("\n*****************************\n");
break;
default :
printf("\n输入错误。请重新输入:\n");
continue;
}
}
}
void shurujincheng()
{
int n;
printf("输入5个作业:\n");
printf("\n输入进程信息(进程名,到达时间,服务时间):\n");
for(int i=0;i<5;i++)
{
getchar();
printf("进程 %d :",i);
input[i].name=getchar();
printf("%c\n",input[i].name);
printf("到达时间:");
scanf("%lf",&input[i].daoda);
printf("服务时间:");
scanf("%lf",&input[i].service);
input[i].num=i;
}
return ;
}
void perform()
{
printf("进程名 :");
for(int i=0;i<5;i++)
{
printf("%8c",input[i].name);
}
printf("\n");
printf("到达时间 :");
for(int i=0;i<5;i++)
{
printf("%8.2lf",input[i].daoda);
}
printf("\n");
printf("服务时间 :");
for(int i=0;i<5;i++)
{
printf("%8.2lf",input[i].service);
}
printf("\n");
return ;
}
void xianlaixianfuwu()//先来先服务
{
int daoda=0;//到达时间
int ser=0;//服务时间
daoda=input[time[0]].daoda+daoda;
paixutime();
for(int i=0 ; i<5 ; i++)
{
if(daoda >= input[time[i]].daoda)//到达时间总是小于服务时间
{
FCFS[time[i]].name=input[time[i]].name;
FCFS[time[i]].wancheng=input[time[i]].service+daoda;
FCFS[time[i]].changetime=FCFS[time[i]].wancheng-input[time[i]].daoda;
FCFS[time[i]].powertime=FCFS[time[i]].changetime/input[time[i]].service;
daoda=daoda+input[time[i]].service;
}
else
{
daoda=input[time[i]].daoda;
FCFS[time[i]].name=input[time[i]].name;
FCFS[time[i]].wancheng=input[time[i]].service+daoda;
FCFS[time[i]].changetime=FCFS[time[i]].wancheng-input[time[i]].daoda;
FCFS[time[i]].powertime=FCFS[time[i]].changetime/input[time[i]].service;
daoda=daoda+input[time[i]].service;
}
}
return ;
}
void performFCFS()
{
double sumchange=0;
double sumpower=0;
//printf("\n");
printf("完成时间 :");
for(int i=0;i<5;i++)
{
printf("%8.2lf",FCFS[i].wancheng);
}
printf("\n");
printf("周转时间 :");
for(int i=0;i<5;i++)
{
printf("%8.2lf",FCFS[i].changetime);
sumchange+=FCFS[i].changetime;
}
printf("\n");
printf("带全周转时间:");
for(int i=0;i<5;i++)
{
printf("%8.2lf",FCFS[i].powertime);
sumpower+=FCFS[i].powertime;
}
printf("\n");
FCFSchangetime=sumchange/5;
FCFSpowertime=sumpower/5;
printf("平均周转时间\t\t带权周转时间\t\t\n");
printf("%8.2lf\t\t%8.2lf\t\t\n",FCFSchangetime,FCFSpowertime);
return ;
}
void duanzuoye()//短作业优先
{
paixutime();
paixuwork();
int daoda=0;//到达时间
//int ser=0;
int i=0,j=0;
int flag[7];
memset(flag,0,sizeof(flag));
if(input[time[i]].name!=input[duan[j]].name)
{
daoda+=input[time[i]].daoda;
SJF[time[i]].wancheng=daoda+input[time[i]].service;
daoda+=input[time[i]].service;
flag[time[i]]=1;
SJF[time[i]].changetime=SJF[time[i]].wancheng-input[time[i]].daoda;
SJF[time[i]].powertime=SJF[time[i]].changetime/input[time[i]].service;
}
printf("%d\n ",daoda);
for(int k=1;k<5;k++)
{
j=0;
i=0;
while(flag[time[i]]==1)
{
i++;
}//保证每次比较的都是没有执行过的
while(flag[duan[j]]==1)
{
j++;
}//保证每次比较的都是没有执行过的
//printf("%c %c\n",input[time[i]].name,input[duan[j]].name);
if(daoda<input[time[i]].daoda && daoda<input[duan[j]].daoda)//保证2个都还没到达
{
//printf("1%c %c\n",input[time[i]].name,input[duan[j]].name);
if(flag[time[i]]==0)
{
if(input[time[i]].daoda < input[duan[i]].daoda)
{
daoda=daoda+input[time[i]].daoda;
SJF[time[i]].wancheng=daoda+input[time[i]].service;
daoda+=input[time[i]].service;
flag[time[i]]=1;
SJF[time[i]].changetime=SJF[time[i]].wancheng-input[time[i]].daoda;
SJF[time[i]].powertime=SJF[time[i]].changetime/input[time[i]].service;
}
else
{
daoda+=input[duan[j]].daoda;
SJF[duan[j]].wancheng=daoda+input[duan[j]].service;
daoda+=input[duan[j]].service;
flag[duan[j]]=1;
SJF[duan[j]].changetime=SJF[duan[j]].wancheng-input[duan[j]].daoda;
SJF[duan[j]].powertime=SJF[duan[j]].changetime/input[duan[j]].service;
}
}
printf("%d \n ",daoda);
}
else if(input[time[i]].name==input[duan[j]].name && daoda>input[time[i]].name)//两个都到达了
{
// printf("2%c %c\n",input[time[i]].name,input[duan[j]].name);
if(input[time[i]].service < input[duan[j]].service)
{
//daoda=input[time[i]].daoda;
//printf("%d",daoda);
SJF[time[i]].wancheng=daoda+input[time[i]].service;
daoda+=input[time[i]].service;
flag[time[i]]=1;
SJF[time[i]].changetime=SJF[time[i]].wancheng-input[time[i]].daoda;
SJF[time[i]].powertime=SJF[time[i]].changetime/input[time[i]].service;
}
else
{
//daoda=input[duan[j]].daoda;
//printf("%d\n ",daoda);
SJF[duan[j]].wancheng=daoda+input[duan[j]].service;
daoda+=input[duan[j]].service;
flag[duan[j]]=1;
SJF[duan[j]].changetime=SJF[duan[j]].wancheng-input[duan[j]].daoda;
SJF[duan[j]].powertime=SJF[duan[j]].changetime/input[duan[j]].service;
}
}
else if(input[time[i]].daoda <daoda && input[duan[j]].daoda>daoda)//两个都到达了,此时比较的是
{
//printf("3%c %c\n",input[time[i]].name,input[duan[j]].name);
//if(input[time[i]].service < input[duan[j]].service )
{
//daoda=input[time[i]].daoda;
//printf("%d\n",daoda);
//printf("%c\n",input[time[i]].name);
SJF[time[i]].wancheng=daoda+input[time[i]].service;
daoda+=input[time[i]].service;
flag[time[i]]=1;
SJF[time[i]].changetime=SJF[time[i]].wancheng-input[time[i]].daoda;
SJF[time[i]].powertime=SJF[time[i]].changetime/input[time[i]].service;
}
}
else if(input[time[i]].daoda >daoda && input[duan[j]].daoda< daoda)
{
//printf("%d\n",daoda);
//printf("%c\n",input[duan[j]].name);
SJF[duan[j]].wancheng=daoda+input[duan[j]].service;
daoda+=input[duan[j]].service;
flag[duan[j]]=1;
SJF[duan[j]].changetime=SJF[duan[j]].wancheng-input[duan[j]].daoda;
SJF[duan[j]].powertime=SJF[duan[j]].changetime/input[duan[j]].service;
}
else
{
//printf("3%c %c\n",input[time[i]].name,input[duan[j]].name);
if(input[time[i]].service < input[duan[j]].service )
{
//daoda=input[time[i]].daoda;
//printf("%d\n",daoda);
//printf("%c\n",input[time[i]].name);
SJF[time[i]].wancheng=daoda+input[time[i]].service;
daoda+=input[time[i]].service;
flag[time[i]]=1;
SJF[time[i]].changetime=SJF[time[i]].wancheng-input[time[i]].daoda;
SJF[time[i]].powertime=SJF[time[i]].changetime/input[time[i]].service;
}
else
{
//daoda=input[duan[j]].daoda;
//printf("%d\n",daoda);
//printf("%c\n",input[duan[j]].name);
SJF[duan[j]].wancheng=daoda+input[duan[j]].service;
daoda+=input[duan[j]].service;
flag[duan[j]]=1;
SJF[duan[j]].changetime=SJF[duan[j]].wancheng-input[duan[j]].daoda;
SJF[duan[j]].powertime=SJF[duan[j]].changetime/input[duan[j]].service;
}
}
}
return ;
}
void performSJF()
{
double sumchange=0;
double sumpower=0;
//printf("\n");
printf("完成时间 :");
for(int i=0;i<5;i++)
{
printf("%8.2lf",SJF[i].wancheng);
}
printf("\n");
printf("周转时间 :");
for(int i=0;i<5;i++)
{
printf("%8.2lf",SJF[i].changetime);
sumchange+=SJF[i].changetime;
}
printf("\n");
printf("带全周转时间:");
for(int i=0;i<5;i++)
{
printf("%8.2lf",SJF[i].powertime);
sumpower+=SJF[i].powertime;
}
printf("\n");
SJFchangetime=sumchange/5;
SJFpowertime=sumpower/5;
printf("平均周转时间\t\t带权周转时间\t\t\n");
printf("%8.2lf\t\t%8.2lf\t\t\n",SJFchangetime,SJFpowertime);
return ;
}
void gaoxingying()
{
paixutime();
int flag[7];
int num[7];
int daoda=0;
memset(flag,0,sizeof(flag));
daoda+=input[time[0]].daoda;
GXY[time[0]].wancheng=daoda+input[time[0]].service;
daoda+=input[time[0]].service;
flag[time[0]]=1;
GXY[time[0]].changetime=GXY[time[0]].wancheng-input[time[0]].daoda;
GXY[time[0]].powertime=GXY[time[0]].changetime/input[time[0]].service;
int zanshi[7];
memset(zanshi,0,sizeof(zanshi));
int maxnum=0;
int max=0;
for(int i=1;i<5;i++)
{
if(daoda < input[time[i]].daoda)//还没到
{
printf("%c ",input[time[i]].name);
daoda=input[time[i]].daoda;
GXY[time[i]].wancheng=daoda+input[time[i]].service;
daoda+=input[time[i]].service;
flag[time[i]]=1;
GXY[time[i]].changetime=GXY[time[i]].wancheng-input[time[i]].daoda;
GXY[time[i]].powertime=GXY[time[i]].changetime/input[time[i]].service;
}
else//已经到了
{
for(int j=1;j<5;j++)//找到已经到了的 ,算出优先权存放起来
{
if(time[j]<daoda)
{
if(flag[time[j]]==0)
{
printf("%c ",input[time[j]].name);
//printf("%d \n",daoda);
//GXY[time[j]].wancheng=;
//daoda+=input[time[j]].service;
zanshi[time[j]]=1;
GXY[time[j]].zanshi=(daoda+input[time[j]].service-input[time[j]].daoda)/input[time[j]].service+1;
//GXY[time[j]].changetime=GXY[time[j]].wancheng-input[time[j]].daoda;
//GXY[time[j]].powertime=GXY[time[j]].changetime/input[time[j]].service;
}
}
}
for(int j=1;j<5;j++)
{
if(zanshi[time[j]]==1)
{
if(max<GXY[time[j]].zanshi)
{
max=GXY[time[j]].zanshi;
maxnum=time[j];
}
}
}
memset(zanshi,0,sizeof(zanshi));
//daoda=input[time[i]].daoda;
printf("%c ",input[maxnum].name);
printf("%d \n",daoda);
GXY[maxnum].wancheng=daoda+input[maxnum].service;
daoda+=input[maxnum].service;
flag[maxnum]=1;
GXY[maxnum].changetime=GXY[maxnum].wancheng-input[maxnum].daoda;
GXY[maxnum].powertime=GXY[maxnum].changetime/input[maxnum].service;
maxnum=0;
max=0;
}
}
return ;
}
void performGXY()
{
double sumchange=0;
double sumpower=0;
//printf("\n");
printf("完成时间 :");
for(int i=0;i<5;i++)
{
printf("%8.2lf",GXY[i].wancheng);
}
printf("\n");
printf("周转时间 :");
for(int i=0;i<5;i++)
{
printf("%8.2lf",GXY[i].changetime);
sumchange+=GXY[i].changetime;
}
printf("\n");
printf("带全周转时间:");
for(int i=0;i<5;i++)
{
printf("%8.2lf",GXY[i].powertime);
sumpower+=GXY[i].powertime;
}
printf("\n");
GXYchangetime=sumchange/5;
GXYpowertime=sumpower/5;
printf("平均周转时间\t\t带权周转时间\t\t\n");
printf("%8.2lf\t\t%8.2lf\t\t\n",GXYchangetime,GXYpowertime);
return ;
}
void timeswitch()//时间片轮转
{
queue<int>q;
int daoda=0;
int num;
int zanshi=0;//存放没用完的时间片;
int z=0;
int flag[7];
memset(flag,0,sizeof(flag));
printf("输入时间片长度:\n");
scanf("%d",&num);
//printf("%d",num);
paixutime();
q.push(time[0]);
flag[0]=1;
for(int i=0;i<5;i++)
{
RR[i].changetime=0;
RR[i].wancheng=0;
RR[i].ser=0;
RR[i].powertime=0;
}
while(!q.empty())
{
//printf("q.size:%d \n",q.size());
//printf("daoda:%d zanshi:%d\n",daoda,zanshi);
daoda+=num;
for(int i=1;i<5;i++)
{
if(daoda>=input[time[i]].daoda &&flag[time[i]]==0)
{
q.push(input[time[i]].num);
flag[time[i]]=1;
//printf("进入队列:%c \n",input[time[i]].name);
}
}
if((RR[q.front()].ser+num) >= input[q.front()].service)//任务可以执行完
{
zanshi=num-(input[q.front()].service-RR[q.front()].ser);
//printf(" 任务完成:%c 到达时间:%d 剩余时间片:%d\n",input[q.front()].name,daoda,zanshi);
daoda=daoda-zanshi;
RR[q.front()].ser=input[q.front()].service;
RR[q.front()].wancheng=daoda;
RR[q.front()].changetime=RR[q.front()].wancheng-input[q.front()].daoda;
RR[q.front()].powertime=RR[q.front()].changetime/input[q.front()].service;
q.pop();
}
else //任务执行不完
{
RR[q.front()].ser+=num;
//printf("运行名字:%c 服务:%.2lf ",input[q.front()].name,RR[q.front()].ser);
//printf(" 任务未完成:%c 到达:%d \n",input[q.front()].name,daoda);
z=q.front();
q.push(z);
//printf("进入队列 %c \n",input[q.back()].name);
q.pop();
zanshi=0;
}
}
}
void performRR()
{
double sumchange=0;
double sumpower=0;
//printf("\n");
printf("完成时间 :");
for(int i=0;i<5;i++)
{
printf("%8.2lf",RR[i].wancheng);
}
printf("\n");
printf("周转时间 :");
for(int i=0;i<5;i++)
{
printf("%8.2lf",RR[i].changetime);
sumchange+=RR[i].changetime;
}
printf("\n");
printf("带全周转时间:");
for(int i=0;i<5;i++)
{
printf("%8.2lf",RR[i].powertime);
sumpower+=RR[i].powertime;
}
printf("\n");
RRchangetime=sumchange/5;
RRpowertime=sumpower/5;
printf("平均周转时间\t\t带权周转时间\t\t\n");
printf("%8.2lf\t\t%8.2lf\t\t\n",RRchangetime,RRpowertime);
return ;
}
void duojiMFQ()//多级反馈队列
{
int daoda=0;
int num=0;
int zanshi=0;//存放没用完的时间片;
int z=0;
int flag[7],wan[7];//wan标记完成与否,flag标记进去没
memset(flag,0,sizeof(flag));
memset(flag,0,sizeof(wan));
paixutime();
//q.push(time[0]);
flag[0]=1;
printf("申请队列数:\n");
int n;
scanf("%d",&n);
queue<int>q[n];
q[0].push(time[0]);
int index=0;
for(int i=0;i<5;i++)
{
MFQ[i].changetime=0;
MFQ[i].wancheng=0;
MFQ[i].ser=0;
MFQ[i].powertime=0;
}
while(1)
{
for(int i=0;i<5;i++)//退出条件:所有的都执行了
{
if(wan[i]==1)
{
if(i==4)
{
printf("%d\n",i);
return ;
}
}
else
{
break;
}
}
num=index+1;
daoda+=num;//到达时间加运行时间
printf("daoda时间:%d 运行时间: %d\n",daoda,index+1);
for(int i=1;i<5;i++)//加入
{
if(daoda >= input[time[i]].daoda &&flag[time[i]]==0)
{
q[0].push(time[i]);
flag[time[i]]=1;
printf("进入队列的是 %c\n",input[time[i]].name);
}
}
if((MFQ[q[index].front()].ser+num) >= input[q[index].front()].service)//任务可以执行完
{
zanshi=num-(input[q[index].front()].service-MFQ[q[index].front()].ser);
printf(" 任务完成:%c 到达时间:%d \n",input[q[index].front()].name,daoda);
daoda=daoda-zanshi;
MFQ[q[index].front()].ser=input[q[index].front()].service;
MFQ[q[index].front()].wancheng=daoda;
MFQ[q[index].front()].changetime=MFQ[q[index].front()].wancheng-input[q[index].front()].daoda;
MFQ[q[index].front()].powertime=MFQ[q[index].front()].changetime/input[q[index].front()].service;
printf("完成时间:%d \n",MFQ[q[index].front()].wancheng);
wan[time[q[index].front()]]=1;
q[index].pop();
}
else //任务执行不完
{
MFQ[q[index].front()].ser+=num;
printf("运行名字:%c 服务:%.2lf ",input[q[index].front()].name,MFQ[q[index].front()].ser);
printf(" 任务未完成:%c 到达:%d \n",input[q[index].front()].name,daoda);
z=q[index].front();
if(index<(n-1))
{
q[index+1].push(z);
printf("%d %d \n",n-1,index+1);
}
else
{
q[index].push(z);
}
//printf("进入队列 %c 此时需转换队列 %d \n",input[q[index+1].back()].name,index+1);
q[index].pop();
zanshi=0;
}
for(int j=0; j<n;j++)
{
if(q[j].size()!=0)
{
index=j;
break;
}
/*if(q[index].size()!=0)
{
break;
}*/
}
}
return ;
}
void performMFQ()//输出多级反馈队列
{
double sumchange=0;
double sumpower=0;
//printf("\n");
printf("完成时间 :");
for(int i=0;i<5;i++)
{
printf("%8.2lf",MFQ[i].wancheng);
}
printf("\n");
printf("周转时间 :");
for(int i=0;i<5;i++)
{
printf("%8.2lf",MFQ[i].changetime);
sumchange+=MFQ[i].changetime;
}
printf("\n");
printf("带全周转时间:");
for(int i=0;i<5;i++)
{
printf("%8.2lf",MFQ[i].powertime);
sumpower+=MFQ[i].powertime;
}
printf("\n");
MFQchangetime=sumchange/5;
MFQpowertime=sumpower/5;
printf("平均周转时间\t\t带权周转时间\t\t\n");
printf("%8.2lf\t\t%8.2lf\t\t\n",MFQchangetime,MFQpowertime);
return ;
}
void paixutime()
{
int zanshi1[6];
int zanshi2[6];
int num;
for(int i=0;i<5;i++)
{
zanshi1[i]=input[i].daoda;
zanshi2[i]=input[i].num;
}
for(int i=0;i<5;i++)
{
for(int j=i+1;j<5;j++)
{
if(zanshi1[i]>zanshi1[j])
{
num=zanshi2[i];
zanshi2[i]=zanshi2[j];
zanshi2[j]=num;
num=zanshi1[i];
zanshi1[i]=zanshi1[j];
zanshi1[j]=num;
}
}
}
for(int i=0;i<5;i++)
{
time[i]=zanshi2[i];
printf("%d ",time[i]);
}//排序,按照到达时间长短
printf("\n");
}
void paixuwork()
{
int zanshi1[6];
int zanshi2[6];
int num;
for(int i=0;i<5;i++)
{
zanshi1[i]=input[i].service;
zanshi2[i]=input[i].num;
}
for(int i=0;i<5;i++)
{
for(int j=i+1;j<5;j++)
{
if(zanshi1[i]>zanshi1[j])
{
num=zanshi2[i];
zanshi2[i]=zanshi2[j];
zanshi2[j]=num;
num=zanshi1[i];
zanshi1[i]=zanshi1[j];
zanshi1[j]=num;
}
}
}
for(int i=0;i<5;i++)
{
duan[i]=zanshi2[i];
printf("%d ",duan[i]);
}//排序,按照到达时间长短
printf("\n");
return ;
}
运行结果
实验输入需要先执行了3,4,5,6,7步,才可以执行2,显示所有作业情况
输入数据情况
输入数据情况
执行先来先服务执行短作业优先
执行高响应比优先
蓝色字部分是过程中的测试可以后续自己删掉
时间片轮转
多级反馈队列,过程可以自己注销
多级反馈队列所有过程最后结果输出所有过程最后结果输出