Единственная разница между голодание и эффект конвоя в том, что эффект конвоя в основном определяется алгоритмами планирования FCFS, а голодание — планирование на основе приоритетов?
Я исследовал оба эффекта, но не смог найти сравнения. Это основано на теории операционных систем, которую я изучил, когда учился в колледже.
Голодание и конвои могут возникать в обоих алгоритмах. Самый простой, голодание, может быть смоделирован задачей, входящей в этот цикл (надеюсь, это не UDB):
while (1) {
}
В FCFS эта задача никогда не отдаст ЦП, поэтому все задачи, стоящие за ней, будут голодать. В системе, основанной на приоритетах, эта же задача будет голодать для всех задач с более низким приоритетом.
Конвои могут быть более широко признаны проблемой конкуренции за ресурсы; у одной задачи есть ресурсы (процессор), а другим задачам приходится ждать, пока они не будут выполнены. В системе на основе приоритета это проявляется в инверсия приоритета, где задача с высоким приоритетом блокируется, поскольку ей нужен ресурс, принадлежащий задаче с более низким приоритетом. Есть способы смягчить их, включая протоколы приоритетное наследование и потолок. В отсутствие этих механизмов задачи, конкурирующие за ресурс, будут формировать конвой, как в fcfs; в отличие от fcfs, задачи, не конкурирующие за ресурс, могут выполняться по желанию.
Стремления к оперативности, пропускной способности и справедливости часто противоречат друг другу, и отчасти поэтому у нас нет настоящего решения проблем планирования.
Какую реальную проблему вы пытаетесь решить?