Что такое функционирование в «Реальном масштабе времени»
Download 1.86 Mb. Pdf ko'rish
|
Луканов А.С. Системы реального времени 2020
Управление прерываниями в NT.
В Windows NT единственный способ управления аппаратурой – через драйвер устройства. Поскольку приложение реального времени имеет дело с внешними событиями, разработчик должен написать и включить в ядро драйвер устройства, дающий доступ к аппаратуре. Этот драйвер реагирует на прерывания, генерируемые соответствующим устройством. Прерывания обрабатываются в два этапа. Сначала выполняется очень короткая программа обслуживания прерываний (ISR ). Впоследствии работа завершается выполнением DPC – процедуры отложенного вызова. Возникает следующий поток событий: – Происходит прерывание. – Процессор сохраняет PC, SP и вызывает диспетчер. – ОС сохраняет контекст и вызывает ISR. – В ISR выполняется критическая работа (чтение/запись аппаратных регистров). – DPC ставится в очередь. – ОС восстанавливает контекст. 58 – Процессор восстанавливает PC, SP. – Ожидающие в очереди DPC выполняются на уровне приоритета DISPATCH_LEVEL. – После завершения всех DPC ОС переходит к выполнению приложений. ISR должно быть как можно короче, поэтому большинство драйверов выполняют значительную часть работы в DPC (которая может быть вытеснена другим ISR), ожидая окончания других DPC, ранее попавших в очередь (все DPC имеют одинаковый приоритет). Из документации по NT следует, что ISR может быть вытеснена другим ISR с более высоким приоритетом и что DPC имеет более высокий приоритет, чем пользовательские и системные нити. Но поскольку все DPC имеют одинаковый уровень приоритета и ISR должна быть сведена к минимуму, ваш DPC будет вынужден ждать других и ваше приложение будет зависеть от остальных драйверов устройств непредсказуемым образом. Задержки системных вызовов, описанные в предыдущем разделе, обусловлены именно тем, что DPC от драйверов жесткого диска и сети блокируют все другие. В настоящих ОС РВ разработчик знает, на каком уровне выполняются драйверы всех других устройств. Обычно имеется свободное пространство для прерываний выше стандартных драйверов. Вся критическая работа выполняется в ISR, что позволяет настроить конфигурацию драйвера в зависимости от временных ограничений приложения. Управление памятью в NT Другим важным моментом при проектировании СРВ является политика управления памятью в ОС РВ. В Windows NT процессы выполняются в своем собственном пространстве памяти. Добиться этого позволяют механизмы виртуальной памяти и подкачки. Для бизнес-приложений это хорошо, но для СРВ, которая должна реагировать на внешние события с заранее определенным лимитом времени, это порождает непредсказуемость, особенно если система отправит страницу из памяти на диск. Windows NT позволяет 59 захватить страницу в памяти посредством вызова функции VirtualLock . Тем не менее NT может разблокировать страницу и выгрузить ее на диск, если весь процесс неактивен. Может ли Windows NT использоваться в качестве ОС РВ? Итак, можно сделать вывод, что Windows NT, предназначенная в основном для классических приложений, не является хорошей платформой для поддержания обработки в реальном времени. Тем не менее на ее базе можно все-таки построить простую мягкую СРВ, время от времени допускающую опоздания. Следующие обстоятельства могут облегчить построение СРВ на базе NT: – загрузка CPU низка (DPC имеют достаточно времени); – критическая работа (или даже вся) делается на уровне DPC или (еще лучше) на уровне ISR. В таком случае непонятно, зачем вообще нужна ОС. Но для жесткой СРВ использование Windows NT невозможно – система реального времени никогда не будет предсказуемой. Что следует изменить в Windows NT, чтобы ее можно было использовать в жестких СРВ? a) Класс процессов реального времени должен иметь больше уровней. б) Необходимо решить проблему инверсии приоритетов. в) Время, затрачиваемое каждым системным вызовом, должно быть предсказуемо и известно. г) Система прерываний должна быть заменена целиком: – DPC должны иметь много уровней приоритетов; – DPC должны быть вытесняемыми более приоритетными Download 1.86 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling