cin>>p1.name;
cin>>p1.needtime; Queue[0].LinkPCB[i]=p1; } }
void Insert(PCB p1)//创建第二个就绪队列 {PCB *head;
Queue[1].LinkPCB[m]=p1;m++; }
void Insert2(PCB p1)//创建第三个就绪队列 { PCB *p2;
Queue[2].LinkPCB[b]=p1;b++; }
void MultiDispatch(int q) {int i=0,j;int flag=1;
PCB p1; int u=0;int u1=0;int u2=0; p1=Queue[0].LinkPCB[i];
for(i=0;i if(((p1.needtime-Queue[0].round)<=0)) {p1.state='F';p1.count++;print(p1); } else {p1.needtime=p1.needtime-Queue[0].round;Insert(p1) ; } } p1=Queue[1].LinkPCB[0]; for(i=0;i { p1=Queue[1].LinkPCB[u1]; u1++; if(((p1.needtime-Queue[1].round)<=0)) {p1.state='F';p1.count=p1.count+2;print(p1); } else {p1=Queue[1].LinkPCB[u1-1];p1.needtime=p1.needtime-Queue[1].round;Insert2(p1) ; } } p1=Queue[2].LinkPCB[0]; for(i=0;i { p1=Queue[2].LinkPCB[u2]; u2++; if(((p1.needtime-Queue[2].round)<=0)) {p1.state='F';p1.count=p1.count+3;print(p1); } else {p1.state='w';p1.count=0;print(p1); } } } void print(PCB p1) {int n=0; if(printn==0) {printhead[printn]=p1;printn++;} else {printhead[printn]=p1;printn++;} } void Output() { int n=0; cout<<\进程名\ \进程状态\ \进程轮转次数\ \ while(n cout< \ \ n++; } } int main() { printf(\固定三个就绪队列,5个进程数\\n\ int i; InsertPrio(); InsertFinish(m); MultiDispatch(m); Output(); system(\ return EXIT_SUCCESS; }三、调试与运行: 四、总结:(四号黑体) 1、本程序的优点和不足之处(四号仿宋,单倍行距) 操作简单直观明了,但没有完全模拟出算法,如果进程所需时间过大,不能显示出完成的。仍然处于等待状态。固定了就绪队列的个 数和进程的个数。只是简单的模拟了多级反馈算法思路。 2、心得体会(四号仿宋,单倍行距) 对多级反馈队列调度算法更熟悉了一些