- •3.2. Операционные системы реального времени и Windows
- •Перечислим необходимые требования к ос для обеспечения предсказуемости.
- •Удовлетворяет ли Windows nt требованиям, предъявляемым к ос рв?
- •Предсказуемость системных вызовов Win32 api.
- •Управление прерываниями в nt.
- •Управление памятью в nt.
- •Может ли Windows nt использоваться в качестве ос рв?
- •Коммерческие решения, расширяющие nt возможностями обработки в реальном времени.
- •Использование nt как таковой.
- •Реализация Win32 api над другой ос рв.
- •Совместная работа на одном процессоре nt и ос рв
- •Использование многопроцессорной архитектуры.
Управление памятью в nt.
Другим важным моментом при проектировании СРВ является политика управления памятью в ОС РВ. В Windows NT процессы выполняются в своем собственном пространстве памяти. Добиться этого позволяют механизмы виртуальной памяти и подкачки. Для бизнес-приложений это хорошо, но для СРВ, которая должна реагировать на внешние события с заранее определенным лимитом времени, это порождает непредсказуемость, особенно если система отправит страницу из памяти на диск. Windows NT позволяет захватить страницу в памяти посредством вызова функции VirtualLock. Тем не менее NT может разблокировать страницу и выгрузить ее на диск, если весь процесс неактивен
Может ли Windows nt использоваться в качестве ос рв?
Итак, можно сделать вывод, что Windows NT, предназначенная в основном для классических приложений, не является хорошей платформой для поддержания обработки в реальном времени. Тем не менее на ее базе можно все-таки построить простую мягкую СРВ, время от времени допускающую опоздания. Следующие обстоятельства могут облегчить построение СРВ на базе NT:
– загрузка CPU низка (DPC имеют достаточно времени);
– критическая работа (или даже вся) делается на уровне DPC или (еще лучше) на уровне ISR. В таком случае непонятно, зачем вообще нужна ОС.
Но для жесткой СРВ использование Windows NT невозможно – система реального времени никогда не будет предсказуемой.Что следует изменить в Windows NT, чтобы ее можно было использовать в жестких СРВ?
a) Класс процессов реального времени должен иметь больше уровней.
б) Необходимо решить проблему инверсии приоритетов.
в) Время, затрачиваемое каждым системным вызовом, должно быть предсказуемо и известно.
г) Система прерываний должна быть заменена целиком:
– DPC должны иметь много уровней приоритетов;
– DPC должны быть вытесняемыми более приоритетными DPC.
– драйверы от третьих фирм и системные драйверы должны быть настраиваемыми (уровни прерываний ISR, уровни прерываний DPC) ;
– драйверы от третьих фирм должны быть открыты для разработчиков, должно быть известно по крайней мере максимальное время, затрачиваемое на работу ISR и DPC;
– должно быть известно время маскирования прерываний.
Коммерческие решения, расширяющие nt возможностями обработки в реальном времени.
Существуют разные варианты использования технологии NT для разработки систем реального времени:
– использование NT как она есть для построения мягкой системы реального времени;
– реализация Win32 API над другой ОС РВ;
– совместная работа на одном процессоре NT и другой ОС РВ (или ее части);
– использование мультипроцессорной архитектуры, когда NT выполняется на одном процессоре (или более), а часть реального времени – на остальных.
Во многих решениях производители модифицируют HAL или ядро NT. Политика Microsoft заключается в том, чтобы не допускать никаких модификаций ядра NT, кроме драйверов устройств. Это единственно возможный способ связи с ядром. Политика компании относительно HAL другая. HAL (Hardware Abstraction Layer) – уровень аппаратных абстракций – уровень, лежащий ниже программного обеспечения, который виртуализирует интерфейс NT с аппаратурой, допуская переносимость NT с одной аппаратной платформы на другую. Такие модификации HAL, как манипуляции с часами или замена методов обработки прерываний, представляются беспримерно незаконным использованием HAL. Они создают нестандартную среду и могут привести к проблемам сопровождения, если, например, Microsoft изменит HAL в следующих версиях. Поэтому различие в решениях, предлагаемых поставщиками, заключается в попытках сделать модификации HAL минимальными.
Также возможен перехват HAL посредством трюков с процессором Intel. Однако это можно реализовать только на платформе Intel. Механизмы перехвата посредством обработки исключительных ситуаций на уровне устройства поглощают определенную вычислительную мощность.