Какая разница между предотвращением тупика и предотвращением тупика?

Я слышал, что оба эти термина используются, это одно и то же или разные вещи?

Ответы

Ответ 1

Вы можете посмотреть на него как:

Избегайте: не разделяйте ресурсы между процессами /mulitple threads

Предотвращение: при использовании общих ресурсов используйте семафор. Если вы блокируете несколько семафоров, обязательно разблокируйте их в обратном порядке. Всегда проверяйте ошибки внутри критических разделов, чтобы семафор был выпущен при любых условиях.

Ответ 2

Тупик:

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

Например, если есть система с двумя дисками. Если есть два процесса P1 и P2, каждый из них имеет один дисковод и каждый из них нуждается в другом, то возникает ситуация тупика. Следующие условия будут выполняться одновременно в случае тупика:

• Взаимное исключение: только один процесс за раз может использовать ресурс

• Удержание и ожидание: процесс, содержащий хотя бы один ресурс, ожидает получения дополнительных ресурсов, удерживаемых другими процессами.

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

• Циклическое ожидание: существует множество {P0, P1,..., Pn} ожидающих процессов, так что P0 ждет ресурса, который удерживается P1, P1 ждет ресурса, который удерживается P2,..., Pn-1 ждет ресурса, который удерживается Pn, а Pn ждет ресурса, который удерживается P0.

Различия между предотвращением, предотвращением и обнаружением тупиков заключаются в следующем:

Профилактика

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

• Предотвращение тупика часто невозможно реализовать.

• Система не требует дополнительной априорной информации относительно общего потенциального использования каждого ресурса для каждого процесса.

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

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

• Стратегия распределения ресурсов для предотвращения тупиковой ситуации является консервативной, она в соответствии с ресурсами.

• Все ресурсы запрашиваются сразу.

• В некоторых случаях вытеснения более чем часто необходимы.

Избежание:

• Цель предотвращения взаимоблокировки заключается в том, что система не должна входить в небезопасное состояние.

• Уклонение от тупика часто невозможно реализовать.

• Система требует дополнительной априорной информации об общем потенциальном использовании каждого ресурса для каждого процесса.

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

• Методы избегания тупика включают алгоритм банкиров, Wait/Die, Wound/Wait и т.д.

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

• Необходимо манипулировать до тех пор, пока не будет найден один безопасный путь.

• Претензии нет.

Обнаружение:

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

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

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

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

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

• Стратегия распределения ресурсов для обнаружения тупика очень либеральна. Ресурсы предоставляются по запросу.

• Необходимо периодически вызывать проверку для тупика.

• Наблюдается преемственность.

Ответ 4

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

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

Ответ 5

Разница между предотвращением тупика и предотвращением тупика

Предотвращение тупика:
Предотвращение взаимоблокировок путем ограничения того, как можно запросить ресурсы в системе и как они обрабатываются (дизайн системы). Цель состоит в том, чтобы гарантировать, что хотя бы одно из необходимых условий для тупика никогда не может быть выполнено.

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

Ответ 6

Поскольку я новичок в переполнении стека и у меня нет 50 репутации, я не могу комментировать ответ. Просто хотел исправить ответ S_rock - wait/die и wound-wait - пример схемы предотвращения тупиков, а не предотвращения.