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

📄 sys_tem.h

📁 课程设计的目的 本设计的目的是:加深对进程概念及进程管理各部分内容的理解;熟悉FCFS和SPF两种进程调度算法。 课程设计的要求 (1)设计一个完整的进程调度系统
💻 H
字号:
#define default_memorysize 20*1024  //默认内存大小20MB
#define default_blocksize 1024        //默认物理块大小1KB
#define default_blockmaxnumber 2000
#define fangcunxuliesize 10
#include "iostream"
#include "process.h"
#include  <stdlib.h>   
 #include <time.h>
#include "windows.h"
using namespace std;
#define error 0
class sys
{
public:
     int n;
	 int time;
	 PCBQueue ready;       //就绪队列
	 PCBNode ExecuteProcess;
sys()
 {  n=0;
    time=0;
	ExecuteProcess=null;
 }

PCBNode createprocess()
{PCBNode p;
p=new PCB;
 cout<<"请输入进程名字:"<<endl;
 char pname[50];
 cin>>pname;
 strcpy(p->name,pname);
 p->flag=++n;
 cout<<"请输入进程的大小:"<<endl;
 long psize;
 cin>>psize;
 p->size=psize;
 cout<<"输入创建时间:"<<endl;
 cin>>p->arrive;
 if(p->arrive<0) return null;
 cout<<"输入服务时间:"<<endl;
 cin>>p->server;
 cout<<"进程创建成功。"<<endl;
return p;
}

void FIFO()
{   time=0;
	cout<<"-------------------------------------------------------------------------"<<endl;
	cout<<setiosflags(ios::left);
	cout<<setw(4)<<"序号"<<setw(10)<<"进程名"<<setw(10)<<"进程标识"<<setw(10)<<"到达时间"<<setw(10)<<"开始时间"<<setw(10)<<"服务时间"<<setw(10)<<"周转时间"<<setw(10)<<"带权周转时间"<<endl;
	int j=0;
	while(!ready.isnull())
	{
      PCB *p,*q;
	  ready.outqueue(p);
	  for(int i=0;i<ready.number();i++)
	  { ready.outqueue(q);
	  if(p->arrive<=q->arrive) {ready.inqueue(q);}
	  if(p->arrive>q->arrive) {ready.inqueue(p);p=q;}
      }
     ExecuteProcess=p;
	while(ExecuteProcess->arrive>time)
      time++;
	ExecuteProcess->start=time;
	cout<<setw(4)<<j<<setw(10)<<ExecuteProcess->name<<setw(10)
		<<ExecuteProcess->flag<<setw(10)<<ExecuteProcess->arrive<<setw(10)
		<<ExecuteProcess->start<<setw(10)<<ExecuteProcess->server<<setw(10)
		<<ExecuteProcess->start-ExecuteProcess->arrive+ExecuteProcess->server<<setw(10)<<(float)((ExecuteProcess->start-ExecuteProcess->arrive+ExecuteProcess->server)/ExecuteProcess->server)<<endl;
	time=time+ExecuteProcess->server;j++;

	}
	cout<<"-------------------------------------------------------------------------"<<endl;
}
void SPF()
{   time=0;
	cout<<"-------------------------------------------------------------------------"<<endl;
	cout<<setiosflags(ios::left);
	cout<<setw(4)<<"序号"<<setw(10)<<"进程"<<setw(10)<<"进程标识"
		<<setw(10)<<"到达时间"<<setw(10)<<"开始时间"<<setw(10)<<"服务时间"<<setw(10)<<"周转时间"<<setw(10)<<"带权周转时间"<<endl;
	int j=0;
	while(!ready.isnull())
	{ 
		

	  PCB *p,*q;
	  ready.outqueue(p);
	  for(int i=0;i<ready.number();i++)
	  { ready.outqueue(q);
	  if(p->arrive<q->arrive) {ready.inqueue(q);}                                                
	  if(p->arrive==q->arrive) {if(p->server<=q->server) ready.inqueue(q);else {ready.inqueue(p);p=q;}}         
	  if(p->arrive>q->arrive) {ready.inqueue(p);p=q;}
      }

     ExecuteProcess=p;
	while(ExecuteProcess->arrive>time)
      time++;
 

        ExecuteProcess->start=time;
	cout<<setw(4)<<j<<setw(10)<<ExecuteProcess->name<<setw(10)
		<<ExecuteProcess->flag<<setw(10)<<ExecuteProcess->arrive<<setw(10)
		<<ExecuteProcess->start<<setw(10)<<ExecuteProcess->server<<setw(10)
		<<ExecuteProcess->start-ExecuteProcess->arrive+ExecuteProcess->server<<setw(10)<<(float)((ExecuteProcess->start-ExecuteProcess->arrive+ExecuteProcess->server)/ExecuteProcess->server)<<endl;
	time=time+ExecuteProcess->server;j++;
	}
	cout<<"-------------------------------------------------------------------------"<<endl;

}








~sys()
{
 if(ExecuteProcess)
	free(ExecuteProcess);
}
};




	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -