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