原题:实验一 进程调度-代码设计并调试实验
1.编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。
“最高优先数优先”调度算法的基本思想是把CPU分配给就绪队列中优先数最高的进程。
静态优先数是在创建进程时确定的,并在整个进程运行期间不再改变。
动态优先数是指进程的优先数在创建进程时可以给定一个初始值,并且可以按一定原则修改优先数。例如:在进程获得一次CPU后就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等。
我选择使用静态优先数实现最大优先数优先算法,编写代码如下:
#include<stdio.h>
#include<stdlib.h>
#define getpcb(type) (type*)malloc(sizeof(type))
struct pcb { /*定义进程控制块PCB*/
char name[10];//进程名或进程标识符
char state;//进程状态:w即wait,R即Running
int super;//进程优先数
int ntime;//运行时间
int rtime;//已消耗处理机时间
struct pcb* link;//指向就绪队列下一个进程的PCB
}*ready=NULL,*p;//指向队首、当前进程PCB
typedef struct pcb PCB;