Loading AI tools
З Вікіпедії, вільної енциклопедії
Операційна система реального часу (ОСРЧ, англ. Real-time operating system, RTOS) — тип операційної системи, основним призначенням якої є надання необхідного та достатнього набору функцій для роботи систем реального часу на конкретному апаратному обладнанні.
Ця стаття є сирим перекладом з іншої мови. Можливо, вона створена за допомогою машинного перекладу або перекладачем, який недостатньо володіє обома мовами. (січень 2022) |
Специфікація UNIX в редакції 2 дає таке визначення:
Реальний час в операційних системах — це здатність операційної системи забезпечити необхідний рівень сервісу при обмеженому часі на відповідь.[1]
Оригінальний текст (англ.)Realtime in operating systems: the ability of the operating system to provide a required level of service in a bounded response time.[2]
Ідеальна ОСРЧ має передбачувану поведінку при всіх сценаріях навантаження, включаючи одночасні переривання і виконання потоків[3].
Операційні системи реального часу іноді ділять на два типи — системи жорсткого реального часу та системи м'якого реального часу[4].
Операційна система, яка може забезпечити необхідний час виконання завдання реального часу навіть в найгірших випадках, називається операційною системою жорсткого реального часу. Система, яка може забезпечити необхідний час виконання завдання реального часу в середньому, називається операційною системою м'якого реального часу.
Системи жорсткого реального часу не дозволяють затримок реакції системи, так як це може призвести до втрати актуальності результатів, великих фінансових втрат або навіть аварій і катастроф. Ситуація, в якій обробка подій відбувається за час, більший передбаченого, в системі жорсткого реального часу вважається фатальною помилкою. При виникненні такої ситуації операційна система перериває операцію і блокує її, щоб, наскільки можливо, не постраждала надійність і готовність іншої частини системи. Прикладами систем жорсткого реального часу можуть бути бортові системи управління (на літаку, космічному апараті, кораблі, та ін.), системи аварійного захисту, реєстратори аварійних подій[5].
В системі м'якого реального часу затримка реакції вважається відновлювальною помилкою, яка може привести до збільшення вартості результатів і зниження продуктивності, але не є фатальною. Прикладом може служити робота комп'ютерної мережі[6]. Якщо система не встигла обробити черговий прийнятий пакет, це призведе до зупинки на стороні передачі та повторної відправки даних (в залежності від протоколу передачі даних). Дані при цьому не втрачаються, але продуктивність мережі знижується.
Основна відмінність систем жорсткого і м'якого реального часу можна охарактеризувати так: система жорсткого реального часу будь-коли запізниться з реакцією на подію, система м'якого реального часу не повинна відставати від реакції на подію[6].
Часто операційною системою реального часу вважають лише систему, яка може бути використана для вирішення завдань жорсткого реального часу. Це визначення означає наявність у ОСРЧ необхідних інструментів, але також означає, що ці інструменти необхідно правильно використовувати[5].
Більшість програмного забезпечення орієнтоване на «м'який» реальний час. Для подібних систем характерно:
Класичним прикладом завдання, де потрібно ОСРЧ, є управління роботом, що беруть деталь зі стрічки конвеєра. Деталь рухається, і робот має лише маленький проміжок часу, коли він може її взяти. Якщо він запізниться, то деталь вже не буде на потрібній ділянці конвеєра, і отже, робота не буде виконана, незважаючи на те, що робот знаходиться в правильному місці. Якщо він підготується раніше, то деталь ще не встигне під'їхати, і він заблокує їй шлях.
Також для операційних систем іноді використовується поняття «інтерактивного реального часу», в якому визначається мінімальний поріг реакції на події графічного інтерфейсу, протягом якого оператор — людина — здатний спокійно, без нервозності, очікувати реакції системи на дані їм вказівки.
Таблиця порівняння ОСРЧ і звичайних операційних систем[5]:
ОС реального часу | ОС загального призначення | |
---|---|---|
Основна задача | Встигнути зреагувати на події, що відбуваються на устаткуванні | Оптимально розподілити ресурси комп'ютера між користувачами та задачами |
На що орієнтована | Обробка зовнішніх подій | Обробка дій користувача |
Як позиціонується | Інструмент для створення конкретного апаратно-програмного комплексу реального часу | Сприймається користувачем як набір застосунків, готових до використання |
Кому призначена | Кваліфікований розробник | Користувач середньої кваліфікації |
У своєму розвитку ОСРЧ будувалися на основі наступних архітектур:
Монолітна архітектура
| Рівнева (шарова) архітектура
| Архітектура «клієнт-сервер»
|
Ядро ОСРЧ забезпечує функціонування проміжного абстрактного рівня ОС, який приховує від прикладного ПО специфіку технічного пристрою процесора (декількох процесорів) і пов'язаного з ним апаратного забезпечення[7].
Зазначений абстрактний рівень надає для прикладного програмного забезпечення п'ять основних категорій сервісів[7][8]:
На додаток до сервісів ядра, багато ОСРЧ пропонують лінійки додаткових компонентів для організації таких високорівневих понять, як файлова система, мережева взаємодія, управління мережею, управління базою даних, графічний, призначений для користувача, інтерфейс і т. д. Хоча багато з цих компонентів набагато більше і складніше, ніж саме ядро ОСРЧ, вони, тим не менш, ґрунтуються на його сервісах. Кожен з таких компонентів включається через вбудовану систему, тільки якщо її сервіси необхідні для виконання вбудованої програми і тільки для того, щоб звести витрати пам'яті до мінімуму[7].
Багато операційних систем загального призначення також підтримують зазначені вище сервіси. Однак ключовою відмінністю сервісів ядра ОСРЧ є детермінований, заснований на суворому контролі часу, характер їх роботи. В даному випадку під детермінованістю розуміється те, що для виконання одного сервісу операційної системи потрібно часовий інтервал свідомо відомої тривалості. Теоретично цей час може бути обчислено за математичними формулами, які повинні бути жорстко алгебраїчними і не повинні включати ніяких часових параметрів випадкового характеру. Будь-яка випадкова величина, яка визначає час виконання завдання в ОСРЧ, може викликати небажану затримку в роботі програми, тоді наступна задача не вкладеться в свій квант часу, що послужить причиною для помилки[7].
У цьому сенсі операційні системи загального призначення не є детермінованими. Їх сервіси можуть допускати випадкові затримки в своїй роботі, що може привести до уповільнення реакції програм на дії користувача в свідомо невідомий момент часу. При проектуванні звичайних операційних систем розробники не акцентують свою увагу на математичному апараті обчислення часу виконання конкретного завдання і сервісу. Це не є критичним для подібного роду систем[7].
Більшість ОСРЧ реалізує підхід планування на основі пріоритетів (preemptive priority scheduling). Кожній задачі користувача надається пріоритет відповідно до важливості завдання, формуючи чергу. Задача із найвищим пріоритетом отримує фіксований часовий інтервал (квант часу) для її часткового виконання. Після закінчення цього інтервалу процес повторюється: перевіряється поточний пріоритет завдань для виділення нового інтервалу часу. Таким чином, задача з найвищим пріоритетом буде виконуватись або до її завершення, або до моменту появи іншої задачі із більшим пріоритетом. [7]
Оскільки першими виконуються задачі з вищим пріоритетом, задачі з низьким пріоритетом можуть очікувати свого виконання нескінченно довго. Найрозповсюдженішим рішенням для цієї проблеми є механізм так званого "старіння", коли задача ітеративно збільшує свій пріоритет із пройденим часом.
У звичайних ОСРЧ задача може перебувати в трьох можливих станах:
Велику частину часу основна маса завдань заблокована. Тільки одне завдання може виконуватися на центральному процесорі в поточний момент часу. У примітивних ОСРЧ список готових до виконання завдань, як правило, дуже короткий, він може складатися не більше ніж з двох-трьох найменувань.
Основна функція адміністратора ОСРЧ полягає в організації такого планувальника задач.
Якщо в списку готових до виконання задач є більше двох—трьох останніх, то передбачається, що всі задачі розташовані в оптимальному порядку. Якщо ж трапляються такі ситуації, що число завдань в списку перевищує допустимий ліміт, то задачі сортуються в порядку пріоритету.
В даний час для вирішення завдання ефективного планування в ОСРЧ найбільш інтенсивно розвиваються два підходи[9]:
При великих навантаженнях системи EDF більш ефективний, ніж RMS.
Багатозадачним системам необхідно розподіляти доступ до ресурсів. Одночасний доступ двох і більше процесів до будь-якої області пам'яті або інших ресурсів являє певну загрозу. Існує три способи вирішення цієї проблеми: тимчасове блокування переривань, виконавчі семафори, передача сигналів. ОСРЧ зазвичай не використовують перший спосіб, тому що програма користувача не може контролювати процесор стільки, скільки хоче. Однак у багатьох вбудованих системах і ОСРЧ дозволяється запускати програмні модулі в режимі ядра для доступу до системних викликів і дається контроль над оточенням виконання без втручання ОС.
На однопроцесорних системах найкращим рішенням є запуск програми у режимі ядра, якому дозволено блокування переривань. Поки переривання заблоковано, програма, що виконується, використовує ресурси процесора одноосібно і ніяка інша задача або переривання не може виконуватися. Таким чином захищаються всі критичні ресурси. Після того як програма завершить критичні дії, вона повинна розблокувати переривання, якщо такі є. Тимчасове блокування переривання дозволено тільки тоді, коли найдовший проміжок виконання критичної секції менше, ніж допустимий час реакції на переривання. Зазвичай цей метод захисту використовується, тільки коли довжина критичного коду не перевищує декількох рядків і не містить циклів. Цей метод ідеально підходить для захисту регістрів.
Коли довжина критичної ділянки більше максимальної або містить цикли, програміст повинен використовувати механізми, ідентичні або імітуючи поведінку систем загального призначення, такі, як семафори і передача сигналів.
Наступним проблемам виділення пам'яті в ОСРЧ приділяється більше уваги, ніж в операційних системах загального призначення.
По-перше, швидкості виділення пам'яті. Стандартна схема виділення пам'яті передбачає сканування списку невизначеної довжини для знаходження вільної області пам'яті заданого розміру, а це неприйнятно, тому що в ОСРЧ виділення пам'яті повинно відбуватися за фіксований час.
По-друге, пам'ять може стати фрагментованою в разі розподілу вільних її ділянок вже запущеними процесами. Це може привести до зупинки програми через її нездатність задіяти нову ділянку пам'яті. Алгоритм виділення пам'яті, поступово збільшує фрагментованість пам'яті, може успішно працювати на настільних системах, якщо ті перезавантажуються не рідше одного разу на місяць, але є неприйнятним для вбудованих систем, які працюють роками без перезавантаження.
Простий алгоритм з фіксованою довжиною ділянок пам'яті дуже добре працює в нескладних вбудованих системах.
Також цей алгоритм відмінно функціонує і в настільних системах, особливо тоді, коли під час обробки ділянки пам'яті одним ядром наступна ділянка пам'яті обробляється іншим ядром. Такі оптимізовані для настільних систем ОСРЧ, як Unison Operating System або DSPnano RTOS, можуть надавати таку можливість.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.