ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
32
o
нарушая второе условие (ожидание), процесс должен сразу запросить
все ресурсы. Эффективность системы при этом может значительно
ухудшиться.
o
нарушить третье условие (нераспределяемость) можно следующим
образом. Процесс, удерживающий ресурсы и получивший отказ на
другие ресурсы, должен освободить все взятые ресурсы, и через не-
которое время запросить их заново. При этом процесс может поте-
рять большую часть проделанной работы.
o
нарушая четвертое условие (кругового ожидания), следует ввести
нелинейную упорядоченность ресурсов, пронумеровав их, и выдавать
их в порядке, не допускающем возникновения кругового ожидания.
Данный подход требует значительных накладных расходов на хране-
ние информации, связанной с типами ресурсов и упорядоченностью
экземпляров ресурсов.
•
Обход тупиков
(avoidance) – подход, обеспечивающий рациональное рас-
пределение ресурсов по рациональным правилам. Он вводит менее жесткие
ограничения, чем предыдущий подход. Наиболее известным методом обхо-
да тупиков является алгоритм банкира.
o
алгоритм банкира имитирует действия банкира, располагающего
определенным источником капитала, выдающего ссуды и прини-
мающего платежи. Алгоритм был предложен Дейкстрой.
o
состояние системы будем называть надежным, если операционная
система может обеспечить всем пользователям завершение их задач в
течение конечного промежутка времени. Суть алгоритма в том, что
система удовлетворяет только те запросы, при которых ее состояние
остается надежным. Остальные запросы откладываются.
•
Существуют два основных ограничения этого подхода: каждый процесс
заранее должен указать максимальное количество ресурсов, которое ему
понадобится и в каждый момент процесс должен захватывать только один
ресурс.
Данный
алгоритм
на
практике
неприменим
из-за его неэффективности, так как необходимость в пересчете возникает
непрерывно, при каждом поступлении процесса в систему и его удалении
для каждой разновидности ресурсов.
•
Обнаружение тупиков
(detection) — подход, который допускает возникно-
вение тупиков, определяет процессы и ресурсы, которые вовлечены в
тупиковую ситуацию, и пытается вывести систему из нее.