Shift + колёсико

13. Проблема тупиков и способы борьбы с ней

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

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

Способы борьбы с взаимоблокировками

Можно избежать взаимоблокировки, например используя алгоритм банкира. Идея основана на том, что всегда есть резерв. Алгоритм базируется на так называемых безопасных или надежных состояниях. Безопасное состояние – это такое состояние, для которого имеется, по крайней мере, одна последовательность событий, которая не приведет к взаимоблокировке.