📄 sys_tem.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 + -