Операційна система реального часу

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Операці́йна систе́ма реа́льного ча́су, ОСРЧ (англ. Real-Time Operating System) — операційна система призначена обслуговувати запити в реальному часі.

Визначення[ред.ред. код]

Найбільш розповсюдженими визначеннями операційної системи реального часу є:

  • ОС, в якої успішність роботи будь-якої програми залежить не тільки від її логічної правильності, але і від часу, за який вона отримала цей результат. Якщо система не може задовольнити часовим обмеженням, повинен бути зафіксований збій в її роботі[1]
  • Стандарт POSIX 1003.1 дає визначення «Реальний час в операційних системах — це здатність операційної системи забезпечити рівень сервісу, який вимагається за визначений проміжок часу»
  • ОС, яка реагує за передбачуваний час на непередбачувану появу зовнішніх подій
  • Інтерактивні системи постійної готовності. До категорії ОСРЧ їх відносять виходячи з маркетингових міркувань і якщо інтерактивну програму називають «працюючою в реальному часі», то це означає лиш те, що запити від користувача обробляються із затримкою, непомітною для людини.
  • Іноді поняття системи реального часу ототожнюють зі «швидкою системою», але це не завжди правильно, оскільки важливий не час затримки реакції ОСРЧ, а те, щоб цього часу було достатньо для прикладної програми, яка розглядається і щоб його було гарантовано.
  • В багатьох спеціалізованих сферах вводять свої поняття «реального часу». Наприклад, процес цифрової обробки сигналу називають таким, що відбувається в реальному часі, якщо аналіз та/або генерація даних можуть бути проведені в той же час, що і аналіз/генерація тих самих даних без цифрової обробки сигналу. Наприклад, якщо при обробці аудіо даних необхідно 2.01 секунд на аналіз 2.00 секунд звуку, то це не процес реального часу. Якщо потрібно 1.99 секунд, то це процес реального часу.

Іноді розрізняють системи «жорсткого» та «м'якого» реального часу. ОС «жорсткого» реального часу гарантує виконання деяких дій в заданий інтервал часу, ОС «м'якого» реального часу, як правило, встигають виконати дії за заданий проміжок часу, але повністю не гарантують це. Більшість програмного забезпечення орієнтовано на «м'який» реальний час.

Для подібних систем характерно:

  • гарантований час реакції на зовнішні події (переривання від обладнання);
  • жорстка підсистема планування процесів (високопріорітетні задачі не повинні бути витісненими низькопріоритетними, за деяким виключенням);
  • підвищення вимог до часу реакції на зовнішні події чи реактивності (затримка виклику обробника переривання не більш ніж десяток мілісекунд, затримка при перемиканні задач не більш ніж сотні мілісекунд)

Класичним прикладом задачі, де необхідна ОСРЧ є керування роботом, який бере деталь зі стрічки конвеєра. Деталь рухається і робот має лише маленький проміжок часу, коли він може її взяти. Якщо він запізниться, то деталь не буде вже на потрібній ділянці конвеєра, а отже, робота не буде виконана, попри те, що робот знаходиться в правильному положенні. Якщо він позиціонується раніше, то деталь ще не встигне під'їхати і він заблокує її шлях.

Взаємодія між задачами і розподілення ресурсів[ред.ред. код]

Багатозадачні операційні системи такі як Unix не мають багатого функціоналу для виконання задач реального часу. Операційні системи реального часту (RTOS) досягають багатозадачності використовуючи ті самі принципи - але їх мета значно відрізняється від систем не реального часу. Основні відмінності відбувається в політиці планування. Вбудовані системи / реального часу створюються для забезпечення швидкого відгуку на події реального світу. При виникненні подій реального світу може існувати ліміт часу, за який система реального часу має відповісти і політика планування задач в RTOS має забезпечити аби ці вимоги виконувались.

Для досягнення цієї мети інженер програмного забезпечення має спершу назначити пріоритет кожній задачі. Планувальник задач в RTOS зможе забезпечити те, що задачі з найвищім пріоритетом, які здатні виконатися будуть виконані в межах даного процесорного часу. Це може потребувати "чесного" переключення процесорного часу між задачами однакового пріоритету, якщо ці задачі здатні виконуватись одночасно.

Планування[ред.ред. код]

Планувальник це частина ядра, що відповідальна за рішення, яка задача буде виконуватись в конкретний час. Ядро може багаторазово призупинити, а потім відновити виконання задачі.

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

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

В загальному вигляді задача може переходити в наступні стани виконання (в залежності від реалізації системи можливі і інші стани):

  1. Виконується (виконується процесором);
  2. Готова до виконання;
  3. Заблокована (очікує на подію, ресурс, дані порту та ін.).

Алгоритми[ред.ред. код]

Деякі відомі алгоритми планування задач в системах реального часу:

Операційні системи реального часу (список)[ред.ред. код]

Відкриті:

Дивись також[ред.ред. код]

Виноски[ред.ред. код]

Посилання[ред.ред. код]