Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОС / 4. ОС - Управление процессами - 1

.pdf
Скачиваний:
55
Добавлен:
01.06.2015
Размер:
1.1 Mб
Скачать

61

Основные методы борьбы с тупиками

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

Предотвращение тупиков при работе системы (при запуске процессов и при запросе ими ресурсов).

Устранение возникших тупиков.

Операционные системы. Управление процессами - 1

62

Анализ на этапе разработки

Анализ алгоритмов (или программ) на этапе разработки возможен только в том случае, если все исходные тексты доступны. Это возможно в следующих случаях:

при разработке встроенных систем управления, для которых набор решаемых задач зафиксирован, а прикладные программы разрабатываются вместе с ОС;

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

Операционные системы. Управление процессами - 1

63

Предотвращение тупиков при работе ОС

Методы этой группы анализируют запросы процессов на ресурсы (при запуске процесса и в ходе его работы) и принимают одно из следующих решений:

выделить ресурсы;

заблокировать процесс до выполнения некоторого условия;

снять процесс.

Можно выделить три основных метода предотвращения тупиков, от самого грубого до более изощренных:

выделение всех ресурсов при запуске процесса;

алгоритм нумерованных ресурсов;

алгоритм банкира.

Операционные системы. Управление процессами - 1

64

Выделение всех ресурсов призапуске

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

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

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

Операционные системы. Управление процессами - 1

65

Алгоритм нумерованных ресурсов

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

Как именно нумеровать? Это все равно с точки зрения предотвращения тупиков, но для повышения производительности системы желательно большие номера присвоить более дефицитным ресурсам.

Действует правило: процесс не может запрашивать ресурс с номером меньшим, чем один из ресурсов удерживаемых этим процессом.

При таком условии в графе процессов и ресурсов не может возникнуть цикл.

Операционные системы. Управление процессами - 1

66

Алгоритм банкира (Э.Дейкстра)

Каждый процесс должен при запуске объявлять, какие ресурсы и в каком количестве он может потребовать в ходе дальнейшей работе.

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

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

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

Операционные системы. Управление процессами - 1

67

Понятие безопасного состояния системы

Состояние системы называется безопасным (по тупикам), если существует

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

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

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

Операционные системы. Управление процессами - 1

68

Недостатки методов предотвращения тупиков

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

Эти методы не работают для тупиков, не связанных с выделением/освобождением ресурсов.

Операционные системы. Управление процессами - 1

69

Устранение возникших тупиков

Этот подход допускает возникновение тупиков в предположении, что тупики маловероятны. В случае, если тупик все же возникает, предпринимаются меры по его устранению.

Выявление возникших тупиков:

по моделям, описанным выше (графовой, табличной и т.п.);

по наблюдению за работой системы (длительное отсутствие признаков жизни у некоторых процессов); этот способ не гарантирует от ошибок.

Способы устранения тупиков:

принудительное прекращение одного или более процессов;

принудительное освобождение ресурса;

возвращение процессов на предыдущую контрольную точку;

перезагрузка системы. :-(

Операционные системы. Управление процессами - 1

70

Принудительное прекращение процесса

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

Критерий выбора процесса – наименьшие потери от его прекращения. Как вариант, оператор может выбрать процесс по собственному произволу и интуиции.

В особо сложных случаях может понадобиться прекратить несколько процессов.

Операционные системы. Управление процессами - 1