java - 抢占式调度会导致饥饿吗?

标签 java operating-system

这对我来说有点违反直觉。不是做了抢占式调度,让所有进程都能共享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/

相关文章:

java - Tomcat 网络套接字 TEXT_FULL_WRITING

java - 在运行的系统上换入和换出逻辑

java - Jenkins 插件 : Optional block and its nested radio buttons are not persisted after saving and loading the configuration dialogue

java - 有什么方法可以使用 Guava 获取 InputStream 的哈希码吗?

linux - 内存映射 i/0 在 linux 中工作

java - 使用 Java 为操作系统设计我的浏览器

java - 插入时间戳时 H2 org.h2.jdbc.JdbcSQLSyntaxErrorException

c - 如何跟踪所有要清理的后代进程?

filesystems - 如何实现一个非常简单的文件系统?

python - 如何在 Python 中通过管道传输到 os.execv'd 进程的标准输入