处理机调度算法的实现
处理机调度算法的实现
程序设计思路:
自定义结构体PCB表(进程名name,进程优先数priority,进程执行时间time)以及进程就绪队列Queue_Process(data[MAXSIZE]数组存放PCB,front,rear队首队尾指针),通过每次对进程就绪队列进行进程优先数从大到小排序来确定进程执行的选择,并且是采用动态优先数调度算法(每次优先数减1,执行时间减1),每次输出进程执行情况时只需要将队首PCB调出执行,其他进程都处于动态就绪状态,等进程执行结束后重新对进程就绪队列排序。 程序中,采用结构体、队列等数据结构,其中对队列每次排序是采用冒泡排序算法实现。
源代码:
#include
using namespace std;
#define MAXSIZE 10
struct PCB {
int name; //进程名 int priority; //进程优先数 int time; //进程执行时间 };
struct Queue_Process {
PCB data[MAXSIZE]; //PCB队列 int front; // 队首 int rear; // 队尾 };
void InitQueue(Queue_Process *Q) { Q->front = Q->rear = 0;
}
bool IsQueueEmpty(Queue_Process Q) //队空判断函数 {
return (Q.front == Q.rear) ? true:false; }
bool IsQueueFull(Queue_Process Q) //队满判断函数 {
return (Q.front == (Q.rear+1)%MAXSIZE) ? true:false; }
void EnQueue(Queue_Process *Q,PCB x) //入队函数 {
if(IsQueueFull(*Q)) // 判断队列是否为满
处理机调度算法的实现



