Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lit / Kosyakov_-_raspredelennye_sistemy_unlocked.pdf
Скачиваний:
222
Добавлен:
16.03.2016
Размер:
3.86 Mб
Скачать

Рис. 3.9. Пример работы адаптивного метода Жарда-Жордана.

Транзитивные зависимости заданного события ei могут быть восстановлены путем анализа отметок времени событий, c которыми ei связано отношением псевдо-прямой зависимости. Если такой анализ провести рекурсивно, то могут быть найдены все события, произошедшие

раньше ei.

Основное преимущество метода Жарда-Жордана заключается в том, что этот метод позволяет настраивать оптимальный размер отметки времени, передаваемой с каждым сообщением. А именно, количество пар, содержащихся в логических частично-векторных часах, может быть ограничено сверху путем регистрации дополнительных событий. Например, если требуется, чтобы размер логического времени не превышал k пар, достаточно, чтобы процесс зарегистрировал дополнительное событие, когда число накопленных им зависимостей достигнет k. Такое свойство адаптивной регистрации событий позволяет гибко контролировать накладные расходы на передачу сообщений при распределенном вычислении.

3.5.Матричное время

Вмеханизме матричных часов логическое время представлено в виде матрицы неотрицательных целых чисел размером N x N. Каждый процесс

Pi локально поддерживает работу с матрицей Mi[1..N, 1..N] со следующими элементами.

В элементе Mi[i, i] хранятся показания локальных часов процесса Pi для измерения своего собственного хода выполнения.

93

В элементе Mi[i, j] содержатся последние сведения, полученные процессом Pi о локальном времени процесса Pj. Другими словами, строка Mi[i, .] является векторным временем процесса Pi.

В элементе Mi[j, k] содержатся последние сведения, полученные процессом Pi о том, какой информацией обладает процесс Pj о локальном времени процесса Pk.

Таким образом всю матрицу Mi можно рассматривать как локальное представление процесса Pi не только о текущем глобальном времени, но и о том, что процессы "знают" о локальном времени друг друга. Отметка времени события ei, происходящего в процессе Pi, определяется всеми элементами матрицы Mi на момент наступления этого события и обозначается через M(ei).

Каждый процесс Pi использует следующие правила для работы со своими матричными часами.

Правило 1: перед выполнением любого события процесс Pi увеличивает показания своих локальных часов Mi[i, i]:

Mi[i, i] = Mi[i, i] + d, где d > 0.

Как и для случая скалярного времени, каждый раз d может принимать любые значения. Однако обычно d всегда полагают равным единице.

Перед выполнением события получения сообщения процесс вынужден произвести немного другие действия согласно следующему правилу.

Правило 2: в каждое передаваемое сообщение добавляется значение матричного времени Mi процесса-отправителя Pi на момент отправки этого сообщения. Когда процесс Pj получает сообщение от процесса Pi с отметкой времени Mmsg, он выполняет следующие шаги:

1.обновляет показания своих векторных часов в строке Mj[j, .] согласно векторному времени процесса Pi, полученному в строке Mmsg[i, .]:

1 ≤ k N: Mj[j, k] = max(Mj[j, k], Mmsg[i, k]);

остальные элементы матрицы Mj обновляются по правилу:

1k, l N: Mj[k, l] = max(Mj[k, l], Mmsg[k, l]).

2.исполняет Правило 1;

3.доставляет сообщение и приступает к его обработке.

Элементы матрицы Mi[k, l] инициализируется нулем, 1 ≤ k, l N.

Пример работы алгоритма матричных часов для d = 1 приведен на рис. 3.10. Рассмотрим матричную отметку времени для события e26 процесса P2. Событие e15 является последним событием в процессе P1, которое предшествует e26 согласно отношению причинно-следственного порядка. Поэтому M(e26)[2,1] = M(e26)[1,1] = 5. Аналогично, M(e26)[2,3] =

94

M(e26)[3,3] = 4. По сведениям процесса P2 последним событием процесса P1, о котором "знает" процесс P3, является событие e12. Поэтому M(e26)[3,1] = 2. Аналогично, e34 – последнее событие в P3, о котором "знает" P1 по сведениям P2, т.е. M(e26)[1,3] = 4.

Рис. 3.10. Пример работы алгоритма матричных часов.

3.5.1 Основные свойства

По определению строка Mi[i, .] обладает всеми свойствами векторных часов. Кроме этого, если для матричного времени процесса Pi верно неравенство mink (Mi[k, l]) ≥ t, то по сведениям процесса Pi каждый из процессов Pk "знает" о том, что локальное время процесса Pl достигло значения t или превышает его. Например, исходя из матричной отметки времени события e26 на рис. 3.10 процессу P2 известно, что все процессы в системе обладают информацией о том, что ход выполнения процесса P1 достиг события e12. Из данного неравенства процесс Pi может сделать вывод, что всем другим процессам в системе известно о том, что процесс Pl уже не будет передавать информацию с отметкой своего логического локального времени меньшей, либо равной t. Во многих приложениях это означает, что процессам больше не нужно хранить какие-либо данные, полученные ранее от процесса Pl, и они могут без проблем удалять устаревшую информацию (англ. obsolete information).

Если значение прироста локальных логических часов всегда равно единице (d = 1), то элемент матрицы Mi[k, l] будет содержать в себе число событий, выполненных в процессе Pl и известных процессу Pk настолько, насколько об этом "знает" процесс Pi.

95

Соседние файлы в папке Lit