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

4.1 Взаимоблокировки (тупики, deadlock). Условия возникновения тупиковой ситуации. Стратегии борьбы с взаимоблокировками.

Взаимоблокировка-это ситуация когда группа процессов находиться в тупиковой ситуации, если каждый процесс из группы ожидает события, которое может вызвать только другой процесс из той же группы.

Условие взаимоблокировок

1. Условие взаимного исключения. Каждый ресурс в данный момент времени или отдан ровно одному процессу или доступен.

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

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

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

Обнаружение и устранение взаимоблокировок

1. Восстановление при помощи принудительном выпуске ресурса заключается в преднамеренном отборе ресурсов у процесса и используется в основном на системах пакетной обработки данных. Имеет недостаток: не все ресурсы могут быть отобраны у процесса.

2. Восстановление через откат. Заключаться в создании контрольных точек разработчиками в приложениях. После возникновения взаимоблокировки процесс возвращается к ближайшей контрольной точке и вновь начинает свою работу с того момента.

3. Во становление путем уничтожения процессов. Заключается в уничтожении одного из процессов попавших взаимоблокировку. Если уничтожение не помогает, уничтожается следующий из процессов пока не будет разрешена тупиковая ситуация.

Предотвращение взаимоблокировок

Атака условия взаимного исключения. Если в системе нет ресурса, представленных в единоличное пользование одному процессу, то никогда не произойдет тупиковой ситуации. Следует избегать выделения ресурсов, когда это не является действительно необходимым и важно пытаться обеспечить ситуацию в которой претендовать на ресурс может минимально количество процессов.

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

Недостатки данного способа решения:

1.Не все процессы знают, сколько и каких ресурсов им понадобиться до начала работы.

2.Ресурсы не будут использоваться оптимально

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

Атака условия циклического ожидания. Управление ресурсами как правило гласят что процессу дано право только на один ресурс в конкретный момент времени. Данное правило может быть задействовано не для всех процессов.

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

Алгоритм банкира. Безопасное состояние-это такое состояние для которого иметься хотя бы одна последовательности событий которая не приведет к взаимоблокировке. Суть алгоритма: Предположим, что у системы есть «х» устройств.

  1. Операционная система принимает запрос от пользовательского процесса, если его макс потребность не превышает «х».

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

  3. Текущее состояние системы называется надежным, если ОС может обеспечить всем процессам их выполнения в течении конечного времени.

  4. В соответствии с алгоритмом банкира выделения устройств возможно только если состояние системы остается надежным.

Выводы: Имеются различные способы выхода из взаимоблокировок.

  1. Снятие оператором выполняющимся процессом до тех пор пока не исчезнет взаимоблокировка.

  2. Перезагрузка системы

  3. Рестарт системы с контрольной точки

.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]