优先数调度算法来模拟实现处理器调度过程。
//利用C/C++模拟进程调度,运用优先调度算法
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
enum process_status{
READY, RUN, FINISH}; //进程的三种状态
typedef struct pcb //定义进程数据结构
{
struct pcb *next; //连接下一个进程的指针
int priority_num; //优先调度算法中为优先级,轮转调度算法中为轮转时间片
int process_time; //进程所需时间片数
char process_tag[20]; //存储进程标识符
enum process_status status; //进程当前的状态
}PCB;
typedef struct //定义进程控制块的链结构
{
PCB *run; //当前运行的进程指针
PCB *tail; //准备队列的队尾指针
PCB *ready; //当前准备队列的头指针
PCB *finish; //完成队列的指针
}PCBC;
void init_pcbc(PCBC *p)
{
p->run = NULL;
p->tail = NULL;
p->ready = NULL;
p->finish = NULL;
}
void input_process(PCBC *pcbc) //输入进程,并加入就绪队列
{
PCB *pcb;
pcb = (PCB*)malloc(sizeof(PCB));
printf("请输入进程标识符:");
scanf("%s", pcb->process_tag);
printf("输入格式为: (优先级,进程所需时间片数): ");
scanf("%d,%d", &pcb