饥饿:为什么资源一直在流动,有些任务却永远轮不到?

饥饿:为什么资源一直在流动,有些任务却永远轮不到?

饥饿不是没有资源,而是资源不断被分配,某项工作却长期得不到机会。假设打印队列总让“紧急文件”优先;若新的紧急文件持续进入,一份普通文件可能一直排着,打印机从未闲置,它却始终轮不到。

这与死锁不同。死锁是多个任务彼此等待,整体无法推进;饥饿时系统仍在工作,只是进展分配得不公平。它也不等于单纯等待很久:关键在于调度规则没有给等待设定可靠上限。

解决办法通常不是取消优先级,而是让等待本身逐渐增加优先权,或保证每类任务获得最低份额。这个概念提醒我们,吞吐量只说明系统完成了多少工作,不能说明谁被持续排除。公平也不是让所有任务立刻相同,而是让任何合格任务都不会被无限期推迟。


了解 Geoffrey Chen 的更多信息

订阅后即可通过电子邮件收到最新文章。