📄 复件 head.h
字号:
#include "stdio.h"
#include<stdlib.h>
#include<malloc.h>
#include<iomanip>
#include <time.h>
#include <dos.h>
#define OK 1
#define SUCCESS 1
#define FAILURE 0
#define M 10 //M类资源
#define N 4//每一类资源个数
#define K 4//同一进程最多同时申请同类资源个数
#define T 3//设置一个进程最多执行的时间
#define DEBUG true
int ID=0;
int TimePiece=2;//设置时间片为2秒
static int INITTIME;//初始化时间
int RandProcNum=20;//随机生成在RandProc以内个进程
typedef enum {//虚拟设备状态
DReady,//准备好
DBusy//正忙
}DeviceStatus;
char *DeviceStatusOut[]={//在屏幕输出时对应DEVICESTATUS的值
"DReady",//准备好
"DBusy"//正忙
};
typedef enum{//进程状态
PReady,//就绪
PRun,//执行
PBlock//阻塞
}ProcStatus;
char *ProcStatusOut[]={//在屏幕输出时对应PROCSTATUS的值
"PReady",//就绪
"PRun",//执行
"PBlock"//阻塞
};
struct Device{//设备结构
int id;
DeviceStatus status;
}DEVICE[M][N];
struct Proc{//进程结构
int id;
int superId;
int initTime;
int runTime;
int leftTime;
int m;//第m类资源
int k;//共需k个
ProcStatus status;
};
typedef struct PCBNode{ //表头PCB表结构体
Proc proc;
struct PCBNode *next;
}PCBNode,*PCB;//无表头表示
int getNowTime();//取得现在时间
void wait(int n);//等待n秒钟
int getNextID();//取得下一个进程的ID
int getRandResourceClass();//取得随机的资源种类
int getRandResourceNum();//取得随机的资源个数
int getRandRunTime();//取得随机的执行时间表
int getRandProcNum();//随机取得进程数
int getRandNum();//取一个随机数
void InitDevice();//初始化虚拟设备 共M*N个
DeviceStatus getDeviceStatus(int m,int n);//取得第m类,第n个资源的状态
int getAvailableDeviceCount(int m);//取得第m类可用资源的个数
void setDeviceBusy(int m,int k);//设置设备为busy状态
void setDeviceReady(int m,int k);//设置设备第M类资源的K个设备为Ready状态
int ckeckDeviceAvailable(int m,int k);//检查设备是否有K个可用的设备
void disPlayDeviceStatus(int m,int n);//显示第m类资源第n个设备的状态信息
void createRandProc(Proc &p);//创建随机进程
void running(Proc &p);
void destory(Proc p);
void displayProc(Proc p);//显示进程的信息
int initPCB(PCB &P);//初始化一个带表头链表
int countProc(PCB &P);//取得PCB表中进程的个数
int insertProc(PCB &P,Proc p);//在PCB表中插入一个进程
int clearProc(PCB &P);//检查
void displayPCB(PCB &P);//显示所有进程
void createRandPCB(PCB &P);
int changeProcStatus(PCB &P,ProcStatus status);//改变进程状态
int runProc(PCB &P,int id);//执行PCB表中进程ID为id的进程
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -