Результаты (
русский) 2:
[копия]Скопировано!
В дополнение к переменной держателя, каждый узел имеет локальную Q очереди для хранения ожидающих запросов. Только первый запрос направляется к держателю. Схема алгоритма Реймонда представлена в следующем:
R1: Если узел J имеет маркер, то она входит в его CS. В противном случае, чтобы войти в CS, узел входит запрос в локальном Q.
R2: Когда узел J (который не держит маркер) имеет запрос непустой Q, он посылает запрос на его владельца, если J не сделано так и ждет маркера.
R3: Когда корень получает запрос, он посылает маркер соседу во главе его местного Q после того, как она завершила свой собственный CS. Затем он устанавливает ее держатель переменную этого соседа.
R4: Получив маркер, узел J направляет его к соседу во главе своей локальной Q, удаляет запрос из Q, и устанавливает его переменную держатель для этого соседа. Если есть ожидающие запросы в Q, то J посылает еще один запрос на его владельца.
Поскольку существует единственный маркер в системе, доказательство безопасности (МЕ1) тривиально. Тупик невозможно (ME2) , так как лежащая в основе ориентированный граф ациклический: процесс я ждет другого процесса у только если имеется направленный путь от I до J, откуда следует , что J не ждать , пока я. И, наконец, справедливость вытекает из того факта , что очереди обслуживаются в порядке поступления просьб, а также новый запрос от процесса , который приобрел маркер в недавнем прошлом помещается в очередь за оставшиеся ожидающих запросов в своей локальной очереди.
Для подробное доказательство этого алгоритма см [R89]. Так как среднее расстояние между парами узлов в случайно сгенерированных дерева O (журнал N), сложность сообщения алгоритма Реймонда утверждал, что O (журнал N).
переводится, пожалуйста, подождите..
