Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
зачёт Сёмкин.docx
Скачиваний:
5
Добавлен:
19.12.2018
Размер:
196.86 Кб
Скачать

16 И 17.Распределённая взаимоблокировка. Виды распределённых взаимоблокировок. Методы предотвращения взаимоблокировок.

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

Два типа взаимоблокировки:

1) в связи с распределением ресурсов – когда процесс пытается получить доступ к ресурсам, которые находятся на другом узле сети. При этом образуется группа процессов, располагающихся на различных узлах сети, которые пытаются получить доступ к ресурсу на сервере, например.

Условия возникновения блокировки:

1) взаимоисключение – когда одновременно использовать критический ресурс может только один процесс;

2) удержание и ожидание – когда процесс удерживает все выданные ему ресурсы и не освобождает;

3) отсутствие перераспределения – ресурс не может быть принудительно отнят у процесса;

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

Также есть фиктивная (фантомная, ложная) блокировка:

(1) три процесса, у каждого по ресурсу.

(2) P3 освобождает ресурс r3 и запрашивает ресурс r1. Замкнутой цепочки нет.

(3) P3 сначала запрашивает r1, но r3 ещё не освободил – тогда блокировка, замкнутая цепь запросов. Однако, это не будет являться взаимоблокировкой, потому что P3 всё-таки освободит ресурс r3. Как-то так.

2) возникающая при обмене сообщениями. Возникают в том случае, когда требующимся процессом ресурсом является сообщение, при этом образуется группа процессов, каждый из которых ожидает сообщение от другого процесса, но каждый из них не может отправить сообщение. Какой либо процесс ждёт сообщение от остальных процессов.

Взаимоблокировка возникает при:

  1. Все процессы находятся в ожидании.

  1. Каналы пусты для передачи сообщений (нет ни одного сообщения).

Методы избежания взаимоблокировок:

1) метод иерархического (линейного) упорядочивания ресурсов – освобождение ресурсов предыдущего уровня или разрешение получения ресурса процессом только после того, как он использовал предыдущий. Не всегда можно использовать ресурсы только в линейном порядке;

2) использование временных меток. Ликвидируется условие кругового ожидания.

Выявление взаимоблокировок:

1) если централизованное управление, то выявление реализуется на одном узле;

2) иерархическое управление – узлы организованы в древовидную структуру: один корень, остальные подчинены.

Ещё может возникать блокировка, связанная с недоступностью буфера:

1) непосредственная блокировка хранения и передачи:

Оба буфера заняты и не могут передать сообщения. Эту блокировку можно предотвратить, если не позволять буферам заполняться полностью сообщениями для другого узла;

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

Чтобы избежать этого, используется структурированный буферный пул. Он разделён на некоторые буферы разных уровней от 0 до N (количество возможных транзитных передач в данной сети). Использование пула на нулевом уровне не ограничивается никакими правилами. В каждый уровень помещаются сообщения, которые прошли не менее транзитных передач. Если число меньше, то они помещаются либо на нулевой уровень, либо выкидываются. Использование пула позволяет избежать и прямых, и косвенных блокировок.

Проблема блокировки обычно возникает на сетевом уровне модели OSI.