#include <stdio.h>
#include <string.h>
//使用timer()函数
#include <windows.h>
//时间延迟
#define DELAY 100
//时间片
#define SJP 4
/**********全局变量声明**********/
unsigned short TIME=0; //时间
unsigned short NUM=0; //进程数量
char TYPE='1'; //模拟类型
//PCB结构体定义
typedef struct PCB
{
char name[16];
char state; //[R]Run,[F]Finish,[P]Pause,[N]New
unsigned short priority; //数字越大,优先级越高,最小为1
unsigned short t_arrive; //到达时间
unsigned short t_start; //开始时间
unsigned short t_finish; //完成时间
unsigned short t_service; //服务时间
unsigned short t_run; //运行时间
unsigned short t_wait; //等待时间
struct PCB *next;
} pcb;
pcb *now=NULL, //现在运行的pcb
*head=NULL; //pcb链头部指针
/**********函数声明**********/
void fcfs(); //先到先服务
void sjf(); //短作业优先
void gyxb(); //高优先比
void sjplz(); //时间片轮转
void init(); //初始化,完成pcb录入
pcb *sort(pcb*); //对init()录入的pcb按到达时间排序
void timer(); //定时器,每一个延迟自我调用一次
void result(); //打印结果
//先到先服务算法
void fcfs()
{
if(now->t_arrive>TIME)
{
printf("[时间:%d]\t无进程运行\n",TIME);
return;
}
if(now->state=='N')
{
now->state='R';
now->t_start=TIME;
printf("[时间:%d]\t进程:%s 首次运行\n",TIME,now->name);
}
else if(now->state=='R')
- 1
- 2
- 3
- 4
前往页