Политики предотвращения взаимоблокировок в распределенной системе

Опубликовано: 30 Сентября, 2022

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

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

  • Взаимное исключение: существует по крайней мере один ресурс, который нельзя использовать совместно и который может использоваться только одним процессом одновременно.
  • Удержание и ожидание: процесс удерживает по крайней мере один ресурс и ожидает другого.
  • Нет вытеснения: ресурс не может быть изъят из процесса, пока он не освободит ресурс.
  • Циклическое ожидание: по крайней мере два процесса должны образовывать циклическую цепочку, удерживая ресурс и ожидая ресурса, удерживаемого следующим процессом в цепочке.

Таким образом, четыре вышеуказанных условия необходимы для возникновения взаимоблокировки, и если любое из этих четырех условий предотвращается, мы можем предотвратить возникновение взаимоблокировки. Есть 2 способа предотвратить взаимоблокировку в распределенной системе.

  • Заказанный запрос
  • Коллективный запрос

Заказанный запрос

Как следует из названия, в этом методе предотвращения взаимоблокировок каждому типу ресурсов назначается определенный уровень для поддержки политики запросов ресурсов для процесса. Это называется политикой распределения ресурсов. Каждому Ресурсу присваивается номер глобального уровня для упорядочения всех типов ресурсов. Запрашивая ресурс, Процесс должен убедиться, что он не запрашивает ресурс, порядок уровней которого ниже, чем ресурс наивысшего порядка, который он в настоящее время имеет. Он может запрашивать только ресурсы более высокого уровня, чем ресурсы самого высокого уровня, удерживаемые процессом. Обратитесь к приведенному ниже примеру для лучшего понимания. Предположим, что имеется 10 ресурсов от уровня 1 до 10, и 10 — это ресурс самого высокого уровня заказа. Если Процесс в настоящее время имеет ресурсы 5 и 8, он не может запросить ресурс ниже 8, он может запрашивать только ресурсы 9 и 10. Например, процесс не может сделать запрос на Ресурс 7, удерживая при этом ресурс 8. Этот метод не означает, что запросы следует делать в порядке возрастания последовательности. Перед отправкой запроса на ресурс 7 он должен освободить удерживаемый ресурс 8. После освобождения 8 он может получить 7. Это разрешено, потому что в настоящее время он не удерживает ресурс выше 7.

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

Недостатки:

  • Процесс, который имеет заказы на запросы ресурсов с возрастающими уровнями порядка в соответствии с Политикой распределения ресурсов, будет использовать все ресурсы и тратить их впустую.
  • Например: возьмите ссылку на приведенный выше пример, если процесс имеет порядок запроса ресурсов от 1 до 10. Он получит все ресурсы, и это ухудшит использование ресурсов.

Коллективный запрос

Этот метод предотвращает состояние удержания и ожидания с помощью любой из следующих политик распределения ресурсов:

  • Эта политика распределения ресурсов гарантирует, что процесс запрашивает все необходимые ресурсы перед выполнением процесса. Если какой-либо из требуемых ресурсов недоступен, запрос не удовлетворяется. Пример: Процесс требует 3 ресурса для своего выполнения, если все 3 ресурса доступны, запрос удовлетворен и все 3 ресурса выделены. Но если какой-либо из 3-х ресурсов недоступен, то ни один из 3-х ресурсов не будет выделен и запрос будет отклонен.

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

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

Недостатки:

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