该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
【问题描述】
多级反馈队列调度算法是操作系统中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 ResponTime //响应时间
int RunTime; //运行时间
struct Job *next;
}
【测试数据】
输入:任务号 到达时刻 运行时间
输出:任务号 响应时间 离开时刻 周转时间
样例:
输入数据:
任务号 到达时刻 运行时间
1 0 3
2 1 2
3 4 15
4 5 2
5 6 6
6 12 2
输出数据(非抢占式):
任务号 响应时间 离开时刻 周转时间
2 1 4 3
4 1 8 3
1 0 11 11
6 3 17 5
5 2 21 15
3 0 30 26
输出数据(抢占式):
任务号 响应时间 离开时刻 周转时间
2 1 4 3
4 1 8 3
1 0 11 11
6 0 14 2
5 2 21 15
3 0 30 26
自己设计多批数据测试,报告上要求写出多批数据测试结果。