Возможность использования Windows NT в качестве ОС реального времени
В последнее время приобретают популярность расширения реального времени для Windows NT. Это обусловлено, с одной стороны, расширением областей применения компьютерного управления, с другой стороны - сравнительно малой известностью и высокой стоимостью специализированных операционных систем реального времени. Интерфейс Win32 является стандартным и хорошо знакомым большому числу программистов. Под NT существует огромное число готовых приложений (в том числе коммуникационных), а также популярные средства разработки. К сожалению, Windows NT "в чистом виде" нельзя отнести к операционным системам реального времени. Обсуждению причин этого посвящены статьи Martin Timmerman и Jean-Christophe Monfret в Real-Time Magazine Q21997 []. Вот некоторые из них: недостаточное количество real-time приоритетов, отсутствие наследования приоритетов, как средства борьбы с инверсией приоритетов, неподходящая для RTOS система обработки прерываний. В Windows NT доступ к прерываниям осуществляется из драйвера ядра, а сами прерывания обрабатываются в два этапа: сначала вызывается очень короткая Interrupt Service Routine (ISR), осуществляющая критическую обработку, основная обработка прерывания происходит в Deferred Procedure Call (DPC). Все DPC выполняются с одинаковым уровнем приоритета в порядке поступления (FIFO).
Таким образом, время окончания обработки вашей DPC оказывается зависимым непредсказуемым образом от наличия в системе других драйверов и их активности. Для систем с жестким детерминизмом необходимо точно знать максимальное время от момента возникновения прерывания до входа в процедуру обработки и гарантировать его непревышение.