资源描述:
《时间片轮转度算法.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、// 时间片轮转调度算法#include#include#include#includeusing namespace std;enum STATUS {RUN,READY,WAIT,FINISH};struct PCBNode{ int processID; //进程ID STATUS status; //进程状态 int priorityNum;
2、 //优先数 int reqTime; //总的需要运行时间 int remainTime; //剩下需要运行时间 int arriveTime; //进入就绪队列时间 int startTime; //开始运行时间 int finishTime; //结束运行时间 int totalTime; //周转时间 float weightTotalT
3、ime; //带权周转时间 };struct QueueNode { int ID; //进程ID struct QueueNode * next; //队列中下一个进程指针};struct LinkQueue{ QueueNode *head;//队首};void Fcfs(LinkQueue& Q, int& totalTimeSum, int& weightTotalTimeSum,PCBNode * ProcessTable);bool RR_Run(Lin
4、kQueue& Q,QueueNode* q, QueueNode* p, const int Round,int& currentTime,PCBNode * ProcessTable);//分配时间片给q所指进程,p为刚退出的进程void RoundRobin(LinkQueue& Q,const int Round, int& totalTimeSum, int& weightTotalTimeSum,PCBNode * ProcessTable);//时间片轮转调度,调用RR_Run(),时间片大小设为Round
5、void InitialQueue(LinkQueue& Q,PCBNode * ProcessTable,const int processnum);//初始化就绪队列void Input(PCBNode * ProcessTable, const int processnum);//从input.txt文件输入数据int main(){ LinkQueue Q;//就绪队列 Q.head = NULL; const int processnum = 16;//进程数 const int Rou
6、nd = 1; //时间片大小 int totalTimeSum = 0; //周转时间 int WeightTotalTimeSum = 0;//带权周转时间 PCBNode * ProcessTable=new PCBNode[processnum]; //进程表 Input(ProcessTable, processnum); InitialQueue(Q, ProcessTable, processnum); RoundRobin(Q, Round,
7、 totalTimeSum,WeightTotalTimeSum,ProcessTable); cout<<"时间片轮调度的平均周转时间为:"<8、Fcfs(Q, totalTimeSum,WeightTotalTimeSum,ProcessTable); cout<<"先来先服务的平均周转时间为:"<