Олексій Жданов
Терміни "реальний час", "робота в реальному масштабі часу", "операційні системи реального часу" відомі всім, але тлумачаться вони часто по-різному і спектр цих тлумачень дуже широкий. Кількість ілюзій і міфів в світі реального часу велике. Часто плутають такі поняття, як реальний час і швидкість. Іноді вважають, що застосування операційної системи реального часу (ОСРВ) автоматично вирішить всі проблеми надійності передбачуваності. Часом, навпаки, вважають, що системи реального часу - заняття для теоретиків, а практично будь-яке завдання реального часу можна вирішити за допомогою популярних ОС загального призначення: досить бути просто хорошим програмістом і знати архітектуру комп'ютера. Чи так це?
Чим принципово відрізняються операційні системи реального часу від операційних систем загального призначення?
ОС загального призначення, особливо на багато користувачів начебто UNIX, орієнтовані на оптимальний розподіл ресурсів комп'ютера між користувачами і виконуваними процесами (системи поділу часу). У ОСРВ подібне завдання відходить на другий план, все відступає перед головною метою - встигнути зреагувати на події, що відбуваються на об'єкті.
Інша відмінність полягає в тому, що застосування ОСРВ завжди пов'язані з апаратурою, об'єктом і подіями, що відбуваються на об'єкті. Система реального часу як апаратно-програмний комплекс включає в себе датчики, які реєструють події на об'єкті, модулі введення-виведення, які перетворять показники датчиків в цифровий вигляд, придатний для їх обробки на комп'ютері, і, нарешті, комп'ютер з програмою, реагує на події в об'єкті. ОСРВ орієнтована на обробку зовнішніх подій. Саме це зумовлює корінні відмінності від ОС загального призначення за структурою, за функціями ядра, з побудови системи введення-виведення. ОСРВ може бути схожа на ОС загального призначення по призначеному для користувача інтерфейсу (до цього, до речі, прагнуть майже всі виробники ОС реального часу), проте влаштована вона абсолютно інакше - про це мова попереду.
Мал. 1. Системи розробки ОСРВ
Застосування ОСРВ завжди конкретно. Якщо ОС загального призначення зазвичай сприймається користувачами (НЕ розробниками) як вже готовий набір додатків, то ОСРВ служить тільки іструментом для створення того чи іншого апаратно-програмного комплексу реального часу. І тому найбільш широкий клас користувачів ОСРВ складають розробники таких комплексів - люди, які проектують системи управління та збору даних. Проектуючи і розробляючи конкретну систему реального часу, програміст знає точно, які події можуть відбутися на об'єкті, знає критичні терміни обробки кожного з цих подій.
Назвемо системою реального часу (СРВ) апаратно-програмний комплекс, що реагує протягом передбачуваного часу на непередбачуваний потік зовнішніх подій.
Це визначення означає наступне.
По-перше, система повинна встигнути відреагувати на подію, що сталася на об'єкті, протягом часу, критичного для цієї події (meet deadline). Критичний час для кожної події визначається об'єктом і між подією і, природно, може бути різним, але час реакції системи має бути передбачено (обчислено) при створенні системи. Відсутність реакції протягом передбаченого часу вважається помилкою для СРВ.
По-друге, система повинна встигати реагувати на одночасно що відбуваються. Якщо два або кілька зовнішніх подій відбуваються одночасно, їй потрібно встигнути зреагувати на кожне з них протягом інтервалів часу, критичних для цих подій.
Розрізняють системи реального часу двох типів - системи жорсткого реального часу і системи м'якого реального часу.
Системи жорсткого реального часу не дозволяють жодних затримок реакції системи ні за яких умов:
- в разі запізнення результати виявляться марними;
- у разі затримки реакції може статися катастрофа;
- вартість запізнення може бути нескінченно велика.
До систем жорсткого реального часу відносяться бортові системи управління, системи аварійного захисту, реєстратори аварійних подій.
Системи м'якого реального часу характеризуються тим, що затримка реакції не критична, хоча і може привести до збільшення вартості результатів і зниження продуктивності системи в цілому.
Прикладом може служити робота мережі. Якщо система не встигне обробити черговий прийнятий пакет, це призведе до вимушеного перерви на передавальній стороні і, наприклад, повторної посилці. Дані при цьому не втрачаються, але продуктивність мережі знижується.
Основна відмінність між системами жорсткого і м'якого реального часу можна сформулювати так: якщо система жорсткого реального часу будь-коли запізниться з реакцією на подію, то система м'якого реального часу не повинна відставати від реакцією на подію.
Назвемо операційною системою реального часу таку систему, яка може бути використана для побудови систем жорсткого реального часу.
Це визначення виражає відношення до ОСРВ як об'єкту, який містить необхідні інструменти, але має на увазі також, що цими інструментами необхідно правильно скористатися.
Властивості операційних систем реального часу
Параметри ОСРВ. Вибираючи ОС загального призначення, ви враховуєте її поширеність, зручність систем розробки, склад і можливості інструментарію мереж, баз даних, офісних пакетів тощо.
А що важливо для ОСРВ? Яка структура цих продуктів?
Системи виконання і системи розробки ОСРВ. Одне з корінних зовнішніх відмінностей систем реального часу від систем загального призначення - чітке розмежування засобів розробки і виконання. Набір інструментів виконання в ОСРВ (ядро, драйвери, виконувані модулі) забезпечує функціонування додатки реального часу.
Більшість сучасних провідних ОСРВ підтримують цілий спектр апаратних архітектур, на яких працюють системи виконання (Intel, Motorola, RISC, MIPS, PowerPC та ін.). Справа в тому, що набір апаратних засобів є частиною комплексу реального часу і апаратура повинна бути також адекватна розв'язуваної задачі; тому провідні ОСРВ, задовольняючи самих різних вимог в частині апаратури, перекривають цілий ряд найбільш популярних архітектур. Систему виконання ОСРВ разом з комп'ютером, на якому вона виконується, називають цільовою (target) системою.
У систему розробки входить набір засобів, що забезпечують створення і налагодження додатка реального часу. Ці інструменти (компілятори, отладчики і всілякі допоміжні засоби) працюють, як правило, в популярних і поширених ОС, таких, як UNIX та Windows. Крім того, багато ОСРВ мають і так звані резидентні засоби розробки, що виконуються в середовищі саме / й операційної системи реального часу, - особливо це відноситься до ОСРВ з ядром реального часу (про це мова піде нижче).
Зауважимо, що функціонально системи розробки ОСРВ відрізняються від звичних - таких, наприклад, як Developers Studio, TaskBuilder, оскільки вони часто містять засоби дистанційного налагодження, профілювання (вимір часу виконання окремих ділянок коду), емуляції цільового процесора, спеціальні засоби налагодження взаємодіючих завдань, а іноді і засоби моделювання.
Час реакції системи. Майже всі виробники ОСРВ наводять такий параметр, як час реакції системи на переривання (interrupt latency).
Справді, якщо головним для системи реального часу є її здатність вчасно відреагувати на зовнішні події, то час її реакції є основоположним параметром. Однак що це за час і як слід його розглядати?
Відразу застережу читача: якщо в рекламному проспекті на якусь ОС реального часу ви виявите цей параметр без додаткових пояснень - просто не звертайте на нього уваги. На даний момент немає, на жаль, загальноприйнятих методологій виміру цього показника, тому він став полем битви маркетингових служб виробників ОСРВ. Є надія, що скоро ситуація зміниться, так як вже стартував проект порівняння ОСРВ, що включає в себе в тому числі і розробку методології тестування.
Як бути в цій ситуації?
Перш за все розберемося, які показники потрібно знати для того, щоб передбачити час реакції системи.
Події, що відбуваються на об'єкті, реєструються датчиками, дані з яких передаються в модулі вводу-виводу (інтерфейси) системи. Отримавши інформацію від датчиків і перетворивши її, модулі введення-виведення генерують запит на переривання в керуючому комп'ютері, подаючи йому тим самим сигнал про те, що на об'єкті відбулася подія. За цим сигналом система повинна запустити програму обробки події.
Інтервал від події на об'єкті до виконання першої інструкції в програмі його обробки і є часом реакції системи на подію. Проектуючи комплекс ОСРВ, розробники повинні вміти обчислювати цей інтервал. З чого він складається?
Час виконання ланцюжка дій - від події на об'єкті до генерації переривання - ніяк не залежить від ОСРВ і цілком визначається апаратурою, а ось інтервал від виникнення запиту на переривання до виконання першої інструкції обробника повністю залежить від властивостей операційної системи і архітектури комп'ютера. Причому цей час потрібно вміти оцінювати в гіршій для системи ситуації, т. Е. В припущенні, що процесор завантажений, що в цей час можуть відбуватися інші переривання, що система може виконувати якісь дії, що блокують переривання.
Непоганим підставою для оцінки часу реакції можуть служити результати тестування з докладним описом архітектури цільової системи, в якій проводилися вимірювання, засобів вимірювання і точним зазначенням, які часові відтинки вимірювалися. Деякі виробники ОСРВ результати такого тестування надають. Їх не побачиш в рекламних проспектах, але можна відшукати на Web-сторінках, в документах технічної підтримки, в публікаціях фірм, які проводять незалежне тестування.
Час реакції на переривання, характерне для деяких ОСРВ, представлено на рис. 2.
Мал. 2. Час реакції різних систем на переривання
Час перемикання контексту. У операційні системи реального часу закладений паралелізм - можливість одночасної обробки кількох подій, тому всі ОСРВ є багатозадачними. Для того, щоб вміти оцінювати накладні витрати системи при обробці паралельних подій, необхідно знати час, який система витрачає на передачу управління від процесу до процесу (від завдання до завдання, від нитки до нитки), т. Е. Час перемикання контексту (рис. 3).
Мал. 3. Час перемикання контексту
Розміри системи. Для ОСРВ важливим параметром є розмір системи виконання - сумарний обсяг мінімально необхідного для роботи програми системного набору (ядро, системні модулі, драйвери і т. Д.). Хоча треба визнати, що поступово значимість цього параметра зменшується, проте він залишається важливим і виробники ОСРВ прагнуть до того, щоб розміри ядра і обслуговуючих модулів були невеликі.
Наприклад, розмір ядра ОСРВ OS9 на мікропроцесорах МС68xxx становить 22 Кб, VxWorks - 16 Кб.
Можливість виконання системи з ПЗУ. Це одна з базових властивостей ОСРВ. Воно дозволяє створювати компактні вбудовані СРВ підвищеної надійності, з обмеженим енергоспоживанням, без зовнішніх накопичувачів.
Механізми реального часу
Процес проектування конкретної системи реального часу починається з ретельного вивчення об'єкта. Розробники проекту досліджують об'єкт і можливі події на ньому, визначають критичні терміни реакції системи на кожну подію і розробляють алгоритми обробки цих подій. Потім слід проектування як таке і розробка програмних додатків.
Мрією кожного розробника є ідеальна ОСРВ, в якій додатки реального часу розробляються на мові подій об'єкта. Хоча така система і існує тільки в теорії, вона має свою назву: система, керована критичними термінами. Розробка додатків реального часу в цій системі зводиться до опису можливих подій на об'єкті. У кожному описі вказуються два параметри: часовий інтервал - критичний час обслуговування даної події і адреса підпрограми його обробки. Всю подальшу турботу про те, щоб підпрограма обробки стартувала до закінчення критичного інтервалу часу, бере на себе операційна система.
Але це - мрія. В реальності ж розробник повинен перевести мову подій об'єкта в сценарій багатозадачною роботи додатків ОСРВ, намагаючись при цьому оптімательно використовувати надані йому спеціальні механізми і оцінити часи реакцій системи на зовнішні події.
Які ж механізми в операційних системах реального часу роблять СРВ передбачуваною?
Система пріоритетів і алгоритми диспетчеризації. Базовими інструментами розробки сценарію для системи є система пріоритетів процесів (завдань) і алгоритми планування (диспетчеризації) ОСРВ.
У багатозадачних ОС загального призначення використовуються, як правило, різні модифікації алгоритму кругової диспетчеризації, засновані на понятті безперервного кванта часу (time slice), яке надається для виконання даного процесу. Планувальник після закінчення кожного кванта часу переглядає чергу активних процесів і приймає рішення, кого з них передати управління, грунтуючись на пріоритетах. Пріоритети можуть бути фіксованими або змінюватися з часом - це залежить від алгоритмів планування в даній ОС, але рано чи пізно процесорний час отримають всі процеси в системі.
Алгоритми кругової диспетчеризації в чистому вигляді в ОСРВ незастосовні. Основним їх недоліком є те, що протягом безперервного кванта часу процесором володіє тільки один процес. Планувальники ж ОСРВ мають можливість змінити процес до закінчення time slice, якщо в цьому виникла необхідність. Один з можливих алгоритмів планування при цьому - пріоритетний з витісненням. Світ ОСРВ відрізняється багатством різних алгоритмів планування: динамічні, пріоритетні, монотонні, адаптивні та ін., Мета ж завжди переслідується одна - надати інструмент, що дозволяє в потрібний момент часу виконувати саме той процес, який необхідний.
Механізми межзадачного взаємодії. Інший набір механізмів реального часу відноситься до засобів синхронізації процесів і передачі даних між ними. У нього входять семафори, м'ютекси (mutex), події, сигнали, засоби для роботи з пам'яттю, що, канали даних (pipes), черги повідомлень. У ОСРВ ці механізми дуже розвинені. Багато з них використовуються і в ОС загального призначення, але їх реалізація в ОСРВ має свої особливості: час виконання системних викликів майже не залежить від стану системи, і в кожної ОСРВ є принаймні один швидкий механізм передачі даних від процесу до процесу.
Засоби для роботи з таймерами. Такі інструменти, як засобу роботи з таймерами, необхідні для систем з жорстким тимчасові / м регламентом, тому вони є необхідним атрибутом ОСРВ. Ці кошти, як правило, дозволяють:
- вимірювати і ставити різні часові відтинки (від 1 мкс і вище);
- генерувати переривання після закінчення тимчасові / г інтервалів;
- створювати разові і циклічні будильники.
У статті описані лише базові, обов'язкові механізми, що використовуються в ОСРВ. Але крім них майже в будь-який ОСРВ ви знайдете цілий набір додаткових, специфічних тільки для неї можливостей, що стосується системи введення-виведення, управління переривань, роботи з пам'яттю. Кожна система містить також ряд засобів, що забезпечують її надійність: вбудовані механізми контролю цілісності кодів, інструменти для роботи зі сторожовими таймерами.
Далі буде
Версія для друку
Тільки зареєстровані користувачі можуть залишати коментарі.
Чи так це?Чим принципово відрізняються операційні системи реального часу від операційних систем загального призначення?
А що важливо для ОСРВ?
Яка структура цих продуктів?
Однак що це за час і як слід його розглядати?
Як бути в цій ситуації?
З чого він складається?
Які ж механізми в операційних системах реального часу роблять СРВ передбачуваною?