📄 批处理作业调度.txt
字号:
// 批处理.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream.h>
#define num 5
struct jcb
{
char name[4]; //作业名
int length; //作业长度,所需主存大小
int printer; //作业执行所需打印机的数量
int tape; //作业执行所需磁带机的数量
int runtime; //作业估计的执行时间
int waittime; //作业在输入井中的等待时间
struct jcb *next;//指向下一个作业控制块的指针
}; //作业控制块类型定义
jcb k[num]={{"p1",50,2,2,10,28},{"p2",60,2,1,14,28},{"p3",100,1,2,4,10},{"p4",20,1,1,8,20},{"p5",65555,1,0,10,10}};
jcb *head; //作业队列头指针定义
int tape,printer;
long int memory;
void shedule(int);
void main()
{
int i=0;
int size=0;
jcb *p;
memory=65536;
tape=4;
printer=2;
head=NULL;
cout<<"等待运行的作业的数目: "<<num<<endl;
cout<<endl;
while( i<num)
{
p=(jcb *)new(jcb);
p=&k[i];
cout<<"就绪队列中第"<<i<<"号作业"<<endl;
cout<<"作业名:"<<p->name<<" ";
cout<<"作业大小:"<<p->length<<" ";
cout<<"磁带机数:"<< p->tape<<" ";
cout<<"打印机数:"<<p->printer<<" ";
cout<<"等待时间:"<<p->waittime<<" ";
cout<<"估计执行时间:"<<p->runtime<<endl;
cout<<endl;
p->next=head;
head=p;
size+=p->length;
if(size>memory) {cout<<"内存不足!"<<endl;break;}
i+=1;
}
shedule(size);
}
void shedule(int size)
{
float xk,k;
jcb *p,*q,*s,*t;
cout<<"得到内存的作业完成顺序:";
do
{
p=head;
s=NULL;
q=NULL;
k=0;
while(p!=NULL)
{
if(p->length<=memory && p->tape<=tape && p->printer<=printer)
{
xk=(float)(p->waittime)/(p->runtime);
if(q==NULL||xk>k) {k=xk;q=p;t=s;}
}
s=p;
p=p->next;
}
if(q!=NULL)
{
if(t==NULL)
head=head->next;
else t->next=q->next;
cout<<q->name<<" ";
}
}while(q!=NULL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -