哈工大os学习笔记八(schedule函数linux0.11)
1.schedule函数
linux0.11中将PCB做成数组,数组末尾,从末尾往前移动。TASK_RUNNING(就绪),找出最大的counter,调度给最大counter的那个进程,counter这时候相当于优先级 ,counter本身有相当于时间片轮转,
counter的修改,c都等于0,说明时间片都用完了,就绪态的时间片都用完了(非就绪态的无所谓了),用完了后所有进程,重新赋值counter,就绪态的重新设置counter的初值(除以2+priority初值),对于io阻塞态会提升counter(counter>0 +priority初值,导致counter变大)相当于提高优先级。
2.counter作用:时间片
时钟中断的时候,counter–减到0进行调度。
3.counter作用:优先级
io时间越长,优先级越高。这是一种学习机制。
后台进程一直按照counter轮转,那么短作业必定先于长作业执行完毕,近似了SJF调度。
综合考虑了大多数任务的需求。
折中多个任务的特点又把程序设计的简单设计一个精巧的变量来实现。
神!!!!