题目: 设计一个按优先数调度算法实现处理器调度的程序
提示:
(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()
流程图: