Предотвращение тупиков и алгоритм банкира.

Можно избежать тупиковой ситуации, если рациональным образом использовать ресурсы, придерживаясь

определенных правил. Наиболее известен среди алгоритмов такого рода - алгоритм банкира, предложенный Дейкстрой. Он, как бы имитирует действия банкира, который, располагая определенным источником капитала, принимает ссуды и выдает платежи.

Предположим, что у системы в наличии n устройств, например лент. Суть алгоритма состоит в следующем.

Рассмотрим пример надежного состояния для системы с тремя пользователями и 12-ю устройствами, где 10 устройств задействовано, а 2 имеется в наличии. Пусть текущая ситуация такова:

  Текущее количество Максимальная потребность
Первый пользователь
Второй пользователь
Третий пользователь

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

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