多级反馈队列调度算法的实现
【问题描述】
多级反馈队列调度算法是操作系统中CPU处理机调度算法之一,该算法既能使高优先级的进程(任务)得到响应又能使短进程(任务)迅速完成。UNIX操作系统便采取这种算法。试用C语言模拟某多级反馈队列调度算法。
【具体要求】
多级反馈队列调度算法描述:
1、该调度算法设置四级就绪队列:前三级就绪队列采用时间片轮转法,时间片大小分别为2、4和8;最后一级就绪队列采用FIFO调度。
2、任务在进入待调度的队列等待时,首先进入优先级最高的队列等待。
3、首先调度优先级高的队列中的任务。若高优先级中队列中已没有调度的任务,则调度次优先级队列中的任务,依次类推。
4、对于同一个队列中的各个任务,按照队列指定调度方法调度。每次任务调度执行后,若没有完成任务,就被降到下一个低优先级队列中。
5、在低优先级的队列中的任务在运行时,又有新到达的任务,那么在运行完这个时间片后,CPU马上分配给新到达的任务,即算法支持抢占式。
6、为方便实现,时间以1为单位,用整数数据表示;且每个时间点,最多只有一个任务请求服务(即输入)。
【实现提示】
实现一个队列数组(queue array),该数组的每个元素都代表一个长度可变的队列,队列中的每个元素则代表一个任务job,任务结构定义如下:
typedef struct Job {
int JobNum; //任务号
int ArriveTime; //到达时间
int Burst; //运行时间
struct Job *next;
}
【测试数据】
输入:任务号 到达时间 运行时间
输出:任务号 响应时间 离开时间 周转时间
具体数据自己设计,但报告上要求写出多批数据测试结果。
【选做内容】
可以考虑对各个任务赋予不同的优先级(通过输入确定),首先按优先级将各个任务放入四级队列中的某一个队列,然后按上述调度法调度。还可以考虑一个时间点可能有多个任务同时请求服务(即输入)。大家可以充分发挥自己的想象力,增加你的系统功能。
请发到邮箱里。因为很多人在找这个。谢谢了
邮箱:madeinzhejiang@qq.com