资源描述:
《时间片轮转调度算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、//时间片轮转调度算法#include#include#include#includeusingnamespacestd。enumSTATUS{RUN,READY,WAIT,FINISH}。structPCBNode{intprocessID。//进程IDb5E2RGbCAPSTATUSstatus。//进程状态p1EanqFDPwintpriorityNum。//优先数intreqTime。//总的需要运行时间DXDiTa9E3dintremain
2、Time。//剩下需要运行时间intarriveTime。//进入就绪队列时间intstartTime。//开始运行时间intfinishTime。//结束运行时间inttotalTime。//周转时间floatweightTotalTime。//带权周转时间}。structQueueNode{intID。//进程IDstructQueueNode*next。//队列中下一个进程指针}。structLinkQueue{QueueNode*head。//队首}。voidFcfs(LinkQueue&Q,int&tota
3、lTimeSum,int&weightTotalTimeSum,PCBNode*ProcessTable>。RTCrpUDGiTboolRR_Run(LinkQueue&Q,QueueNode*q,QueueNode*p,constintRound,int¤tTime,PCBNode*ProcessTable>。5PCzVD7HxA//分配时间片给q所指进程,p为刚退出的进程voidRoundRobin(LinkQueue&Q,constintRound,int&totalTimeSum,int&weig
4、htTotalTimeSum,PCBNode*ProcessTable>。jLBHrnAILg//时间片轮转调度,调用RR_Run(>,时间片大小设为RoundvoidInitialQueue(LinkQueue&Q,PCBNode*ProcessTable,constintprocessnum>。xHAQX74J0X//初始化就绪队列voidInput(PCBNode*ProcessTable,constintprocessnum>。LDAYtRyKfE//从input.txt文件输入数据intmain(>{7/7
5、LinkQueueQ。//就绪队列Q.head=NULL。constintprocessnum=16。//进程数constintRound=1。//时间片大小inttotalTimeSum=0。//周转时间intWeightTotalTimeSum=0。//带权周转时间PCBNode*ProcessTable=newPCBNode[processnum]。//进程表Zzz6ZB2LtkInput(ProcessTable,processnum>。InitialQueue(Q,ProcessTable,processn
6、um>。RoundRobin(Q,Round,totalTimeSum,WeightTotalTimeSum,ProcessTable>。dvzfvkwMI1cout<<"时间片轮调度的平均周转时间为:"<。InitialQueue(
7、Q,ProcessTable,processnum>。Fcfs(Q,totalTimeSum,WeightTotalTimeSum,ProcessTable>。SixE2yXPq5cout<<"先来先服务的平均周转时间为:"<8、oundRobin(LinkQueue&Q,constintRound,int&totalTimeSum,int&weightTotalTimeSum,PCBNode*ProcessTable>y6v3ALoS89{totalTimeSum=0。//总的周转时间weightTotalTimeSum=0。//平均周转时间intcurrentTim