ref (664672), страница 36

Файл №664672 ref (Распределенные алгоритмы) 36 страницаref (664672) страница 362016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 36)

Действительно, P0 истинен, когда t = N -1 и q = 0, и если t = 0 тогда из P следует, что

(i > 0 : statePi = passive)  (mcP0+ q = B),

так что p0 может определить завершение если state P0 = passive и mcP0 + q = 0.

Утверждение P0 устанавливается, когда p0 начинает волну, посылая маркер в pN -1 с q = 0. Отправление маркера сохраняет P0, только если отправляют маркер пассивные процессы и добавляют значение их счетчека сообщений; поэтому мы принимаем следующее правило.

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

При этом, P сохраняется при отправлении маркера и также при внутренних действиях; к сожалению, P не сохраняется при получении сообщения процессом p, с i > t. При получении сообщения P0 принимает значение ложь, то есть, это применимо только когда B> 0. Т.к. Почтовый сохраняется перед тем как принимает значение ложь,сохраняется P1, где

P1  (i t mcPi + q )>0.

Утверждение P1 остается истинным при получении сообщения процессом pi с i > t ; следовательно, более слабое утверждение P, определенное как Pm  (P0  P1) сохраняется при получениисообщения процессом pi с i > t.

var statep : {active, passive) ;

colorp : (white, black) ;

mcp : integer init 0 ;

Sp: { statep = active }

begin send ( mes ) ;

mcp := mcp + 1 (* Правило M *)

end

Rp: { Сообщение (mes) прибывает в p }

begin receive (mes) ; statep := active ;

mcp := mcp - 1; (*Правило M *)

colorp := black (*Правило 2 *)

end

Ip: { statep = active }

begin statep := passive end

Начало определения, выполняется один раз процессом p0:

begin send (tok, white, 0) to pN - 1 end

Tp: (* Процесс p обрабатывает маркер (tok,c,q ) *)

{ statep = passive } (*Правило I *)

begin if p = p0

then if (c = white)(colorp = white)(mcp + q = 0)

then Announce

else send (tok, white,0) to pN -1 (*Правило 4 *)

else if (colorp = white) (*Правила I and 3 *)

then send ( tok, c, q + mcp ) to Nextp

else send ( tok, black, q + mcp ) to Nextp ;

colorp := white (*Правило 5 *)

end

Алгоритм алгоритма 8.7 safra's.

Это измененное утверждение все еще позволяет обнаружить завершение процессу p0 при тех же самых условиях, потому что, если t = 0, P1 читает mcP0 + q > 0, таким образом если mcP0 + q = 0 (это уже требовалось для обнаружения), P1 сохраняется. Отправление маркера сохраняет P1, и тоже самое происходит при посылке основного сообщения. К сожалению, P1 может принималь значение ложь при получении сообщения процессом pi с i t. Как и в Подразделе 8.3.1, эта ситуация исправляется назначение цвета каждому процессу по следующему правилу:

Правило 2. Процесс получающий сообщение становится черным и P заменяется на Pm(P0  P1P2 ), где

P2 j (tj 0) : colorp = black.

При каждом получении соощения, при котором P1 принимает значение ложь, P2 принимает значение истинна, так что P не принимает значение ложь при любом основном действии. Так как (PcolorP0 = white  t = 0) P2 , все еще возможно обнаружить завершение с новым утверждением, а именно, проверяя является ли p0 белым (и пассивным) когда он обрабатывает маркер.

Ослабление P было успешно предотвращает изменение значения Р после основных событий; но более слабое утверждение может принять значение ложь при отправлении маркера, а именно, если процесс t - единственный черный процесс и он посылает маркер. Ситуация исправляется дальнейшим ослаблением P. Маркеру также назначается цвет (белый или черный) , и P ослабляется до Pm(P0P1P2P3), где

P3  маркер черный.

Отправление маркера сохраняет P3, если черные процессы отправляют черный маркер.

Правило 3. Когда черный процесс посылает маркер, маркер становится черным.

Т.к. (маркер белый)  P3 завершение может все еще обнаруживаться процессом p0, а именно, проверкой получает ли он белый маркер (и белый ли он сам и пассивный).

Действительно, теперь можно быть уверенным, что внутренние действия, основные коммуникации и отправление маркеров сохраняют P. Волна заканчивается неудачно, когда маркер возвращается в p0, если он черный, p0 черный, или mcP0 + q 0. Если волна заканчивается неудачно, должна быть начата новая волна.

Правило 4. Когда волна заканчивается неудачно, p0 начинает новую волну.

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

Заметим, что процесс p окрашивающий в белый цвет не изменяет заначение P на ложь если i > t, и что P всегда становится истинным когда p0 начинает волну, посылая маркер в pN -1.Из этого следует, что окрашивание в белый цвет может благополучно иметь место при отправлении маркера.

Правило 5. Каждые процесс становится белым сразу после посылки маркера. При этом гарантируется конечный успех волны после завершения основного вычисления. Алгоритм дается как Алгоритм 8.7.

Теорема 8.9 Алгоритм Сафра (Алгоритм 8.7) - правильный алгоритм обнаружения завершения для вычислений с асинхронным прохождением сообщений.

Доказательство. Алгоритм был разработан так, что предикат P, определенный как Pm(P0P1P2P3) - инвариант алгоритма.

Чтобы показать безопасность, заметим, что завершение обнаружевается при t = 0, stateP0 = passive, colorP0 = white, и mcP0 + q = 0.Из этих условий  P3,  P2, и  P1, следовательно PmP0, из чего вместе с stateP0 = passive и mcP0 + q = 0 следует term.

Чтобы показать живость, заметим, что после завершения основного вычисления счетчики сообщений не изменяют свои значения и их сумма, равняется 0. Волна, начатая в такой конфигурациизаканчивается с mcP0 +q = 0 и все процессы окрашены в белый цвет, что гарантирует, что следующая волна будет успешной. 

В отличие от алгоритма Dijkstra-Feijen-Van Gasteren, алгоритм Сафра не имеет ограниченной сложности для худшего случая; маркер может быть пропущен неограниченное число раз, в то время как все процессы - пассивные, но некоторые основные сообщения находятся в процессе передачи в течение длительный периода времени. Что касается алгоритма Dijkstra-Feijen-Van Gasteren, для основного вычисления со сложностью времени T можно ожидать выполнения (T + N) сообщений.

Векторно-расчетный алгоритм. Mattern [Mat87] предложил алгоритм, сопоставимый с алгоритмом Сафра, но который поддерживает отдельный счетчик сообщений для каждого адресата. Для процесса p счетчик сообщений - массив mcp[P]. Когда p посылает сообщение q, p изменяет счетчик mcp [q] := mcp [q]+l и когда p получает сообщение, он изменяет счетчик mcp [p] := mcp [p] - 1. Маркер также содержит массив счетчиков, и когда p обрабатывает маркер, к mcp добавляется в маркер и обнуляется (массив в начале содержит нули). Завершение обнаружено, когда маркер равняется 0.

Алгоритм векторного-подсчета имеет некоторые преимущества по сравнению с алгоритмом Сафра, но также и страдает от некоторых серьезных неудобств. Одно из преимуществ алгоритма состоит в том, что завершение обнаруживается быстрее, а именно за один обход маркера после возникновения завершения. Второе преимущество состоит в том, что пока вычисление не закончилось, маркер приостанавливается чаще, что может уменьшить число управляющих сообщений, используемых алгоритмом. В алгоритме Сафра, каждый пассивный процесс передает маркер; в алгоритме векторного подсчета такой процесс p не будет отправлять маркер если из информации, содержащейся в маркере следует, что сообщение находиться на пути к p.

Главное неудобство алгоритма векторного подсчета состоит в том, что маркер содержит большое количество информации (а именно, целое число для каждого процесса), которую нужно передавать в каждом управляющем сообщении. Это неудобство не обременительно, если число процессов не велико. Другое неудобство состоит в том, что требуется знание идентификаторов других процессов. Если вектор представлен как массив, каждый процесс должен заранее знать идентификаторы всех процессов, но это требование может быть смягчено, если вектор представлен как множество пар целого числа и идентификатора. Первоначально каждый процесс должен знать по крайней мере идентификаторы соседей (чтобы правильно увеличивать счетчик), а другие идентификаторы будут изучены в течение вычисления.

8.3.3 Использование Подтверждений

Алгоритм Сафра подсчитывает основные сообщения, которые посланы и получены, чтобы знать есть ли основные сообщения, находящиесы в процессе передачи. Также возможно гарантировать это используя подтверждения; несколько авторов предложили такое усовершенствование алгоритма Dijkstra-Feijen-Van Gasteren, см., например, Naimi [Nai88]. Это разновидность принципа обсуждается лишь кратко, потому что результирующий алгоритм не во всех смыслах является усовершенствованием алгоритма Shavit-Francez, и поэтому устарел.

Сначала, заметим, что никакое сообщение не находится в процессе передачи эквивалентено для всех p никакое сообщение, посланное p не находится в процессе передачи. Каждый процесс ответственен за сообщения, которые он послало, то есть, он должен позабититься о том, чтобы алгоритм объявления не был вызван, пока не будет уверенности в том, что все основные сообщения, посланные им получены. Метод обнаружения определяет для каждого процесса p локальное условие quiet(p) таким образом, что

quiet(p)(statep = passive  никакие основный сообщения, посланные процессом р не находятся в процессе передачи)

удовлетворен. Тогда (p : quiet(p)) term.

Чтобы устанавить, что никакое сообщение, посланное p не находится в процессе передачи, каждое сообщение подтверждается, и каждый процесс поддерживает счетчик числа подтверждений, которые он должен еще получить. Формально, утверждение P определяется как

P = p : (unackp = # (передается сообщение,посланное p) + # (передается подтверждение для p))

и поддерживается инвариант в соответствии с следующим правилом.

var statep : (active, passive) ;

colorp : (white, black) ;

unackp : integer init 0 ;

Sp: { statep = active }

begin send (mes) ; unackp:= unackp + 1 : (* Правило A *)

colorp := black (*Правило B *)

end

Характеристики

Тип файла
Документ
Размер
5,45 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6511
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее