实现 insert()和rr()函数,前者函数只需要简单的将新创建的进程插入就绪队列,而后者需要你在每次执行running()前将需要执行的正确的进程放在队首,时间片用完的进程放在队尾。现在请根据轮转调度算法的原理补全rr()函数。
//创建就绪队列
void insert()
{
PCB *q=NOTHING;
if(!ready) {
//待补全
ready=p;
ready->state = 'R';
ready->oncerun=1;
pfend=p;
pfend->link = NOTHING;
}else{
q=ready;
while(q->link){
q=q->link;
}
q->link=p;
p->state = 'w';
pfend = p;
pfend->link = NOTHING;
}
}