The design of the UNIX Operating System 35 страница



 

Традиционная последовательность событий при работе с ресурсом состоит из запроса, использования и освобождения ресурса. Тип запроса зависит от природы ресурса и от ОС. Запрос может быть явным, на-пример специальный вызов request, или неявным – open для открытия файла. Обычно, если ресурс занят и запрос отклонен, запрашивающий процесс переходит в состояние ожидания.

 

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

 

Условия возникновения тупиков

 

Условия возникновения тупиков были сформулированы Коффманом, Элфиком и Шошани в 1970 г.

 

1. Условие взаимоисключения (Mutual exclusion). Одновременно использовать ресурс может только один процесс.

2. Условие ожидания ресурсов (Hold and wait). Процессы удерживают ресурсы, уже выделенные им, и могут запрашивать другие ресурсы.

3. Условие неперераспределяемости (No preemtion). Ресурс, выделенный ранее, не может быть при-нудительно забран у процесса. Освобождены они могут быть только процессом, который их удерживает.

4. Условие кругового ожидания (Circular wait). Существует кольцевая цепь процессов, в которой ка-ждый процесс ждет доступа к ресурсу, удерживаемому другим процессом цепи.

 

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

 

Обычно тупик моделируется циклом в графе, состоящем из узлов двух видов: прямоугольников – про-цессов и эллипсов – ресурсов, наподобие того, что изображен на рис. 7.1. Стрелки, направленные от ре-


Основы операционных систем 66

сурса к процессу, показывают, что ресурс выделен данному процессу. Стрелки, направленные от процес-са к ресурсу, означают, что процесс запрашивает данный ресурс.

 

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

 

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

 

Итак, основные направления борьбы с тупиками:

 

• Игнорирование проблемы в целом

 

• Предотвращение тупиков

• Обнаружение тупиков

 

• Восстановление после тупиков

 

Игнорирование проблемы тупиков

 

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

 

Любая ОС, имеющая в ядре ряд массивов фиксированной размерности, потенциально страдает от тупи-ков, даже если они не обнаружены . Таблица открытых файлов, таблица процессов, фактически каждая таблица являются ограниченными ресурсами. Заполнение всех записей таблицы процессов может при-вести к тому, что очередной запрос на создание процесса может быть отклонен. При неблагоприятном стечении обстоятельств несколько процессов могут выдать такой запрос одновременно и оказаться в ту-пике. Следует ли отказываться от вызова CreateProcess, чтобы решить эту проблему?


Дата добавления: 2021-01-21; просмотров: 101; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!