#include <iostream>
using namespace std;
#define Max_Process 50 //允许创建最大进程数
#define Max_Rom_Block 128 //最大内存块
#define Max_Length_Name 16 //进程名最大宽度
#define Max_PageOfProcess 128 //每个进程能够分配最大页数
#define CreateProcess '1' //创建进程标示符
#define TerminateProcess '2' //撤销进程标示符
#define DisplayMemory '3' //显示内存标示符
#define Exit '4' //退出标示符
int mBitmap[Max_Rom_Block]; //内存分配状态标志
int total=Max_Rom_Block; //当前剩余未分配进程块
int NumOfProcess=0; //内存中的进程数
struct pcb{
char name[Max_Length_Name];
char page[Max_PageOfProcess];
int length;
char pcbid;
int flag;
}pcb,pcbblock[Max_Process]; //pcb结构体定义
typedef struct queue
{
struct queue *first;
int PcbId;
struct queue *next;
}Queue,*PQueue; //进程创建队列结构体
PQueue Head,Tail; //定义队列头尾指针
void Init_Queue(); //初始化队列
void Insert_Queue(int id); //插入节点
void Delete_Queue(int id); //删除队尾节点
struct pcb Create_Process(char *name, int length,int id); //创建进程
struct pcb Terminate_process(struct pcb pcb); //撤销进程
int Display_memory(); //显示内存
void Init_Queue()
{
Head=Tail=NULL;
}
void Insert_Queue(int id)
{
PQueue QueueNode;
QueueNode=(PQueue)malloc(sizeof(Queue));
QueueNode->PcbId=id;
QueueNode->next=NULL;
if((Tail==NULL)&&(Head==NULL)) Tail=Head=QueueNode;
else
{
Tail->next=QueueNode;
Tail=QueueNode;
}
}
void Delete_Queue(int id)