на тему рефераты
 
Главная | Карта сайта
на тему рефераты
РАЗДЕЛЫ

на тему рефераты
ПАРТНЕРЫ

на тему рефераты
АЛФАВИТ
... А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

на тему рефераты
ПОИСК
Введите фамилию автора:


Реферат: Распределенные алгоритмы


Теорема 8.2 Для каждого алгоритма обнаружения завершения существует основное вычисление, которое использует М основных сообщений и для которого алгоритм обнаружения использует по крайне мере М управляющих сообщений.

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

Пусть g  конфигурация в который два процесса, p и q, активные и нет сообщений, находящихся в процессе передачи. Если основной алгоритм централизован, такая конфигурация может быть достигнута из начальной конфигурации,  обменом одного основного сообщения; в остальных случаях, такие конфигурации включены как начальные.

Сначала рассмотрите вычисление где, начиная с конфигурации g, оба процесса станут одновременно пассивными, то есть, система достигнет d = Ip(Iq (g)). Завершение должно быть обнаружено за конечное число шагов; но ни p ни q не могут вызвать алгоритм объявления не получа сначала сообщение от другого процесса. Иначе, завершение могло бы быть обнаружено ошибочно в конфигурации, где некоторый другой процесс все еще активен. (Если завершение обнаружено третьим процессом, необходимы по крайней мере два сообщения.) Следовательно, по крайней мере одно управляющее сообщение должно быть использовано в конфигурации d прежде, чем завершение может быть обнаружено.

Без потери общности, предположите, что p пошлет управляющее сообщение в конфигурации d. Рассмотрим вычисление, в котором, начинающийся с конфигурации g, только p становится пассивным, то есть, система достигает конфигурации gp= I p (g). Состояние p одинаково конфигурациях gp и d, и следовательно, p также посылает управляющее сообщение в конфигурации gp. Управляющий алгоритм может продолжать свою работу, но это не приведет к обнаружению завершения, т.к. q все еще активен. После того, как управляющий алгоритм прекратит обмен сообщениями, q посылает основное сообщение p, чтобы возвратиться конфигурацию, где  p и q активены. Управляющий алгоритм может продолжать свою работу, но после конечного числа шагов будет снова достигнута конфигурация, в котором  p и q являются активными и нет сообщений, которые находятся в процессе передачи. Подведем итог,

(1) Конфигурация, в которой p и q являются активными и нет сообщений, которые находятся в процессе передачи, может быть достигнута из начальной конфигурации передачей  по крайней мере одного основного сообщения;

(2) Основной алгоритм может переходить из одной такой конфигурации в другую,  передачей одного сообщения и вынуждая управляющий алгоритм передать по крайней мере одно управляющее сообщение ;

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

Теорема таким образом доказана. o                                  

Теорема 8.3 Обнаружение завершение децентрализованного основного вычисления требует в худшем случае передачи по крайней мере W управляющих сообщений.

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

Начало алгоритма обнаружения. Chandrasekaran и Venkate-Сан [CV90] получили нижнюю границу управляющих сообщений ôEô полагаясь два следующих дополнительных предположения.

Cl. Каналы - fifo.

C2. Алгоритм обнаружения завершения может начинать выполнение в любое время после того, как началось основное вычисление, то есть, в произвольной конфигурации основного вычисления.

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

 

var SentStopp   : boolean    init false ;

      RecStopp    : integer      init 0;

Procedure Announce;

      begin if not SentStopp then

                begin SentStopp := true;

                          forall q Î Outp do send ( stop ) to q

               end

       end

 

{ Сообщение ( stop ) пришло в p }

       begin receive (stop) ; RecStopp := RecStopp + 1 ;

                 Announce ;

                if RecStopp = #Inp then halt

       end

Алгоритм 8.2 алгоритм объявления.

 

Это сообщение не замечается управляющим алгоритмом, из которого выводится неверное обнаружение. Алгоритм Chandrasekaran и Venkatesan посылает управляющее сообщение через каждый канал, таким образом отправка всех сообщений происходит до начала работы управляющего алгоритма и получение сообщений происходит до обнаружения.

Можно показать,используя аргументы подобные тем, что использовались в [CV90], что проблема не имеет решение вообще, если предположение C2 действует, а предположение C1 - нет. В этой главе мы предполагаем, что управляющий алгоритм начинает работу в начальной конфигурации основного вычисления, то есть основное вычисление не исполняет никакое незамеченное событие до начала работы управляющего алгоритма. Если это предположение заменить на предположением C2, проблема имеет решение, тогда и только тогда, когда каналы - fifo, и решение найдено в [CV90] для этого случая.

8.1.3 Завершение Процессов

Чтобы объявить о завершение всем процессам, им посылается сообщение ( stop ). Каждый процесс посылает такое сообщение всем соседям, но делает это не более одного раза при локальном вызове алгоритма объявления или при получении сообщения ( stop ).При получении сообщения ( stop ) от каждого соседа,  процесс выполняет оператор  stop , переводя процесс  конечное состояние. Процедура объявления представлена  Алгоритмом 8.2.

Алгоритм 8.2 может использоваться для произвольной связной топологии, включая направленные сети, и не требует ни лидера, ни идентификаторов, ни знания топологии вообще.

8.2 Деревья Вычислений и Леса

Решения, описанные в этом разделе основаны на динамическом поддержании направленных графов, называемых графом вычисления, узлы которого включают все активные процессы и все основные сообщения, находящиеся впроцессе пердачи. Завершение считается обнаруженным, если граф вычисления становится пустым. Решения этого раздела требуют, чтобы сеть была ненаправлена, то есть, сообщения могут передаваться в двух направлениях через каждый канал. Подраздел 8.2.1 описывает решение для централизованного основным вычисления, для которого граф вычисления является деревом с инициатором в качестве корня. Подраздел 8.2.2 обобщает это решение для децентрализованных основных вычислений и использует лес, в котором каждый инициатор основного вычисления является корнем дерева.

8.2.1 Dijkstra-Scholten Алгоритм

Алгоритм Dijkstra и Scholten [DS80] обнаруживает завершение централизованного основного вычисления (называемого диффузийным вычислением в [DS80]). Инициатор основного вычисления (называемого окружением в [DS80]), также играет специальную роль в алгоритме обнаружения и обозначается p0.

Алгоритм обнаружения динамически поддерживает дерево вычислений T = (VT, ET) со следующими двумя свойствами.

(1) T пусто или T - направленное дерево с корнем p0.

(2) Множество VT  включает все активные процессы и все основные сообщения, находящиеся в процессе передачи.

Инициатор p0 вызывает алгоритм объявления когда p0 Ï VT  согласно первому свойству, T пусто в этом случае, и согласно второму свойству,  предикат term принимает значение истина .

Для сохранения свойств дерева вычислений во время выполнения основного вычисления, T должно расширятся при отправке основного сообщения или при переходе процесса, не принадлежащего дереву, в активное состояние. Когда p посылает основное сообщение (mes), (mes) вставляется в дерево, и отцом (mes) является p. Когда процесс p, не принадлежащий дереву, становится активным получая сообщения от q, q становится отцом p. Для того, чтобы представить отправителя сообщения явно, основное сообщение (mes) послаемой q будем обозначать  (mes, q).

Удаление узлов из T также необходимо по двум причинам. Во первых, основное сообщение удаляется после его получения. Во вторых, для того чтобы гарантировать продвижение алгоритма обнаружения дерево должно быть опустошено за конечное число шагов после завершения.

 

var statep   : (active, passive)  init if p = p0 then active else passive;

       sсp       : integer                 init 0;

      fatherp : P                          init if p == p0 then p else udef;

 

Sp: { statep = active }

       begin send (mes, p) ; scp := scp + 1 end

 

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

       begin receive (mes, q);, statep := active;,

                 if fatherp = udef then fatherp := q else send ( sig, q ) to q

       end

Ip: { statep = active }

      begin statep := passive ;

                if scp = 0 then (* Удаляем p из T *)

                     begin if fatherp = p then Announce else send (sig , fatherp) to fatherp ;

                                fatherp := udef

                     end

       end

Ap: { Сигнал (sig ,p) прибывает в p }

      begin receive (sig,p) ; scp := scp -1 ;

                 if scp = 0 and statep = passive then

                      begin if fatherp = p then Announce else send ( sig, fatherp ) to fatherp ;

                                 fatherp := udef

                      end

      end

Алгоритм 8.3 dijkstra-scholten алгоритм.

Сообщения - листья T; процессы поддерживают переменную, которая считает число их сыновей в T. Удаление сына процесса p происходит в другом процессе q; это происходит при получении сообщения сына или удалении сына процесса q. Для того, чтобы предотвратить искажение данных счетчика сына p, процессу p посылается сигнальное сообщение (sig, p) об удалении его сына. Это сообщение заменяет удаленного сына p, и его удаление, т.е. получение, происходит в процессе p и p при получении сигнала уменьшает на единицу счетчик сыновей.

Алгоритм описан как Алгоритм 8.3. Каждый процесс p имеет переменную fatherp, которая не определена если pÏVT , равна p если p является корнем, и является отцом p, если p - не корень в T. Переменная scp содержит число сыновей p в T.

Доказательство правильности строго устанавливает, что  граф T, как определено, является деревом и что он становится пустым только после завершения основного вычисления. Для любой конфигурации g Алгоритма 8.3, определено

VT = {p : fatherp ¹ udef} È {передается (mes,p) } È {передается ( sig,p) }

И

ET =   {(p,  fatherp) : fatherp ¹ udef Ù fatherp ¹ p}

                 È { ((mes, p), p) : (mes, p) передается }È{((sig,p), p) : (sig, p) передается }.

Безопасность алгоритма следует из утверждения P, определенного следующим образом

P º  statep = active Þ p Î Vp                                                (1)

                Ù (u, v) Î ET Þ u ÎVT Ù v Î VT  Ç P           (2)

                Ù scp = #{v : (v, p) ÎET }                             (3)

                Ù VT ¹ Æ Þ  T дерево с корнем p0            (4)

                Ù (statep = passive Ù scp = 0) Þ p Ï VT     (5)

Значение этого инварианта следующие. По определению, множество узлов T включает все сообщения (основные и управляющие), и согласно пункту (1) оно также включает все активные процессы. Пункт (2) скорее технический; он заявляет, что T - действительно граф, и все ребра направлены к процессам. Пункт (3) выражает правильность счетчика сыновей каждого процесса, и пункт (4) заявляет, что T - дерево, и p0 - корень. Пункт (5) используется, чтобы показать, что дерево действительно разрушается, если основное вычисление заканчивается. Для доказательства правильности, обратите внимание, что из P следует, что fatherp = p только для p = p0.

Lemma 8.4 P - инвариант Dijkstra-Scholten алгоритма.

Доказательство. Первоначально statep = passive для всех p ¹ p0 и fatherp0  ¹ udef, который доказывает пункт (1). Также, ET = Æ, что доказывает (2). Так как scp = 0 для каждого p, удовлетворяется (3). VT = {po} и ET = Æ, таким образом T - дерево с корнем p0, что доказывает (4). Единственный процесс в V- p0, и p0 активен.

Sp: Никакой процесс не становится активным в Sp, и никакой процесс не удаляется из VT, так что (1) сохраняется.

Применимость действия означает, что p, отец нового узла (mes, p), находится в VT, что доказывает, что (2) сохраняется. В результате действия, VT   дополняется узлом (mes, p) и ET   дугой ((mes, p), p), что означает, что T остается деревом, и scp правильно увеличивается, чтобы представить нового сына p, следовательно (3) и (4) сохраняются.

Никакой процесс не становится пассивным листом, и никакой процесс не вставлен в VT , таким образом (5) сохраняется.

Rp: Или p уже был в VT (fatherp ¹ udef) или p вставлен в VT  после действия, таким образом (1) сохраняется.

Если значение fatherp определено, его новое значение - q, и если сигнал послан процессом p, его отец - также q, и q находится в VT, таким образом (2) сохраняется. Число сыновей q не изменяется, потому что сын (mes, q) процесса q заменяется сыном p или сыном (sig, q), так что scq остается правильным, который сохраняет (3).

Структура графа не изменяется, таким образом (4) сохраняется. Процесс p находится в VT после действия в любом случае, таким образом (5) сохраняется.

Ip: Переход p в пассивное состояние сохраняют (1), (2), (3) и (4). Из того, что p был прежде активен следует, что p был в VT. Если scp = 0, p удаляется из VT, таким образом (5) сохраняется.

Затем мы рассматриваем что случится при удалении p из T, то есть, если p окажется  пассивным листом T.

Если сигнал посылается процессом p, отец сигнала - последний отец p, который находится в VT, следовательно (2) сохраняется. В этом случае, сигнал заменяет p как сын процесса fatherp, следовательно fatherfather p остается правильным, и (3) сохраняется. Структура графа не изменилась, следовательно (4) сохраняется.

Иначе, то есть, если fatherp = p, p = p0 и p, являющийся листом, означает, что p был единственным узелом T, так что удаление опустошает T , что сохраняет (4).

Ap: Получение сигнала уменьшает число сыновей p на единицу, и присваивание значения на scp гарантируетсохранение (3). То, что p был отецом сигнала, означает, что p был в VT. Если statep = passive и после получения scp присваивается 0, p удаляется, таким образом сохраняется (5). Если p удаляется из VT, инвариант сохраняется по тем же причинам, что и для действия Ip. o

Теорема 8.5 Dijkstra-Scholten алгоритм (Алгоритм 8.3) - правильный алгоритм обнаружения завершения и использует М управляющих сообщений.

Доказательство. Пусть S сумма всех счетчиков сыновей, то есть, S = SpÎ P sc p . Первоначально S = 0, S увеличивается на единицу при посылке основного сообщения (в Sp), S - уменьшается на единицу, когда получается управляющее сообщение (в Ap), и S никогда не становится отрицательным (из (3)). Это означает, что число управляющих сообщений никогда не превышает число основных сообщений в любом вычислении.

Чтобы доказать живость алгоритма, предположим, что основное вычисление закончилось. После завершения только действия Ap может иметь место и т.к. S уменьшается на единицу при каждом таком переходе, алгоритм достигает конечной конфигурации. Заметьте, что в этой конфигурации, VT не содержит никакие сообщения. Также, из (5), VT не содержит никаких пассивных листьев. Следовательно, T не имеет никаких листьев, что означает, что T пусто. Дерево стало пустым, когда p0 удалил себя, и программа  такова, что p0 на этом шаге вызывает алгоритм объявления.

Чтобы доказать безопасность, обратите внимание, что только p0 вызывает алгоритм объявления, и делает это после того, как удаляет себя из VT. Из (4), T пусто, когда это случается,что заключает в себе term. o                                                                                           

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

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42


на тему рефераты
НОВОСТИ на тему рефераты
на тему рефераты
ВХОД на тему рефераты
Логин:
Пароль:
регистрация
забыли пароль?

на тему рефераты    
на тему рефераты
ТЕГИ на тему рефераты

Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое.


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.