MIT JOS # Round­Robin Scheduling#

MIT JOS # Round­Robin Scheduling#


 下面是MIT JOS里 round-robin调度策略的实现.

在 kern/sched.c里面

MIT JOS # Round­Robin Scheduling#_第1张图片MIT JOS # Round­Robin Scheduling#_第2张图片


下面的截图来自<<Modern Operating system>> (以前搬过的砖也是有好处的哇~)

MIT JOS # Round­Robin Scheduling#_第3张图片


结合代码就能够很形象的理解Round-robin.

每当我们调用sched_yeild()的时候,我们就打算让当前进程让出CPU了.

于是把 idle = thiscpu->cpu_env;

我们每次都让出当前进程,然后让队列中离当前进程"最近"的进程运行,使用CPU

这里我提到的所谓的队列也不是什么优先队列,round robin里面把所有的进程都考虑成同样重要,没有权重之分.

只是所有的env结构体都是连续结构体的.能够利用索引查找他们.


此外还有其他的各种调度策略,可以去看看<<Modern Operating System>>









MIT JOS # Round­Robin Scheduling#_第4张图片


你可能感兴趣的:(MIT,JOS)