随书说


在空闲的CPU上定期启用中断的原因是:
可能没有RUNNABLE进程,因为进程(例如Shell)
正在等待I / O;如果调度程序留下的中断禁用了所有
时间,I / O将永远不会到达。


但是我认为我们只需要在外部for循环之前调用sti()一次,因为每次释放ptable.lock时,都会再次启用中断。

最佳答案

可能在禁用中断的情况下调用schedule(),在这种情况下释放ptable自旋锁将不会重新启用它们。

关于operating-system - 为什么xv6调度程序在每个循环的开始都调用sti()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30101030/

10-12 01:00