Короткі характеристики найбільш поширених осрч




Сторінка5/8
Дата конвертації03.11.2017
Розмір0,73 Mb.
1   2   3   4   5   6   7   8

5.2.1 Microsoft Windows Embedded


Операційні системи Microsoft Windows Embedded для вбудованих систем мають два різновиди відповідно до версіями ОС Windows - NT і XP [MSEmb]. Версії систем Embedded корпорації Microsoft складаються з численних конфігурованих частин, які дозволяють легко маніпулювати набором встановленого програмного забезпечення.

Windows NT Embedded використовує технічні ресурси Windows NT і дозволяє розробляти додатки, які можуть бути легко інтегровані в існуючу інформаційну інфраструктуру.

Набір засобів розробки - Target Designer і Component Designer - дозволяє OEM (original equipment manufacturer) виробникам конфігурувати та створювати операційну систему для конкретної апаратної платформи. Windows NT Embedded володіє специфічними компонентами для створення вбудованих систем, які дозволяють працювати в системах без відеоадаптера, здійснювати завантаження і роботу накопичувачів в режимі "тільки читання", виконувати віддалене адміністрування і надають додаткові засоби обробки помилок і відновлення. Windows NT Embedded дає можливість створювати пристрої, з якими працювати так само просто, як і зі стандартними ПК на основі Windows, та управляти цими новими пристроями на основі існуючих професійних продуктів, таких як Microsoft Systems Management Сервер, HP OpenView, IBM Tivoli, CA Unicenter TNG, та ін

Розробник вбудованих систем застосовує для конфігурування ОС Target Designer, використовуючи готовий двійковий код Windows NT, додаткові компоненти для вбудовування і додаткові додатки. У разі необхідності, для створення нових компонентів, що не входять до складу продукту (наприклад, драйверів пристроїв, додатків та ін), може використовуватися Component Designer. Новостворені нові компоненти можуть бути імпортовані в Target Designer і включені до складу цільової ОС. Після конфігурування ОС з допомогою Target Designer відбувається перевірка взаємозв'язків компонентів і будується образ системи, готовий до завантаження і виконання на цільовій системі.

Windows XP Embedded налічує до 10000 окремих компонентів, а в Windows NT Embedded їх було трохи більше 300. Основною відмінною рисою Windows XP Embedded є чітке розмежування компонентів системи, що дозволяє розробникам вбудованого набору функцій при створенні образу системи включати тільки необхідні файли і максимально скоротити розмір результуючої системи. Цими компонентами служать окремі частини системи Windows XP Professional.

Компоненти Windows XP Embedded представлені сервісами, додатками, бібліотеками і драйверами - розробнику потрібно настроїти необхідний набір функцій і зібрати з компонентів необхідну конфігурацію в образ середовища виконання (runtime image). Всі опції конфігурації зібрані воєдино в базу даних компонентів. Розробник має до неї доступ і може її редагувати за допомогою спеціального інструменту - Component Database Manager.

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

платформа, на якій буде виконуватися даний компонент (визначає порядок компіляції та складання);

опис і схема підключення компонента;

список асоційованих ресурсів, таких як файли і ключі реєстру;

залежно компонента від інших компонентів (наприклад, від DirectX або NET runtime);

покажчик на сховище файлів (найчастіше це просто локальний каталог, але може бути і мережевим ресурсом);

приналежність до групи для спрощення звернення відразу до декількох компонентів як до цілого.

Сама база даних управляється СУБД MS SQL Server і може бути розташована як локально, на комп'ютері розробника, так і на сервері.


6. TinyOS

Розробка операційної системи TinyOS [HSW00] пов'язана з появою нової концепції бездротового зв'язку - Motes. Motes (у перекладі з англійської - порошинки, смітинки) - це реалізація ідеї "smart-dust" ("розпорошеної розумності"), запропонованої оборонним агентством Darpa (Defense Advanced Research Projects Agency), зокрема, для відстеження пересувань противника.

Motes розроблені в Каліфорнійському університеті в Берклі спільно з Intel, і в даний час ведуться випробування цих самоорганізуються мереж, побудованих на основі відкритих технологій Intel Mote та програмного забезпечення TinyOS, TinyDB.

Розумні сенсори Motes, розподілені в просторі, можуть самостійно зв'язуватися один з одним, утворюючи розподілену бездротову інформаційну мережу. "Порошинка розуму" складається з 8-бітового мікроконтролера сімейства Amtel AVR, прийомопередаюче інтегрального модуля TR1000 і двох мікросхем середнього ступеня інтеграції - енергонезалежної пам'яті і додаткового завантажувального мікроконтролера, що дозволяє по радіоканалу оновлювати ПО центрального процесора - AVR.

"Smart-dust" створювалася для динамічних, що змінюються як в просторі, так і в часі мереж - для тієї області, в якій абсолютно незастосовні ні традиційні алгоритми управління, ні відпрацьовані принципи маршрутизації, ні архітектурні рішення, що лежать в основі традиційного системного ПЗ. Прагнення конструкторів зробити її якомога компактнішою (у перспективі - 1 мм 3) тягне за собою низку істотних обмежень, в першу чергу енергетичних. Обмежені обчислювальні ресурси і динамічний характер мережі призводять до того, що функціональність "пилинки" треба час від часу змінювати, що може бути досягнуто тільки одним способом - передачею по радіоканалу потрібного ПЗ. З іншого боку, енергетична дорожнеча передачі інформації вимагає надкомпактний подання переданого коду, в іншому випадку "пилинки" просто не будуть працювати з-за швидкого виснаження крихітних автономних джерел живлення.

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

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

Архітектура TinyOS об'єднує таке звичну складову, як планувальник завдань (scheduler), і оригінальне поняття - компонентний граф. Термін "компонент" тут одночасно і відповідає загальноприйнятому розумінню, і суттєво розширює його. Так, інтерфейс компонента TinyOS складається з двох множин - верхнього, що надається цим компонентом, і нижнього, необхідного для його функціонування. Кожне з цих множин містить описи команд і подій - синхронних і асинхронних процесів.

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

Написана TinyOS з використанням структурованого підмножини мови C. Використання статичного розподілу пам'яті дозволяє визначати вимоги до пам'яті на рівні компіляції та уникати накладних витрат, пов'язаних з динамічним розподілом. Крім того, цей підхід дозволяє скорочувати час виконання завдяки статичному розміщення змінних під час компіляції замість доступу до них за вказівником під час виконання.

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

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

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

У системі передбачена також окрема абстракція завдання, що розуміється як тривалий обчислювальний процес. Взаємовідношення між поняттями "команда" і "завдання" наступне: команда - це атомарна складова завдання. Команда ставиться в чергу на виконання планувальника, потім вона виконується і може бути тимчасово перервана обробкою події.

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

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

Для забезпечення динамічності під час виконання була розроблена віртуальна машина, яка є надбудовою над ОС TinyOS. Код для віртуальної машини можна завантажити в систему під час виконання. Для роботи цієї віртуальної машини необхідні 600 байт оперативної пам'яті й менше 8 KB пам'яті команд 8-бітового мікроконтролера. Програми віртуальної машини представляються 8-бітовими інструкціями всього трьох типів, що об'єднуються в "капсули" - атомарні послідовності не більш ніж двадцяти чотирьох інструкцій. Ієрархічна структура мережі виходить автоматично завдяки тому, що всі сенсори слідують простим правилам, закладеним у TinyOS. Правила ці, наприклад, визначають спосіб пошуку найкоротшого шляху до найближчого стаціонарного вузла, а вже залежно від того, де і як розташовані сенсори, мережа приймає звичну для системних адміністраторів древообразну форму. У TinyOS враховується також і те, що деякі види сенсорів можуть працювати від сонячних батарей чи інших джерел енергії, що залежать від погоди, тому при втраті зв'язку з найближчим вузлом мережі відбувається зміна маршруту, по якому пересилаються пакети.

7. OSEK / VDX

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

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

ОС OSEK забезпечує певний набір інтерфейсів для користувача. Інтерфейси використовуються сутностями, що конкурують за центральний процесор. ОС OSEK оперує двома типами таких сутностей - завдання і переривання - і визначає три рівні обробки - рівень переривань, логічний рівень планувальника і рівень завдань. Завдання вибираються на виконання відповідно до присвоєними їм пріоритетами.

Завдання в ОС OSEK може бути

базової або розширеної,

витісняється або невитискаючої.

Головна відмінність між базовою і розширеної завданнями полягає в тому, чи може завдання впасти в стан очікування (в якому вона чекає на появу події). Тільки розширена задача може очікувати події. Витісняється завдання може бути витіснена завданням більш високого пріоритету або перервана перериванням. Невитискаючої завдання може бути витіснена тільки за допомогою переривання (коли переривання не заборонені).


Рис.5. Рівні обробки в ОС OSEK.


Концепція двох типів завдань зажадала введення нового поняття - клас відповідності (conformance class) для опису своєрідною реалізації ОС OSEK і системних сервісів. Визначаються чотири класи відповідності - два для базового відповідності (BCC1 і BCC2 - Basic conformance Classes 1 і 2) і два для розширеного (ECC1 і ECC2 - Extended Conformance Classes 1 і 2). Реалізації, які відповідають базовим класам, вимагають використання тільки базових завдань, у той час як для розширених класів потрібні як розширені, так і базові завдання. Числа 1 і 2 в іменах класів вказують кількість запитів на завдання для базових завдань і кількість завдань на пріоритет для всіх завдань. Таким чином, в BCC1 і ECC1 є тільки одне завдання на пріоритет, і базові завдання можуть бути запитані тільки один раз. У BCC2 і ECC2 допускається множинність завдань на пріоритет і множинне запрашіваніе базових завдань.

Кожна задача повинна знаходитися в одному з чотирьох станів

Виконуються - тільки одне завдання може бути в цьому стані,

Готова до виконання - планувальник може вибрати її на виконання на підставі пріоритетів і правил витіснення,

Стані очікування - завдання чекає на появу події,

Призупинена - завдання в пасивному стані і чекає активації.


Рис.6. Модель станів завдання в ОС OSEK.


Кожне завдання має пріоритет. Стандарт ОС OSEK не обмежує максимальну кількість пріоритетів - це визначає реалізація.

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

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

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

Аварійні сигнали і лічильники в OSEK використовуються для синхронізації активації завдань з повторюваними подіями. Аварійний сигнал статично присвоюється лічильнику, задачі і дії. Вплив може або активувати завдання, або встановити подія. Лічильники оперують тактами і можуть становити час, кількість прийнятих імпульсів і т.п. Кожна реалізація забезпечує один часовий лічильник, який використовується для планування періодичних подій. Всі інші лічильники управляються через API, є специфічними для конкретної реалізації і не можуть бути які переносяться.

У OSEK існує два типи аварійних сигналів: циклічні і одинарні. Циклічні аварійні сигнали застосовуються для диспетчеризації завдання, яка повинна запускатися періодично. Лічильник аварійного сигналу може бути встановлений в відносне або абсолютне значення. Параметри циклу і значення лічильника можуть встановлювати заново динамічно. ОС OSEK забезпечує мінімальні засоби для керування помилками часу виконання. Однак є можливість додаткового управління помилками під час розробки завдяки розширеній функціональності повернення управління. Причина такого рішення полягає в тому, що після того, як продукт запущений у виробництво, більшість можливих помилок може бути виявлено під час тестування (такі як "невірний ідентифікатор завдання", "ресурс зайнятий", "непередбачений виклик з рівня переривань" і т.д.). Під час виконання більшість системних сервісів не повертає коди помилок, але деякі сервіси, такі як аварійні сигнали, які можуть стартувати і зупинятися динамічно, повертають код помилки, якщо даний аварійний сигнал уже використовувався. ОС OSEK визначає два типи помилок - помилки програми та фатальні помилки. При помилку програми, коли програма намагається виконати несанкціоновану операцію (наприклад, активізувати неіснуючу завдання), цілісність внутрішніх даних все ще зберігається. Фатальні помилки виникають, якщо ОС виявляє порушення цілісності внутрішніх даних. При виявленні таких помилок викликається сервіс завершення роботи ОС.


1   2   3   4   5   6   7   8


База даних захищена авторським правом ©uchika.in.ua 2016
звернутися до адміністрації

    Головна сторінка