Алгоритм Маекавы

Алгоритм Маекавы — это алгоритм взаимного исключения в распределенной системе . В основе этого алгоритма лежит подход, подобный кворуму , где любому сайту нужно только запросить разрешения у подмножества других сайтов.

Алгоритм

Терминология

  • Сайт — это любое вычислительное устройство , на котором запущен алгоритм Маекавы.
  • Для любого запроса на вход в критическую секцию:
    • Запрашивающий сайт — это сайт, который запрашивает вход в критическую секцию.
    • Принимающим сайтом является любой другой сайт, получающий запрос от запрашивающего сайта.
  • ts относится к локальной временной метке системы в соответствии с ее логическими часами

Алгоритм

Запрашиваемый сайт :

  • Запрашивающий сайт отправляет сообщение всем сайтам в своем кворуме . П я {\displaystyle P_{i}} запрос ( т с , я ) {\displaystyle {\text{запрос}}(ts,i)} Р я {\displaystyle R_{i}}

Место получения :

  • Получив сообщение , принимающий сайт : запрос ( т с , я ) {\displaystyle {\text{запрос}}(ts,i)} П дж {\displaystyle P_{j}}
    • Если на сайте нет необработанного сообщения (то есть сообщения, которое не было отправлено), то сайт отправляет сообщение на сайт . П дж {\displaystyle P_{j}} грант {\displaystyle {\text{грант}}} грант {\displaystyle {\text{грант}}} П дж {\displaystyle P_{j}} грант ( дж ) {\displaystyle {\text{грант}}(j)} П я {\displaystyle P_{i}}
    • Если на сайте имеется необработанное сообщение с процессом с более высоким приоритетом, чем у запроса, то сайт отправляет сообщение на сайт , а сайт ставит запрос с сайта в очередь . П дж {\displaystyle P_{j}} грант {\displaystyle {\text{грант}}} П дж {\displaystyle P_{j}} неуспешный ( дж ) {\displaystyle {\text{не удалось}}(j)} П я {\displaystyle P_{i}} П дж {\displaystyle P_{j}} П я {\displaystyle P_{i}}
    • Если у сайта есть невыполненное сообщение с процессом с более низким приоритетом, чем у запроса, то сайт отправляет сообщение процессу, которому в данный момент сайт предоставил доступ к критической секции . (То есть сайту с невыполненным сообщением.) П дж {\displaystyle P_{j}} грант {\displaystyle {\text{грант}}} П дж {\displaystyle P_{j}} запросить ( дж ) {\displaystyle {\text{запрос}}(j)} П дж {\displaystyle P_{j}} грант {\displaystyle {\text{грант}}}
  • После получения сообщения сайт : запросить ( дж ) {\displaystyle {\text{запрос}}(j)} П к {\displaystyle P_{k}}
    • Отправлять сообщение на сайт следует только в том случае, если сайт получил сообщение от другого сайта или если сайт отправил сообщение на другой сайт, но не получил нового . урожай ( к ) {\displaystyle {\text{выход}}(k)} П дж {\displaystyle P_{j}} П к {\displaystyle P_{k}} неуспешный {\displaystyle {\text{не удалось}}} П к {\displaystyle P_{k}} грант {\displaystyle {\text{грант}}}
  • После получения сообщения сайт : урожай ( к ) {\displaystyle {\text{выход}}(k)} П дж {\displaystyle P_{j}}
    • Отправить сообщение запросу, находящемуся наверху его собственной очереди запросов. Обратите внимание, что запросы наверху имеют наивысший приоритет. грант ( дж ) {\displaystyle {\text{грант}}(j)}
    • Поместить в очередь запросов. П к {\displaystyle P_{k}}
  • После получения сообщения сайт : выпускать ( я ) {\displaystyle {\text{выпуск}}(i)} П дж {\displaystyle P_{j}}
    • Удалить из очереди запросов. П я {\displaystyle P_{i}}
    • Отправьте сообщение запросу, находящемуся в верхней части очереди запросов. грант ( дж ) {\displaystyle {\text{грант}}(j)}

Критический раздел :

  • Сайт переходит в критическую секцию при получении сообщения от всех сайтов в . П я {\displaystyle P_{i}} грант {\displaystyle {\text{грант}}} Р я {\displaystyle R_{i}}
  • При выходе из критической секции отправляет сообщение всем сайтам в . П я {\displaystyle P_{i}} выпускать ( я ) {\displaystyle {\text{выпуск}}(i)} Р я {\displaystyle R_{i}}

Набор кворума ( ) Р х {\displaystyle R_{x}} :
Набор кворума должен соответствовать следующим свойствам:

  1. я дж [ Р я Р дж ] {\displaystyle \forall i\,\forall j\,[R_{i}\bigcap R_{j}\neq \emptyset ]}
  2. я [ П я Р я ] {\displaystyle \forall i\,[P_{i}\in R_{i}]}
  3. я [ | Р я | = К ] {\displaystyle \forall i\,[|R_{i}|=K]}
  4. Сайт содержится именно в наборах запросов П я {\displaystyle P_{i}} К {\displaystyle К}
Поэтому:
  • | Р я | Н 1 {\displaystyle |R_{i}|\geq {\sqrt {N-1}}}

Производительность

  • Количество сетевых сообщений ; 3 Н {\displaystyle 3{\sqrt {N}}} 6 Н {\displaystyle 6{\sqrt {N}}}
  • Задержка синхронизации: 2 задержки распространения сообщения
  • Алгоритм может заблокироваться без установленной защиты. [1] [2]

Смотрите также

Ссылки

  1. ^ «Алгоритм взаимного исключения Маекавы: подход голосования».
  2. ^ «Распределенное взаимное исключение» (PDF) .
  • М. Маекава, «Алгоритм √N для взаимного исключения в децентрализованных системах», ACM

Труды по компьютерным системам, т. 3, № 2, стр. 145–159, 1985.

  • Мамору Маекава, Артур Э. Олдехофт, Родни Р. Олдехофт (1987). Операционные системы: Расширенная концепция. Benjamin/Cummings Publishing Company, Inc.
  • Б. Сандерс (1987). Информационная структура распределенных алгоритмов взаимного исключения. ACM Transactions on Computer Systems, т. 3, № 2, стр. 145–59.
Взято с "https://en.wikipedia.org/w/index.php?title=Maekawa%27s_algorithm&oldid=1162661786"