题目:设计一个按优先数调度算法实现处理器调度的程序
提示:
(1)假定系统有5个进程,每个进程用一个PCB来代表。PCB的格式为: 进程名、指针、要求运行时间、优先数、状态。 进程名——P1~P5。
指针——按优先数的大小把5个进程连成队列,用指针指出下一个进程PCB的首地
址。 要求运行时间——假设进程需要运行的单位时间数。
优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。
状态——假设两种状态,就绪,用R表示,和结束,用E表示。初始状态都为就绪
状态。
(2) 每次运行之前,为每个进程任意确定它的“优先数”和“要求运行时间”。 (3) 处理器总是选队首进程运行。采用动态改变优先数的办法,进程每运行1次,优先
数减1,要求运行时间减1。 (4) 进程运行一次后,若要求运行时间不等于0,则将它加入队列,否则,将状态改为“结
束”,退出队列。 (5) 若就绪队列为空,结束,否则,重复(3)。
2.程序中使用的数据结构及符号说明:
#define num 5//假定系统中进程个数为5 struct PCB{
char ID;//进程名
int runtime;//要求运行时间 int pri;//优先数
char state; //状态,R-就绪,F-结束 };
struct PCB pcblist[num];//定义进程控制块数组
3.流程图:
(1)主程序流程图:
(2)子程序init()流程图:
结 束 调用运行子程序 调用初始化子程序 开 始 开 始 定义i i=0 i (3) 子程序max_pri_process()流程图: 开始 定义i,key,max=100 i=0 i (4)子程序show()流程图: 开始 定义i 输出提示 i=0 i (5)子程序run()流程图: 开始 定义i,j,t j=0 j