Состояние гонки


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

Термин « состояние гонки » уже использовался к 1954 году, например, в докторской диссертации Дэвида А. Хаффмана «Синтез схем последовательного переключения». [1]

Условия гонки могут возникать, особенно в логических схемах , многопоточных или распределенных программах.

Типичный пример состояния гонки может возникнуть, когда логический вентиль объединяет сигналы, прошедшие по разным путям от одного и того же источника. Входы логического элемента могут изменяться в разное время в зависимости от изменения исходного сигнала. Выход может на короткое время перейти в нежелательное состояние, прежде чем вернуться в заданное состояние. Некоторые системы могут допускать такие сбои , но если этот выход функционирует как тактовый сигнал для других систем, которые содержат память, например, система может быстро отклониться от своего запланированного поведения (по сути, временный сбой становится постоянным сбоем).

Логический сигнал на одном входе и его отрицание ( ¬ является логическим отрицанием ) на другом входе теоретически никогда не выводит истинное значение: если, однако, изменения значения занимают больше времени для распространения на второй вход, чем на первый при изменении с ложного на истинное последует короткий период, в течение которого оба входа верны, и поэтому выход вентиля также будет истинным. [2]


Состояние гонки в логической схеме. Здесь ∆ t 1 и ∆ t 2 представляют задержки распространения логических элементов. Когда входное значение A меняется с низкого на высокое, схема выдает короткий всплеск продолжительностью (∆ t 1 + ∆ t 2 ) - ∆ t 2 = ∆ t 1 .