假设您有完成不同优先级的项目来源,并且完成项目的能力始终是饱和的。您如何确保优先级较低的项目不会完全缺乏?
我想我可以将源的优先级与自上次服务以来的时间结合起来,以提出动态的“有效”优先级。这样,较低优先级的源将慢慢升高,直到它们足够高以便进行服务。
我不想在没有至少询问的情况下重新发明轮子,以防存在更优雅的解决方案。谢谢!
答案 0 :(得分:3)
您所考虑的是一个标准的想法,称为Aging。
老化用于确保优先级较低的作业最终完成执行。该技术可用于减少低优先级任务的饥饿。有许多方法可以实现老化,但所有方法都具有相同的原则,即在准备队列中等待进程的优先级应该增加。优先级的增加可能等于或不等于过程的等待时间。
您当前的想法是为流程分配优先级。通常,您可以通过将所有进程置于最小(或最大,取决于您的实现)堆,然后轮询堆...
或者,您可以将流程分配给优先级。您可以通过保留每个优先级类型的多个队列/列表(最高,最高,中,低,最低等)来实现。
这也是操作系统中教授的标准算法。