Изменения

Перейти к: навигация, поиск

Алгоритм Лампорта взаимного исключения

43 байта убрано, 18:26, 2 июня 2019
Нет описания правки
Корректность гарантируется при помощи FIFO и ok: если $P$ получил ok от процесса $Q$, то запрос от $Q$ на вход в критическую секцию уже тоже получен.
''== Доказательство == === Неаккуратное'' доказательство: если === Если $P$ и $Q$ решили одновременно войти в критическую секцию, то они оба получили друг от друга ok и, следовательно, знают друг про друга. А тогда $P$ не может быть минимальным в очереди $P$, а $Q$ — минимальным в очереди $Q$.Намёки, почему Почему неаккуратно:
# Используется запретное слово "одновременно", а не "произошло-до".
# Нигде нет отсылок к тому, что мы используем логические часы в качестве меток, а не просто случайные числа.
Чуть более аккуратное доказательство не === Аккуратное ===Не требуется на экзамене, но есть в книжке Gaarg, страницы 24 и 26 (впрочем, там тоже есть "одновременно", но уже не так явно). 
Пусть процесс $P_i$ в момент времени $e'$ выбрал для захода в критическую секцию метку $x_i$ ($C(e')=x_i$) и зашёл в неё в момент времени $e$,
а процесс $P_k$ в момент времени $f'$ выбрал метку $x_k$ ($C(f)=x_k$).
292
правки

Навигация