资源简介

c语言,运行成功,比较基础,单道批处理系统作业调度模拟程序:采用先来先服务(FCFS),最短作业优先(SJF)和响应比高者优先(HRN)三种作业调度算法

资源截图

代码片段和文件信息

#include
#include
#include
#include

#define LENGTH sizeof(struct job)

struct job
{
int name;  //作业名 
int subtime;  //作业提交时刻(例如到达食堂的时刻) 
int runtime;  //作业所需运行时间(预估)
//char resource;  //所需资源
char state;  //作业状态:W 就绪,R 运行,F 完成 
int Tb;   //作业运行开始时刻(例如开始吃饭的时刻)
int Tc;   //作业运行完成时刻(例如吃饭完成的时刻)
int Ti;   //周转时间(完成时刻-提交时刻)
float Rp;   //后备作业响应比:Rp=(Tc-subtime)/runtime响应比可以看成带权周转时间的预期  
float Wi;    //带权周转时间 (周转时间/运行时间) Wi=(Tc-subtime)/(Tc-Tb) 
struct job * next;  //后续作业 
};
int choose=0subt=0;//选择三种优先方式中的一种、最新作业提交时刻 
struct job *head*temp;
struct job *p1*p2;
//待执行作业数、已运行作业数、作业数、总周转时间、运行完成时刻之和、运行开始时刻之和 
int len=0rlen=0num=0allTi=0allTc=0allTb=0;  
int main()
{
void input(); //输入作业信息
void sort2();  //对队列中的作业进行排序,按作业运行时间由低到高 
void sort3();  //对队列中的作业进行排序,按响应比由高到低 
void run(); //运行head指向的作业 
void printfinish(); //打印运行完成的作业 
void printend();    //打印平均周转时间:allTi/num、带权平均周转时间:allTi/(allTc-allTb)
char ch;
printf(“请输入1-31=FCFS,2=SJF3=HRN:“);
scanf(“%d“&choose);
input();
printf(“\n请输入c了解作业运行情况\n“);
--len;
++rlen;
while(len>=0)
{
ch=getchar();
if(ch==‘c‘&&len==0)
{
system(“cls“);
printf(“待执行作业个数:%d\n“len);
printf(“已执行作业个数:%d\n“rlen);
run();
printend();
break;
}
if(ch==‘c‘)
{
system(“cls“);
printf(“待执行作业个数:%d\n“len);
printf(“已执行作业个数:%d\n“rlen);
if(choose==1) 
{

}
if(choose==2) 
{
sort2();
}
if(choose==3) 
{
sort3();
}

run();
printfinish();
printf(“\n请输入c继续运行\n“);
}
}

return 0;
}

void input()  //输入作业信息
{
srand(time(0));
char ch;
for(;;)
{
printf(“\n请输入c继续输入作业信息,输入f结束输入作业信息\n“);
ch=getchar();
if(ch==‘f‘) break;
if(ch==‘c‘)
{
if(len==0)
{
head=p1=(struct job *)malloc(LENGTH);
p1->name=len+1;
p1->subtime=0;
p1->runtime=rand()%5+1;
p1->state=‘W‘;
p1->Tb=0;
p1->Tc=0;
p1->Ti=p1->Tc-p1->subtime;
p1->Rp=0;
p1->Wi=0;
printf(“**********job%d**********\n“++len);
printf(“name=%d\n“p1->name);
printf(“subtime=%d\n“p1->subtime);
printf(“runtime=%d\n“p1->runtime);
printf(“state=%c\n“p1->state);
printf(“Tb=%d\n“p1->Tb);
printf(“Tc=%d\n“p1->Tc);
printf(“Ti=%d\n“p1->Ti);
printf(“Rp=%f\n“p1->Rp);
printf(“Wi=%f\n“p1->Wi);
num=len;

}
else
{
p2=(struct job *)malloc(LENGTH);
p2->name=len+1;
p2->subtime=0;
p2->runtime=rand()%5+1;
p2->state=‘W‘;
p2->Tb=0;
p2->Tc=0;
p2->Ti=p2->Tc-p2->subtime;
p2->Rp=0;
p2->Wi=0;
printf(“**********job%d**********\n“++len);
printf(“name=%d\n“p2->name);
printf(“subtime=%d\n“p2->subtime);
printf(“runtime=%d\n“p2->runtime);
printf(“state=%c\n“p2->state);
printf(“Tb=%d\n“p2->Tb);
printf(“Tc=%d\n“p2->Tc);
printf(“Ti=%d\n“p2->Ti);
printf(“Rp=%f\n“p

评论

共有 条评论