⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 批处理作业调度.txt

📁 操作系统 银行家算法 。。。。及课件 和课后习题答案
💻 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 + -