Проблемы организации взаимного исключения

Тупики (deadlocks)

Блокирование (дискриминация)

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

Тупики (deadlocks)

При организации взаимного исключения могут возникнуть тупики (deadlocks), ситуации в которой конкурирующие за критический ресурс процессы вступают в клинч – безвозвратно блокируются.

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

В тупике могут «участвовать» произвольное количество ресурсов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: