Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций 3.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
598.02 Кб
Скачать

10.3.3. Восстановление, основанное на контрольных точках

При возникновении отказа, протоколы, основанные на ЛКТ, восстанавливают состояние системы в наиболее свежее консистентное множество ЛКТ, т.е., линию восстановления. Данный вид восстановления наиболее подходит для приложений, которые не часто взаимодействуют с удаленными ЭВМ. Методы восстановления, основанные на контрольных точках, могут быть классифицированы на три категории: некоординированные, координированные и коммуникационно-вынужденные.

Некоординированный (или независимый) механизм контрольных точек позволяет каждому процессу независимо решать, когда брать контрольные точки. Главным преимуществом данного подхода является низкие временные издержки в течение времени нормального исполнения, вследствие отсутствия координации между процессами. Автономность во взятии ЛКТ также позволяет каждому процессу выбирать такую позицию ЛКТ, которая ведет к уменьшению издержек, сохраняя меньшее количество информации состояния. Главным недостатком является возможность возникновения эффекта домино, как видно из рисунка 10.7, при котором может быть отменено большое количество выполненной полезной работы, независимо от числа взятых ЛКТ. Кроме того, каждый процесс должен поддерживать множественные ЛКТ, и алгоритм сборки мусора должен периодически вызваться для отклонения ЛКТ, которые больше не требуются.

В течение времени безотказного выполнения, зависимости между контрольными точками, образованные в следствии обмена сообщениями, должны быть зарегистрированы таким образом, чтобы консистентная ГКТ могла бы быть определена во время восстановления. Следующая методика прямого отслеживания зависимостей обычно используется в некоординированных протоколах контрольных точек. Пусть ci,x (0 ≤ i ≤ N - 1, x≥0) обозначает x-ую ЛКТ процесса Pi, где i - идентификатор процесса, а x – индекс ЛКТ (мы полагаем, что каждый процесс Pi начинает выполнение с начальной ЛКТ ci,0 ; и Ii,x (0 ≤ i ≤ N-1, x ≥ 1) обозначает интервал контрольной точки (или интервал) между ci,x-1 и ci,x .Как показано на рисунке 6, когда процесс Pi на интервале Ii,x посылает сообщение m процессу Pj, пара (i,x) переносится вместе с сообщением m. Когда процесс Pj принимает сообщение m в интервале Ij,y, он записывает зависимость между Ii,x и Ij,y , которая позднее сохраняется на устойчивом носителе, во время взятия ЛКТ cj,y.

Рис.10.7. Индекс контрольной точки и интервал контрольной точки.

Если происходит отказ, инициатор отката широковещательно передает dependency_request - сообщение, для сбора всей информации о зависимостях, поддерживаемой отдельно каждым процессом. Когда процесс принимает dependency_request - сообщение, он останавливает выполнение и посылает ответ с сохраненной информацией о зависимостях и информацией о зависимостях, ассоциированной с его текущим временным состоянием (называемой временной контрольной точкой), если таковая доступна. Затем инициатор вычисляет линию восстановления, основываясь на глобальной информации о зависимостях, и широковещательно рассылает rollback-request - сообщение, содержащее линию восстановления. При приеме rollback-request – сообщения, если временная контрольная точка процесса принадлежит линии восстановления, процесс просто возобновляет свое выполнение; иначе, он откатывается к более ранней контрольной точке, как указано в линии восстановления.