这对我来说有点违反直觉。是否没有完成抢先式调度以使所有进程都能获得CPU的份额?那么在这种调度方案下会有饥饿吗?如果是这样,如何?
另外,有人可以显示有关我如何对此进行编码的简单伪代码,以显示工作中的饥饿属性。
最佳答案
抢先式调度会导致饥饿吗?
是的,抢先式调度可能会导致饥饿。
让我们看看最长剩余时间优先方案。这是抢先式调度。在任何时间点,如果具有更大执行时间或更大剩余时间的任何进程到达,处理器将暂停当前正在进行的进程,切换到该进程。执行时间短的进程会发生进程饥饿。
有时,先发制人的计划不会导致饥饿。
让我们以循环调度算法为例。轮循算法是一种抢先算法,因为一旦时间配额到期,调度程序就会将进程强制退出CPU。
与SJF或SRTF不同,处理器不会卡在任何进程中。就像一个永无止境的进程不会结束,但其他进程仍将运行。因此它解决了饥饿问题。
关于循环算法的更多详细信息:http://en.wikipedia.org/wiki/Round-robin_scheduling
RR算法的实现:Implementing round robin scheduling algorithm in Java
如果您还有其他疑问,请发表评论。
谢谢,
巴维克