📜  操作系统中的饥饿和老化

📅  最后修改于: 2021-09-28 09:49:09             🧑  作者: Mango

先决条件:优先调度

我们已经在这篇文章中讨论了优先级调度。它是批处理系统中最常见的调度算法之一。每个进程都被分配了一个优先级。优先级最高的进程将首先执行,依此类推。

在这篇文章中,我们将讨论与优先级调度相关的一个主要问题及其解决方案。

饥饿或无限期阻塞是与优先级调度算法相关的现象,其中准备为 CPU 运行的进程可以因为低优先级而无限期地等待。在负载较重的计算机系统中,源源不断的高优先级进程可以阻止低优先级进程获得 CPU。

曾有传言称,1967 年 MIT 的 IBM 7094 中使用了 Priority Scheduling,他们发现了一个直到 1973 年才提交的低优先级进程。

事先的

正如我们在上面的示例中看到的,比其他更早获得 CPU 的进程具有更高的优先级。我们可以考虑这样一种场景,其中只有一个进程具有非常低的优先级(例如 127),而我们给另一个进程具有高优先级,这可能导致无限期地等待具有低优先级的 CPU 进程,这导致饥饿。此外,我们还讨论了饥饿的解决方案。

操作系统中死锁和饥饿的区别:

  1. 当集合中的任何进程由于其他进程占用所需资源而无法继续前进时会发生死锁,如下图所示,另一方面,当进程等待无限期的时间时会发生饥饿获取所需的资源。
  2. 死锁的别称是循环等待。饥饿的其他名称是活锁
  3. 当死锁发生时,任何进程都不能取得进展,而在饥饿状态下,除了受害进程之外,其他进程可以前进或继续。

饥饿的解决方案:衰老

老化是一种逐渐增加在系统中等待很长时间的进程的优先级的技术。例如,如果优先级范围从 127(低)到 0(高),我们可以将等待进程的优先级增加 1 每15分钟。最终,即使是初始优先级为 127 的进程也不会超过 32 小时,优先级为 127 的进程老化到优先级为 0 的进程。