uawikipc.ru

Windows і обробка в режимі реального часу

Відео: Відключення Windows defender і захисту в режимі реального часу на Windows 10

Серед реальних часу, апаратна або програмна, характеризується вимогами витримування критичного терміну. Апаратні системи реального часу (наприклад, система управління атомною електростанцією) мають критичний термін, яких слід дотримуватися системою, щоб уникнути катастрофічних збоїв, що приводять до виходу з ладу обладнання або до людських жертв.

Відео: Обробка винограду, в режимі реального времені.Владімір Попченко

Програмні системи реального часу (наприклад, автомобільні системи оптимізації витрати палива) мають критичний термін, які можуть бути пропущені системою, але своєчасність і раніше є бажаним властивістю. У системах реального часу у комп`ютерів є сенсорні пристрої введення вузли знаходяться виведення. Конструктор комп`ютерних систем реального часу повинен знати найгірші значення затримок між часом генерування переривання вхідним пристроєм і часом можливого управління реакцією вихідного пристрою з боку драйвера пристрою. Цей аналіз найгіршій ситуації повинен брати до уваги затримки операційної системи, що виникають як через затримки додатки, так і з-за затримок, внесених драйверами пристроїв.

Оскільки Windows не допускає керованої установки пріоритетів IRQ-запитів пристроїв і додатків користувацького рівня тільки в разі перебування процесорного IRQL-рівня в пасивному стані, Windows зазвичай не підходить в якості операційної системи реального часу. В кінцевому рахунку, найбільші затримки визначаються не Windows, а пристроями системи і драйверами пристроїв. Цей фактор стає проблемою, коли розробники систем реального часу використовують якусь стандартне обладнання.

У конструкторів можуть виникнути складності у визначенні тривалості найгірших затримок ISR або DPC стандартних пристроїв. Навіть після тестування конструктор не може гарантувати, що окремий випадок в живій системі не змусить цю систему пропустити критичний термін. Більш того, сумарне значення всіх затримок системних DPC і ISR може суттєво перевищувати значення, допустиме для чутливої до часу системи.

Хоча вимоги реального часу є у багатьох типів вбудованих систем (наприклад, у принтерів і автомобільних комп`ютерів), у Windows Embedded Standard 7 характеристики реального часу відсутні. Це просто один з різновидів Windows 7, що дозволяє випускати компактні версії цієї операційної системи, які підходять для запуску на пристроях з обмеженими ресурсами. Наприклад, пристрій без мережевих можливостей опустить всі компоненти Windows 7, пов`язані з роботою в мережі, включаючи засоби управління мережею, а також адаптер і драйвера пристроїв стека протоколу.

Крім того, існують сторонні виробники, які постачають для Windows ядра реального часу. Підхід, який використовується ними, полягає у встановленні їх ядра реального часу в спеціалізований HAL і в примусі Windows запускатися в якості завдання в операційній системі реального часу. Завдання, що запускає Windows, служить в якості призначеного для користувача інтерфейсу до системи і має більш низький пріоритет у порівнянні з завданнями, відповідальними за управління пристроєм.

Зв`язування ISR з конкретним рівнем переривання називається підключенням об`єкта переривання, а роз`єднання ISR і записи IDT називається відключенням об`єкта переривання. Ці операції, що виконуються шляхом виклику функцій ядра IoConnectInterruptEx і IoDisconnectInterruptEx, дозволяють драйверу пристрою «включати» ISR при завантаженні драйвера в систему і «вимикати» ISR, якщо драйвер вивантажується.

Відео: Як поліпшити мікрофон? Обробка мікрофона в LIVE режимі!



Використання об`єкта переривання для реєстрації ISR перешкоджає тому, щоб драйвери пристрою возилися безпосередньо з апаратними засобами переривання (що мають відмінності, пов`язані з архітектурою процесорів), і позбавляє від необхідності знати про всі подробиці IDT. Це властивість ядра допомагає в створенні переносяться драйверів пристроїв, оскільки воно виключає необхідність програмувати на мові асемблера або відображати різноманітність процесорів в драйверах пристроїв.

Об`єкти переривань надають також і інші переваги. За рахунок використання об`єкта переривання ядро може синхронізувати виконання ISR з іншими частинами драйвера пристрою, які можуть використовувати з IRS загальні дані.

Більш того, об`єкти переривань дозволяють ядру легко викликати більше однієї ISR-процедури для будь-якого рівня переривання. Якщо об`єкти переривань створюються декількома драйверами пристроїв і підключаються до однієї і тієї ж записи IDT, диспетчер переривань викликає кожну процедуру при виникненні переривання на вказаній лінії переривання.

Ця можливість дозволяє ядру легко підтримувати конфігурації, складені з послідовних ланцюгів, в яких кілька пристроїв спільно використовують одну і ту ж лінію переривання. Ланцюг переривається, коли одна з ISR-процедур заявляє про права власності на переривання, повертаючи статус диспетчеру переривань.

Якщо одночасного обслуговування вимагають кілька пристроїв, що використовують один і той же переривання, то, як тільки диспетчер переривань знизить IRQL, пристрої, які не отримали підтвердження від своїх ISR-процедур, знову виставлять переривання системи. Вибудовування в ланцюжок буде дозволено, тільки якщо всі драйвери пристроїв, які очікують використання одного і того ж переривання, покажуть ядру, що вони можуть спільно використовувати це прериваніе- якщо вони цього зробити не можуть, диспетчер пристроїв Plug and Play перебудує призначення переривань, щоб врахувати вимоги по загальному використанню переривань кожного пристрою. При наявності загального вектора переривання об`єкт переривання викликає функцію KiChainedDispatch, яка по черзі викличе ISR-процедури кожного зареєстрованого об`єкта переривання, поки одна з них не заявить права на переривання або поки всі вони не будуть виконані. У показаному вище прикладі виведення команди! Idt вектор 0xa2 підключений до декількох збудованим в ланцюжок об`єктів переривань.

Так склалося, що на системі, де була запущена команда, цей вектор відповідав вбудованому карт-рідера 7-в-1, який представляє собою комбінацію з пристроїв читання флеш-карт Secure Digital (SD), Compact Flash (CF), MultiMedia Card (MMC ) і карт інших типів, і у кожного пристрою було своє власне переривання. Оскільки вони були згруповані виробником в один пристрій, цілком розумно було його перериванням використовувати один і той же вектор.

Порівняння переривань на основі використання ліній і переривань, ініційованих повідомленнями

Загальні переривання часто є причиною високу латентність переривань, а також можуть стати причиною нестабільної роботи системи. Зазвичай їх використання небажано і виражається в побічний ефект наявності на комп`ютері обмеженої кількості фізичних ліній переривання.

Наприклад, в попередньому прикладі з кард-рідером 7-в-1 набагато краще було б, щоб для кожного пристрою було своє власне переривання і щоб один драйвер керував різними перериваннями, знаючи, від якого пристрою прийшло переривання. Але витрата чотирьох IRQ-ліній на один пристрій швидко призводить до вичерпання IRQ-ліній. Крім того, в будь-якому випадку кожне PCI-пристрій підключається тільки до однієї IRQ-лінії, тому кард-рідер взагалі не може використовувати більше однієї IRQ-лінії.

Ще одна проблема, пов`язана з генеруванням переривань по IRQ-лінії, полягає в тому, що неправильне управління IRQ-сигналом може привести до неприпустимого піку переривань (interrupt storms) або до виникнення інших різновидів взаємних блокувань, оскільки поки ISR-процедура не підтвердить отримання сигналу , він виставляється на «високому» або «низькому» рівні. Більш того, контролер переривань повинен, як правило, отримувати також і сигнал завершення переривання EOI.

Якщо будь-яка з цих подій через якогось збою не відбудеться, система увійде в нескінченне стан переривання, або ж такі переривання будуть замасковані, або ж станеться і те й інше. І нарешті, переривання на основі використання ліній надають погану масштабованість в мультипроцессорной середовищі. У багатьох випадках обладнання приймає остаточне рішення про те, роботу якого процесора перервати з можливого набору, складеного з того, що відібрано для цього переривання диспетчером пристроїв Plug and Play, і з того, що можуть зробити невеликі драйвери пристроїв.

Рішенням всіх цих проблем є новий механізм переривань, який вперше був представлений в стандарті PCI 2.2 під ім`ям переривань, ініційованих повідомленнями (Message-signaledinterrupts, MSI). Хоча цей механізм залишається необов`язковим компонентом стандарту, рідко зустрічається на клієнтських машинах, підтримка MSI, повністю підтримувана всіма останніми версіями Windows, все частіше реалізується на серверах і робочих станціях. В MSI-моделі пристрій доставляє повідомлення своєму драйверу, записуючи його за конкретною адресою пам`яті.

Ця дія викликає переривання, а потім Windows викликає ISR-процедуру з вмістом повідомлення (значенням) і адресу, за якою воно було доставлено. Пристрій також може доставити по адресах пам`яті кілька повідомлень (до 32), надаючи на основі події різну корисну інформацію.

Оскільки зв`язок заснована на значенні пам`яті і оскільки вміст доставляється разом з перериванням, потреба в IRQ-лініях відпадає (загальний системний ліміт MSI-переривань робиться рівним кількості векторів переривань, а не кількості IRQ-ліній), відпадає також і необхідність у провідній ISR-процедурі для запиту у пристрої даних, пов`язаних з перериванням, що знижує затримку. У зв`язку з доступністю в даній моделі великої кількості переривань, пов`язаних з пристроями, фактично зводиться нанівець вся користь від застосування загальних переривань, а за рахунок безпосередньої доставки даних переривання зацікавленим в цьому ISR-процедурам ще більше зменшуються затримки.

І нарешті, у що вводиться в PCI 3.0 розширення MSI-моделі MSI-X додається підтримка 32-розрядних повідомлень (замість 16-розрядних) з максимумом 2048 різних повідомлень (замість всього лише 32), і, що більш важливо, можливість використання іншої адреси (який може визначатися в динамічному режимі) для кожної корисної інформації MSI. Використання іншої адреси дозволяє записувати корисну інформацію MSI в інший фізичний діапазон адрес, який належить іншому процесору або іншому набору цільових процесорів, що дає можливість ефективно використовувати технологію доставки переривання, обізнаного про доступ до неоднорідною пам`яті (nonuniform memory access, NUMA) тому процесору, який ініціював пов`язаний з цим перериванням запит до пристрою. Це покращує час очікування і масштабованість шляхом контролювання під час завершення переривання і завантаженості, і розташування найближчого NUMA-вузла.

Поділитися в соц мережах:
Схожі
» » Windows і обробка в режимі реального часу