Алгоритм синхронизации логических часов

advertisement
Синхронизация в
распределенных системах
Выполнила:
Студентка ТИ-41м
Склярова Мария
Введение
Параллельное решение некоторой задачи на нескольких
процессорах требует наличие между последними
определенного взаимодействия.
Две фундаментальные проблемы параллельных вычислений:
 возникновение тупиков;
 недетерминированность параллельных вычислений.
ЗАДАЧА ДЕЙКСТРЫ «Обедающие
философы» (о модели параллельных процессов)
дворецкий
философы
Задача Дейкстры. Детали
-Детали задачи:
- сев за стол очередной философ берет 2 вилки – свою и любую
свободную и насыпает спагетти
- одновременно 5 человек подошли к столу
-Состояние модели: «Тупик» или «Клинч»
-Необходимы изменения в правилах для избегания данного состояния
Задача Дейкстры. Правила
ВАРИАНТЫ РЕШЕНИЯ ПРОБЛЕМЫ:
 дворецкий должен пропускать к столу не более 4 человек
одновременно – исключение состояния “тупик”
 если все вилки заняты и никто не ест, все кладут вилки и через
некоторое время повторяют попытку (возможно состояние «тупика»);
 если все вилки заняты и никто не ест, один из философов кладет свою
вилку
- возникает вопрос какой из философоф должен положить вилку;
- передача маркера.
РАЗДЕЛЯЕМЫЕ РЕСУРСЫ
КОРРЕКТНАЯ РАБОТА ПАРАЛЛЕЛЬНЫХ ПРОГРАММ:
- организация правильного взаимодействия последовательных процессов;
- обеспечение синхронизации между последовательными процессами.
Недооценка роли синхронизации взаимодействующих процессов является
одной из основных причин появления трудно уловимых логических
ошибок.
Синхронизация в распределенных
системах
 Синхронизация необходима процессам для организации
совместного использования ресурсов, таких как файлы или
устройства, а также для обмена данными.
 Синхронизация процессов — приведение двух или
нескольких процессов к такому их протеканию, когда
определённые стадии разных процессов совершаются в
определённом порядке, либо одновременно.
 В расперделенных системах процессы могут выполняются на
разных машинах,что приводит к невозможности
использования стандартных средств синхронизации
Синхронизация времени
 В распределенной системе, где каждый процессор имеет
собственные часы со своей точностью хода, программы,
использующие время становятся зависимыми от того,
часами какого компьютера они пользуются.
 Синхронизация физических часов (показывающих
реальное время) является сложной проблемой, однако
процессам не нужно, чтобы во всех машинах было
правильное время, для них важно, чтобы оно было везде
одинаковое.
 Для некоторых процессов важен только правильный
порядок событий. В этом случае необходима
синхронизация логических часов.
Алгоритм синхронизации логических
часов (алгоритм Лампорта)

a®b

a®bиb®c
a®c

"a случилось до b" и означает,

что все процессы в системе
считают, что сначала произошло
событие a, а потом - событие b
cвойство транзитивности:
Механизма ведения времени


a
а®b
Т(а)
Т(а) < Т(b)

Т(а)- время с которым согласны
все процессы в системе
Алгоритм синхронизации логических
часов (алгоритм Лампорта)
1
0
6
12
18
24
30
36
42
48
54
60
А
D
2
0
8
16
24
32
40
48
56
64
72
80
B
C
3
0
10
20
30
40
50
60
70
80
90
10
0
Алгоритм синхронизации логических
часов(алгоритм Лампорта)

Часы Тi увеличивают свое
значение с каждым событием в
процессе Pi: Тi=Тi+d (d > 0;1)
 Если событие a - посылка
сообщения m процессом Pi,
тогда в это сообщение
вписывается временная метка
tm=Тi(a).
 В момент получения этого
сообщения процессом Pj его
время корректируется
следующим образом:
Тj = max(Тj,tm+d)
1
0
6
12
18
24
30
36
42
48
70
76
А
D
2
0
8
16
24
32
40
48
61
69
77
85
B
C
3
0
10
20
30
40
50
60
70
80
90
10
0
Алгоритмы голосования
 Распределенные алгоритмы требуют, чтобы один из
процессов был координатором, инициатором или выполнял
другую специальную роль
 Необходимо считать, что каждый процесс имеет уникальный
номер, например сетевой адрес
 Алгоритмы голосования пытаются найти процесс с
максимальным номером и назначить его координатором.
Алгоритмы голосования
Выбор координатора
Алгоритм «задиры»
выборы
Круговой алгоритм
выборы
Алгоритмы взаимного исключения
 Когда процессу нужно читать или модифицировать
некоторые разделяемые структуры данных, ему необходимо
войти в критическую секцию, чтобы обеспечить себе
исключительное право использования этих данных.
 При этом он должен быть уверен, что никакой другой
процесс не будет иметь доступа к этому ресурсу
одновременно с ним.
 Это называется взаимным исключением.
Критический интервал
Критический интервал – последовательность действий, выполнение
которых должно выглядеть со стороны как одна непрерывная операция.
Защита критического интервала от одновременного вхождения в него
2-ух последовательных процессов.
1. 2 циклических процесса P1 и P2
2. Внутри КИ Р1 и Р2 находятся ограниченное время
Алгоритмы взаимного исключения
Централизованный алгоритм
Запрос
критическая
секция i
Разрешение
Распределенный алгоритм


1.
2.
3.
Процесс Аi
критическая зона N, Ai, T(a)
Процесс Aj:
Если получатель не находится и не собирается входить в
критическую секцию в данный момент, то он отсылает назад
процессу-отправителю сообщение с разрешением.
Если получатель уже находится в критической секции, то он
не отправляет никакого ответа, а ставит запрос в очередь.
Если получатель хочет войти в критическую секцию, но еще
не сделал этого, то он сравнивает временную отметку
поступившего сообщения со значением времени, которое
содержится в его собственном сообщении, разосланном всем
другим процессам. Если время в поступившем к нему
сообщении меньше, то он посылает сообщение-разрешение,
в обратном случае он не посылает ничего и ставит
поступившее сообщение-запрос в очередь.
Алгоритм древовидный маркерный

Вход в критическую секцию:
Процесс помещает свой запрос в очередь запросов
Посылает сообщение "ЗАПРОС" в направлении владельца маркера и ждет сообщений.

Поведение процесса при приеме сообщений:
Процесс, не находящийся внутри КС должен реагировать на сообщения двух видов "МАРКЕР" и "ЗАПРОС".
А) Пришло сообщение "МАРКЕР"
М1. Взять 1-ый запрос из очереди и послать маркер его автору (концептуально,
возможно себе);
М2. Поменять значение указателя в сторону маркера;
М3. Исключить запрос из очереди;
М4. Если в очереди остались запросы, то послать сообщение "ЗАПРОС" в
сторону маркера.
Б) Пришло сообщение "ЗАПРОС".
Поместить запрос в очередь
Если нет маркера, то послать сообщение "ЗАПРОС" в сторону маркера, иначе
(если есть маркер) - перейти на пункт М1.
Выход из критической секции.
Если очередь запросов пуста, то при выходе ничего не делается, иначе выполняется
пункт М1.
Алгоритм Token Ring
 Каждому процессу
назначается положение в
кольце
 При инициализации кольца
процесс 1 получает маркер,
или токен
 Токен передается от
процесса k процессу k + 1
сквозными сообщениями
 Входить в другую
критическую область,
используя один и тот же
маркер, запрещено
Неделимые транзакции
Транзакция—группа последовательных операций, которая
представляет собой логическую единицу работы с данными.
Распределённые транзакции подразумевают использование
больше чем одной транзакционной системы .
Свойства транзакций:
 Упорядочиваемость гарантирует, что если две или более
транзакции выполняются в одно и то же время, то конечный
результат выглядит так, как если бы все транзакции
выполнялись последовательно в некотором (в зависимости от
системы) порядке.
 Неделимость означает, что когда транзакция находится в
процессе выполнения, то никакой другой процесс не видит ее
промежуточные результаты.
 Постоянство означает, что после фиксации транзакции
никакой сбой не может отменить результатов ее выполнения.
Неделимые транзакции
 Подходы к реализации механизма транзакций
1.Все изменения данных процессом, во время транзакции,
осуществляются в индивидуальном рабочем пространстве, а
не в "реальном", под которым понимается файловая система.
2.Список намерений. Модификация файлов, перед изменением
любого блока, сопровождается записью в специальном файле
- журнал регистрации, где отмечается, какая транзакция
делает изменения, какой файл и блок изменяется и каковы
старое и новое значения изменяемого блока. Если транзакция
фиксируется, то и об этом делается запись в журнал
регистрации, но старые значения измененных данных
сохраняются. Если транзакция прерывается, то информация
журнала регистрации используется для приведения файла в
исходное состояние, и это действие называется откатом.
Неделимые транзакции
 В распределенных системах используется специальный
протокол - проток двухфазной фиксации транзакций.
Спасибо за внимание!
Download