Я не совсем уверен, но я верю, что это ответ:
Сильный против слабого
Планировщик абсолютно честен, если каждый процесс, включенный бесконечно часто, будет выполняться в конце концов.
Планировщик слабо справедлива, если каждый постоянно включенный процесс будет выполняться в конечном итоге.
- Для программ с общими переменными разумна слабая справедливость
- Для синхронных процессов слабая справедливость является разумной, но она не очень полезна (включаемость не локальна)
- Сильная справедливость нереальна (слишком много бухгалтерии)
- Для асинхронных процессов слабая справедливость является и разумной, и полезной
Пример
a!0 k n:=0; go:=true;
do
(go ^ a?x ! go:=false)
2 (go ! n:=n + 1)
od
Было бы несправедливо продолжать выполнение второй альтернативы, поскольку при этом игнорировалась бы возможность синхронизированной связи между двумя процессами, которая могла бы выполняться бесконечное число раз.
Эффективная реализация должна стараться быть разумно справедливой и должна обеспечивать, чтобы выходная команда не слишком часто задерживалась после того, как она впервые стала исполняемой.
Что справедливо?
- Такое исполнение не совсем справедливо, но слабо справедливо.
- При условии честной справедливости программа завершается с n = 0.
- При условии слабой справедливости программа также может расходиться.