В чем разница между слабой справедливостью и сильной справедливостью? - PullRequest
9 голосов
/ 27 февраля 2011

В чем разница между слабой справедливостью и сильной справедливостью? Каков пример, который содержит набор переменных и набор действий?

Ответы [ 2 ]

7 голосов
/ 08 декабря 2012

Учитывая график перехода:

  1. Слабая справедливость гарантирует, что исполнение не может оставаться навсегда в состоянии, в котором разрешены действия, ведущие к другим состояниям.
  2. При строгая справедливость никакое действие не может быть разрешено бесконечно часто без выполнения.
7 голосов
/ 14 марта 2011

Я не совсем уверен, но я верю, что это ответ:

Сильный против слабого

Планировщик абсолютно честен, если каждый процесс, включенный бесконечно часто, будет выполняться в конце концов.

Планировщик слабо справедлива, если каждый постоянно включенный процесс будет выполняться в конечном итоге.

  • Для программ с общими переменными разумна слабая справедливость
  • Для синхронных процессов слабая справедливость является разумной, но она не очень полезна (включаемость не локальна)
  • Сильная справедливость нереальна (слишком много бухгалтерии)
  • Для асинхронных процессов слабая справедливость является и разумной, и полезной

Пример

a!0 k n:=0; go:=true;
do
    (go ^ a?x ! go:=false)
    2 (go ! n:=n + 1)
od

Было бы несправедливо продолжать выполнение второй альтернативы, поскольку при этом игнорировалась бы возможность синхронизированной связи между двумя процессами, которая могла бы выполняться бесконечное число раз.

Эффективная реализация должна стараться быть разумно справедливой и должна обеспечивать, чтобы выходная команда не слишком часто задерживалась после того, как она впервые стала исполняемой.

Что справедливо?

  • Такое исполнение не совсем справедливо, но слабо справедливо.
  • При условии честной справедливости программа завершается с n = 0.
  • При условии слабой справедливости программа также может расходиться.
...