Операційна система реального часу (ОСРЧ, , RTOS) — тип операційної системи, основним призначенням якої є надання необхідного та достатнього набору функцій для роботи систем реального часу на конкретному апаратному обладнанні.

Специфікація UNIX в редакції 2 дає таке визначення:

Реальний час в операційних системах — це здатність операційної системи забезпечити необхідний рівень сервісу при обмеженому часі на відповідь.С. Золотарев. Операционные системы реального времени для 32-разрядных микропроцессоров

Ідеальна ОСРЧ має передбачувану поведінку при всіх сценаріях навантаження, включаючи одночасні переривання і виконання потоківWhat makes a good RTOS, Dedicated Systems Experts NV, June 11, 2001.

Системи жорсткого та м'якого реального часу Операційні системи реального часу іноді ділять на два типи — системи жорсткого реального часу та системи м'якого реального часуИ. Б. Бурдонов, А. С. Косачев, В. Н. Пономаренко. Операционные системы реального времени п. 1. Введение: Особенности операционных систем реального времени.

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

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

В системі м'якого реального часу затримка реакції вважається відновлювальною помилкою, яка може привести до збільшення вартості результатів і зниження продуктивності, але не є фатальною. Прикладом може служити робота комп'ютерної мережіЕ. Хухлаев. Операционные системы реального времени и Windows NT. Якщо система не встигла обробити черговий прийнятий пакет, це призведе до зупинки на стороні передачі та повторної відправки даних (в залежності від протоколу передачі даних). Дані при цьому не втрачаються, але продуктивність мережі знижується.

Основну відмінність систем жорсткого і м'якого реального часу можна характеризувати так: система жорсткого реального часу будь-коли запізниться з реакцією на подію, система м'якого реального часу не повинна відставати від реакції на подію.

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

Більшість програмного забезпечення орієнтоване на «м'який» реальний час. Для подібних систем характерно: гарантований час реакції на зовнішні події (переривання від устаткування); жорстка підсистема планування процесів (високопріоритетні завдання не повинні витіснятися фонової, за деякими винятками); підвищені вимоги до часу реакції на зовнішні події або реактивності (затримка виклику обробника переривання не більше десятків мікросекунд, затримка при перемиканні задач не більше сотень мікросекунд).

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

Також для операційних систем іноді використовується поняття «інтерактивного реального часу», в якому визначається мінімальний поріг реакції на події графічного інтерфейсу, протягом якого оператор — людина — здатний спокійно, без нервозності, очікувати реакції системи на дані їм вказівки.

Відмінні риси ОСРЧ Таблиця порівняння ОСРЧ і звичайних операційних систем: ОС реального часу ОС загального призначення Основна задача Встигнути зреагувати на події, що відбуваються на устаткуванні Оптимально розподілити ресурси комп'ютера між користувачами та задачами На що орієнтована Обробка зовнішніх подій Обробка дій користувача Як позиціонується Інструмент для створення конкретного апаратно-програмного комплексу реального часу Сприймається користувачем як набір застосунків, готових до використання Кому призначена Кваліфікований розробник Користувач середньої кваліфікації

Архітектури ОСРЧ У своєму розвитку ОСРЧ будувалися на основі наступних архітектур: Монолітна архітектура. ОС визначається як набір модулів, взаємодіючих між собою всередині ядра системи і надають прикладному ПО вхідні інтерфейси для звернень до апаратури. Основний недолік цього принципу побудови ОС полягає в поганій передбаченості її поведінки, викликаної складною взаємодією модулів між собою. Рівнева (шарова) архітектура. Прикладне ПО має можливість отримати доступ до апаратури не тільки через ядро системи та її сервіси, а й безпосередньо. У порівнянні з монолітною така архітектура забезпечує значно більший ступінь передбачуваності реакцій системи, а також дозволяє здійснювати швидкий доступ прикладних програм до апаратури. Головним недоліком таких систем є відсутність багатозадачності. Архітектура «клієнт-сервер». Основний її принцип полягає у винесенні сервісів ОС у вигляді серверів на рівень користувача та виконанні мікроядром функцій диспетчера повідомлень між клієнтськими користувача програмами і серверами — системними сервісами. Переваги такої архітектури: Підвищена надійність, через те, що кожен сервіс є, по суті, самостійним процесом і його легше налагодити і відстежити помилки. Покращена масштабованість, оскільки непотрібні сервіси можуть бути виключені з системи без шкоди до її працездатності. Підвищена відмовостійкість, так як сервіс, який «завис» може бути перезавантажений без перезавантаження системи.

Особливості ядра Ядро ОСРЧ забезпечує функціонування проміжного абстрактного рівня ОС, який приховує від прикладного ПО специфіку технічного пристрою процесора (декількох процесорів) і пов'язаного з ним апаратного забезпеченняD. Kalinsky. .

Основні сервіси Зазначений абстрактний рівень надає для прикладного програмного забезпечення п'ять основних категорій сервісівА. А. Блискавицкий, С. В. Кабаев. Операционные системы реального времени (обзор) : Керування задачами. Найголовніша група сервісів дозволяє розробникам застосунків проєктувати програмні продукти у вигляді наборів окремих програмних фрагментів, кожен з яких може належати до своєї тематичної області, виконувати окрему функцію і мати свій власний квант часу, відведений йому для роботи. Кожен такий фрагмент називається задачею. Сервіси в розглянутій групі мають здатність запускати задачі і присвоювати їм пріоритети. Основний сервіс тут — планувальник задач. Він здійснює контроль над виконанням поточних завдань, запускає нові в відповідний період часу і стежить за режимом їх роботи. Динамічний розподіл пам'яті. Багато (але не всі) ядра ОСРЧ підтримують цю групу сервісів. Вона дозволяє завданням запозичувати області оперативної пам'яті для тимчасового використання в роботі програм. Часто ці області згодом переходять від завдання до завдання, і за допомогою цього здійснюється швидка передача великої кількості даних між ними. Деякі дуже малі за розміром ядра ОСРЧ, які передбачається використовувати в апаратних середовищах із суворим обмеженням на обсяг використовуваної пам'яті, не підтримують сервіси динамічного розподілу пам'яті. Управління таймерами. Так як вбудовані системи пред'являють жорсткі вимоги до тимчасових рамок виконання завдань, до складу ядра ОСРЧ включається група сервісів, які забезпечують управління таймерами для відстеження ліміту часу, протягом якого повинна виконуватися завданням. Ці сервіси вимірюють і задають різні проміжки часу (від 1 мкс і вище), генерують переривання після закінчення тимчасових інтервалів і створюють разові і циклічні будильники. Взаємодія між задачами та синхронізація. Сервіси даної групи дозволяють завданням обмінюватися інформацією та забезпечують її збереження. Вони також дають можливість програмним фрагментам узгоджувати між собою свою роботу для підвищення ефективності. Якщо виключити ці сервіси зі складу ядра ОСРЧ, то задачі почнуть обмінюватися спотвореною інформацією і можуть стати перешкодою для роботи сусідніх задач. Контроль пристрою введення-виведення. Сервіси цієї групи забезпечують роботу єдиного програмного інтерфейсу, взаємодіє з усім безліччю драйверів пристроїв, які є типовими для більшості вбудованих систем.

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

Відмінності від операційних систем загального призначення Багато операційних систем загального призначення також підтримують зазначені вище сервіси. Однак ключовою відмінністю сервісів ядра ОСРЧ є детермінований, заснований на суворому контролі часу, характер їх роботи. В даному випадку під детермінованістю розуміється те, що для виконання одного сервісу операційної системи потрібно часовий інтервал свідомо відомої тривалості. Теоретично цей час може бути обчислено за математичними формулами, які повинні бути жорстко алгебраїчними і не повинні включати ніяких часових параметрів випадкового характеру. Будь-яка випадкова величина, яка визначає час виконання завдання в ОСРЧ, може викликати небажану затримку в роботі програми, тоді наступна задача не вкладеться в свій квант часу, що послужить причиною для помилки.

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

Планування задач

Робота планувальника Більшість ОСРЧ реалізує підхід планування на основі пріоритетів (preemptive priority scheduling). Кожній задачі користувача надається пріоритет відповідно до важливості завдання, формуючи чергу. Задача із найвищим пріоритетом отримує фіксований часовий інтервал (квант часу) для її часткового виконання. Після закінчення цього інтервалу процес повторюється: перевіряється поточний пріоритет завдань для виділення нового інтервалу часу. Таким чином, задача з найвищим пріоритетом буде виконуватись або до її завершення, або до моменту появи іншої задачі із більшим пріоритетом.

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

Виконання задачі