- — аппаратная взаимоблокировка
- — программная взаимоблокировка
Объекты, к которым предоставляется доступ, называются ресурсами.
Типы ресурсов:
Выгружаемые: могут быть безболезненно отобраны у процесса, который ими обладает.
Невыгружаемые: нельзя отобрать у его текущего владельца, не вызвав сбоя в вычислениях.
Последовательность событий при запросе ресурса.
- — Запрос ресурса.
- — Использование ресурса.
- — Высвобождение ресурса.
Поведение процесса при недоступности ресурса.
Варианты поведения процесса:
- — запрашивающий процесс переходит к ожиданию;
- — в некоторых ОС процесс автоматически блокируется до получения ресурса;
- — иногда отказ в выделении запрашиваемого ресурса сопровождается кодом ошибки, и принятие решения о том, что следует делать, возлагается на вызывающий процесс.
Далее считаем, что процесс при отказе в выделении ресурса впадает в спячку.
Определение взаимоблокировки Взаимоблокировка в группе процессов возникает в том случае, если каждый процесс из этой группы ожидает события, наступление которого зависит исключительно от другого процесса из этой же группы.
Условия возникновения ресурсных взаимоблокировок.
- — Условие взаимного исключения. Каждый ресурс либо выделен в данный момент только одному процессу, либо доступен.
- — Условие удержания и ожидания. Процессы, удерживающие в данный момент ранее выделенные им ресурсы, могут запрашивать новые ресурсы.
- — Условие невыгружаемости. Ранее выделенные ресурсы не могут быть принудительно отобраны у процесса. Они должны быть явным образом высвобождены тем процессом, который их удерживает.
- — Условие циклического ожидания. Должна существовать кольцевая последовательность из двух и более процессов, каждый из которых ожидает высвобождения ресурса, удерживаемого следующим членом последовательности.
Моделирование взаимоблокировок по Холту Процессы — окружностями;
Ресурсы — квадратами;
Направленное ребро, которое следует от узла ресурса к узлу процесса, означает, что этот ресурс был ранее запрошен, получен и на данный момент удерживается этим процессом;
Направленное ребро, идущее от процесса к ресурсу, означает, что процесс в данное время заблокирован в ожидании высвобождения этого ресурса.
Рис. 1. Примеры моделей по Холту: (а) ресурс занят; (б) запрос ресурса; (в) взаимоблокировка