RSS    

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

High  : integer ;    (* Принятые слова текущего соединения *)

St       : timer ;      (* Таймер соединения *)

Запись соединения приемника:

Exp  : integer ;             (* Ожидаемый порядковый номер *)

Rt     : timer ;               (* Таймер соединения *)

Подсистема связи:

Mq    : channel ;           (* Пакеты данных для q *)

Mp   : channel ;           (* Пакеты подтверждения для p *)

Вспомогательные переменные:

B    : integer init 0 ;                 (* Слова в предыдущем соединении *)

cr    : boolean init false ;         (* Существование соединения для приемника *)

cs    : boolean init false ;         (*Существование соединения для отправителя *)

Ðèñóíîê 3.3 Переменные протокола, основанного на таймере.

Протокол посылает пакеты данных, состоящие из: бита (бит начала-последовательности; его значение будет обсуждаться позже), порядкового номера и слова. Для анализа протокола каждый пакет данных содержит четвертое поле, называемое оставшееся время жизни пакета. Оно показывает максимальное время, в течение которого пакет еще может находиться в канале до того, как он должен быть принят или стать потерянным согласно предположению об ограниченном времени жизни. В момент отправления оставшееся время жизни пакета всегда равно m. Пакеты подтверждения протокола состоят только из порядкового номера, ожидаемого процессом q, но опять для целей анализа каждое подтверждение содержит оставшееся время жизни пакета.

Ap: (* Принятие следующего слова *)

begin if not cs then

begin (* Сначала соединение открывается *)

create (St, High, Low) ; (* cs := true *)

Low := High := 0 ; St := S

end;

Ut[B + High] := U, High := High + 1

end

Sp: (* Отправление i-го слова текущего соединения *)

{ cs /\ Low £ i < High /\ Ut[B + i] > 0}

begin      

send <data, (i = Low),i, inp[B + i],m > ;

St:=S

end

Rp:          (* Принятие подтверждения *)

{ cs /\ <ack, i, r   Mp }

begin receive <ack, i, r > ; Low := max (Low, i) end

Ep:          (* Генерация сообщения об ошибке для возможно потерянного слова *)

{cs /\ Ut[B + Low] £ -2m -R}

begin error [B + Low] := true ; Low := Low + 1 end

Cp:          (* Закрытие соединения *)

{cs /\ St < 0 /\ Low = High }

begin B := B + High , delete (St, High, Low) end

(* cs := false *)

Àëãîðèòì 3.4 Протокол отправителя.

Закрытие соединения контролируется таймерами, таймером St для отправителя и таймером Rt для приемника. Ограниченный интервал посылки каждого слова и ограниченное время жизни пакета приводят к тому, что каждое слово может быть найдено в каналах только лишь в течение интервала времени длиной m + U, начиная с момента принятия слова. Это позволяет приемнику отбрасывать информацию о конкретном слове через m + U  единиц времени после принятия слова; после этого не могут появиться дубликаты, следовательно не возможна повторная доставка. Таймер Rt устанавливается в R каждый раз, когда слово доставляется, константа R выбирается так, чтобы удовлетворять неравенству R ³ U + m. Если следующее слово принимается в течение R единиц времени, то таймер Rt обновляется, иначе соединение закрывается. Значение таймера отправители выбирается так, чтобы невозможно было принять подтверждение при закрытом соединении; для этого, соединение поддерживается в течение по крайней мере S единиц времени после отправления пакета, где S - константа, выбираемая так, чтобы удовлетворять S ³ R+2m. Таймер St устанавливается в S каждый раз, когда посылается пакет, и соединение может быть закрыто только если St < 0. Если к этому времени еще остались незавершенные слова (ò.å. слова, для которых не было получено подтверждение), эти слова объявляются потерянными до закрытия соединения.

Rq:          (* Принимаем пакет данных *)

{ <data, s, i,w,r > Î Mq }

begin receive <data, s, i,w,r > ;

if cr then

   if i = Exp then

begin Rt := R ; Exp := i + 1 ; deliver w end

else if s = true then

    begin create (Rt, Exp) ; (* cr := true *)

Rt := R ; Exp := i +1 ; deliver w

    end

end

Sq:           (* Посылаем подтверждение *)

{cr}

                begin send <ack, Exp, m > end

(* Закрытие соединения по истечении времени Rt, см. В действии Time *)

Àëãîðèòì 3.5 Протокол приемника

Бит начало-последовательности используется приемником, если пакет получен при закрытом соединении, чтобы решить, может ли быть открыто соединение (и доставлено слово в пакете ). Отправитель устанавливает бит в true, если все предыдущие слова были подтверждены или объявлены (как возможно потерянные). Когда q получает пакет при уже открытом соединении,  содержащееся слово доставляется тогда и только тогда, когда порядковый номер пакета равен ожидаемому порядковому номеру (хранится в Exp).

Остается обсудить значение переменной B в протоколе отправителя. Это вспомогательная переменная, введенная только с целью доказательства правильности протокола. Отправитель нумерует слова в каждом соединении, начиная с 0, но, чтобы различать слова в различных соединениях, все слова индексируются последовательно по возрастанию для анализа протокола. Таким образом, там, где отправитель индексирует слово как i, "абсолютный" номер указанного слова  B + i, где B - общее количество пакетов, принятых p в предыдущих соединениях. Соответствие между "внутренними" и "абсолютными" номерами слов показывается на Рисунке 3.7. В реализации протокола B не хранится, и отправитель "забывает" все слова inp [0 .. B-1].

Loss:  { m Î M }    (* M - либо  Mp, либо Mq *)

begin remove m from M end

Dupl: { m ÎM }    (*M - либо  Mp, либо Mq *)

begin insert m in M end

Time:  (* d > 0 *)

begin forall i do Ut[i] := Ut[i] -d ,

St := St -d  ; Rt := Rt - d ;

if Rt £ 0 then delete (Rt, Exp) ;  (* cr := false *)

forall <.., r> Î Mp, Mq do

begin r := rd ;

                         if r £ 0 then remove packet

               end

end

Àëãîðèòì 3.6 Дополнительные переходы Протокола.

Подсистема связи представляется двумя мультимножествами, Mp для пакетов с адресатом p и Mq для пакетов с адресатом q. Протокол отправителя - Алгоритм 3.4, протокол приемника - Алгоритм 3.5. Имеются дополнительные переходы системы, представленные Алгоритмом 3.6, которые не соответствуют шагам в протоколе процессов. Эти переходы представляют собой отказы канала и изменение времени. В переходах Loss и Dupl M означает или Mp, или Mq. Действие Time уменьшает все таймеры в системе на величину d, это случается между двумя дискретными событиями, которые отличаются на d единиц времени. Когда таймер приемника достигает значения 0, соединение закрывается.

Ðèñóíîê 3.7 Порядковые номера протокола.

 

3.2.2 Доказательство корректности протокола

Требуемые свойства протокола будут доказаны в серии лемм и теорем. Утверждение P0, которое определено ниже, показывает, что соединение отправителя остается открытым пока в системе еще есть пакеты, и что порядковые номера этих пакетов имеют корректное значение в текущем соединении.

P0 º        cs Þ St £ S                                                               (1)

cr Þ 0 < Rt£ R                                                           (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, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.