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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!