Алгоритм страуса


В компьютерных науках алгоритм страуса — это стратегия игнорирования потенциальных проблем на том основании, что они могут быть чрезвычайно редкими. Он назван в честь эффекта страуса, который определяется как «засунуть голову в песок и притвориться, что проблем нет». Он используется, когда более выгодно позволить проблеме возникнуть, чем пытаться ее предотвратить.

Этот подход можно использовать при работе с взаимоблокировками в параллельном программировании , если считается, что они очень редки, а стоимость обнаружения или предотвращения высока. Например, если каждый ПК блокируется один раз в 10 лет, одна перезагрузка может быть менее болезненной, чем ограничения, необходимые для ее предотвращения. [1]

Набор процессов заблокирован , если каждый процесс в наборе ожидает события, которое может вызвать только другой процесс в наборе. Обычно событием является освобождение удерживаемого в данный момент ресурса, и ни один из процессов не может запуститься, освободить ресурсы и быть пробужденным. [2]

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

Хотя использование алгоритма страуса является одним из методов борьбы с взаимоблокировками , существуют и другие эффективные методы, такие как динамическое предотвращение, алгоритм банкира , обнаружение и восстановление, а также предотвращение. [3]

Несмотря на свою эффективность, использование алгоритма Страуса меняет правильность на удобство. Тем не менее, поскольку алгоритм напрямую работает с крайними случаями, это не большой компромисс. На самом деле, самый простой и часто используемый метод выхода из тупика — это перезагрузка.