一、多优先级队列调度算法的描述
该算法有多个队列,同一个队列中的进程优先级相同,不同队列中进程优先级不同;最高优先级上的进程运行1个时间片,次高优先级上的进程运行2个时间片,再下一级运行4个时间片,依此类推;每次从队列头开始运行进程,每当一个进程在一个优先级队列中用完它的时间片后,就移到队列的尾部;只有当高优先级队列为空时才会从不为空的低优先级队列中选择进程运行;在低优先级队列中等待时间过长的进程,将移入高优先级队列。
二、多优先级队列数据结构的定义
多优先级队列数据结构的定义 |
进程数据结构的定义 |
class MultiPriorityQueueSchedule{ private: MYPROCESS MultiPriorityQueue[QUEUESIZE]; private: void MPQSFreeProcess(MYPROCESS); MYPROCESS MPQSSelectProcess(); void MPQSRunProcess(MYPROCESS); void MPQSGoAfter(MYPROCESS);//到队列尾 void MPQSPriorityScheduling();//优先级调度 public: MultiPriorityQueueSchedule(); bool MPQSAppendProcess(MYPROCESS); void MPQSExecute(); void MPQSDisplayQueue(ofstream&); }; |
typedef struct MyProcess { |