Обход дедлоков неприменим в случае отсутствия информации о требованиях процессов на ресурсы.
Стратегия распознавания дедлоков.
За счет дорогостоящих вычислений можно установить, существуют ли процессы, находящиеся в состоянии дедлока.
Чтобы выполнить эти вычисления, ОС должна:
- вести список тех ресурсов, которые ждет каждый заблокированный процесс
- вести список тех процессов, которые держат каждый заблокированный ресурс.
Алгоритм распознавания замкнутых цепей можно выполнять с любой нужной частотой:
- например часто – всякий раз, когда запрос на ресурс отклоняется
- через заданные интервалы времени
Методы восстановления:
Как только дедлок выявлен, должно быть выполнено восстановление.
Самый простой метод восстановления – принудительное завершение всех процессов и запуск ОС заново.
Менее радикальный метод – принудительное завершение всех процессов, находящихся в дедлоке.
Третий метод – принудительно завершать процессы, находящиеся в дедлоке, по одному и после каждого завершения вызывать алгоритм выявления дедлока до тех пор, пока дедлок не исчезнет.
|
|
. Основная «цена» восстановления от дедлока – это потеря времени, которые могут быть существенными.
- Управление ресурсами в ОС
Для развития любого процесса, как системного, так и прикладного, требуются некоторые ресурсы. Одни из них, в частности память и время центрального процессора, являются главными и нужны всегда. Потребность в других, например в устройствах ввода-вывода или в конкретных данных, зависит от процесса и выполняемых им в конкретный момент действий.
За выделение ресурсов и управление ими отвечает операционная система. Она может выделять ресурсы статически при инициализации процесса или динамически в ходе его развития.
Типичные примеры -выделение пространства в основной памяти для создаваемых структур данных, буферов диска и других внешних устройств либо выделение пространства на диске для файлов пользователей и файла подкачки. Во всех этих случаях некоторый объем основной или дисковой памяти может быть выделен при инициализации процесса (программы) или устройства, а дополнительное пространство будет предоставляться по требованию.
Целесообразно понятие ресурсов системы обобщить и разделить их все на два класса:
- Воспроизводимые ( повторно используемые (Reusable Resource, RR), последовательно используемые или системные (System Resource, SR), ресурсы)
При использовании допустимо многократное выполнение действий запрос-использование-освобождение.
Ресурс SR – конечное множество идентичных единиц со следующими свойствами:
- число единиц ресурса постоянно
- каждая единица ресурса или доступна, или распределена одному и только одному процессу
- процесс может освободить единицу ресурса (сделать ее доступной), только если он ранее получил эту единицу
Примеры: ОП, ВП, периферийные устройства, процессоры, программное и информационное обеспечение (файлы данных, таблицы)
|
|
2. Потребляемые (или расходуемые, ресурсы (Consumable Resource, CR)).
После выполнения действий освобождение-запрос-использование ресурс изымается из потребления
Расходуемые ресурсы (CR) отличаются от ресурсов типа SR в нескольких важных отношениях
- Число доступных единиц некоторого ресурса типа CR изменяется по мере того, как выполняющимися процессами они расходуются (приобретаются) и освобождаются (производятся).
- В общем случае число единиц расходуемых ресурсов является потенциально неограниченным, поскольку процесс-производитель может достаточно долго увеличивать число единиц ресурса, освобождая одну или более единиц, которые он создал.
- Процесс-потребитель уменьшает число единиц ресурса, сначала запрашивая и затем приобретая (потребляя) одну или более единиц. Единицы ресурса, которые приобретены, в общем случае не возвращаются ресурсу, а потребляются (расходуются). Эти свойства потребляемых ресурсов присущи многим синхронизирующим сигналам, сообщениям и данным, порождаемым как аппаратурой, так и программным обеспечением, и могут рассматриваться как ресурсы типа CR. В их число входят: прерывания от таймера и устройств ввода-вывода; сигналы синхронизации процессов; сообщения, содержащие запросы на различные виды обслуживания или данные, а также соответствующие ответы.
Дескриптор ресурса
Каждый класс воспроизводимых (повторно используемых) ресурсов требует для описания по крайней мере три компоненты:
Имя ресурса | Символическое или числовое имя ресурса |
Ёмкость | Включает число и идентификацию доступных и занятых единиц ресурса |
Очередь ожидания | Содержит список блокированных процессов с неудовлетворенными запросами на ресурс |
Указатель на распределитель | Ответственен за принятие решения, когда и который из запросов на ресурс должен быть удовлетворен |
Части воспроизводимых ресурсов могут быть освобождены или возвращены в опись ресурса, только если они были предварительно приобретены.
Для потребляемых ресурсов описания появляются в ситуациях синхронизации и связи там, где между процессами передаются сообщения, сигналы и данные.
Для каждого класса сообщений в данный момент времени существуют:
Имя ресурса | Символическое или числовое имя сообщения |
Список сообщений | Список сообщений, которые были выданы, но не было получены (потреблены) |
Очередь ожидания процессов | Содержит список (возможно пустой) процессов с неудовлетворенными запросами на ресурс |
Указатель на распределитель | Распределяет сообщения получателям |