Алгоритм взаимного исключения Петерсона-2 - PullRequest
0 голосов
/ 27 ноября 2011

Безусловная сложность для классического алгоритма Петерсона-2 равно 4 (потому что он выполняет 4 операции чтения / записи в память совместно используемых регистров). Есть ли некоторая версия алгоритма Петерсон-2, которая требует меньше доступ к памяти разделяемых регистров? Очевидно, что 1 доступ невозможен. Но как быть с 2 или 3 доступами? Спасибо

1 Ответ

2 голосов
/ 28 ноября 2011

Требуются как минимум три операции на критическую секцию: запись и чтение по записи (чтобы объявить получение мьютекса и убедиться, что другой процесс не получил), запись при выходе (чтобы освободить мьютекс). При входе процесс id в алгоритме Петерсона записывает регистр с одним записывающим устройством interested[id] и регистр с несколькими записывающими устройствами turn. Ценой преобразования ограниченного регистра в регистр, который также содержит неограниченный номер версии, для двух процессов выполняется симуляция регистра с несколькими записывающими устройствами с помощью двух регистров с одним записывающим устройством, что делает 1 запись на запись и 1 чтение на чтение, что позволяет слияние двух записей в алгоритме Петерсона.

...