Операційна система QNX

Матеріал з ПІЕ.

Зміст

Історія створення

Компанія QSSL, яка розробила операційну систему QNX, була створена в 1980 році Деном Доджом і Гордоном Беллом (обидва - випускники університету Ватерлоо, розташованого в Онтаріо, Канада). Спочатку компанія називалася Quantum Software Systems Limited, а її продукт називався QUNIX (Quantum UNIX). Після ввічливого листа адвокатів компанії AT&T (який належала торгова марка «UNIX»), ім'я продукту змінили на «QNX». Через деякий час змінили і назву самої компанії — на QNX Software Systems Limited — оскільки в ті дні здавалося, що у всіх і кожного і їхніх собак були компанії на ім'я «Quantum щось» або якось у цьому дусі. .

Перший програмний продукт, який отримав комерційний успіх, називався просто QNX і працював на процесорах 8088 серії. Потім, на початку 80-х, було випущено операційну систему «QNX2» (QNX, версія 2). Вона досі успішно застосовується у багатьох відповідальних додатках. Приблизно в 1991 році з'явилася нова операційна система, QNX4, з покращеною підтримкою 32-розрядних операцій і стандарту POSIX. І, нарешті, 1995 року було заявлено нову модифікацію ОС сімейства QNX, звана QNX/Neutrino.

Незважаючи на те, що терміном Neutrino часто називають саму ОС (сам Роб, до речі, теж грішить цим), це не так. Neutrino - ім'я мікроядра, а не всієї ОС загалом; QNX/Neutrino була названа так, тому що є версією QNX, заснованої на мікроядрі Neutrino. Згодом, після виходу QNX Realtime Platform, щоб не вносити плутанини, ОС QNX/Neutrino стали називати просто QNX6.

Версії QNX

Що ж ми маємо на увазі, промовляючи слово "QNX"? QNX - це сімейство операційних систем жорсткого реального часу,орієнтованих головним чином ринку вбудованих систем. Таке призначення вимагає від ОС максимального використання особливостей апаратури. Тому ОС QNX різних версій (правильніше було б сказати поколінь) не мають між собою двійкової сумісності. Звичайно, розробники при створенні нових "версій" QNX використовують найкращі рішення із попередніх версій і залишаються вірними фундаментальним концепціям QNX. Для комерційного використання є три сімейства ОС QNX: QNX2, QNX4 і QNX6.

  • ОС QNX2 мало поширена в Україні. По-перше, до 1991 року система була заборонена вивезення з Північної Америки як стратегічний ресурс. По-друге, ЕОМ з урахуванням процесорів Intel 286 майже повсюдно вийшли із застосування.
  • ОС QNX4 використовує захищений режим, тому може застосовуватися на процесорах не нижче Intel 386. QNX4, мабуть, найпоширеніша на сьогоднішній день ОС QNX у промисловості. Остання її версія - 4.25 патч G (вийшла на початку 2003 року). Компанія QSS не розвиває цієї ОС, але продовжує випускати до неї драйвери для нових пристроїв.
  • ОС QNX6 (або QNX Neutrino) завдяки цікавим і незвичайним архітектурним рішенням може використовуватися не тільки на х86-сумісних ЕОМ і ще зручніша для вбудовування, ніж QNX4. QNX Neutrino розробляється з повною підтримкою специфікацій POSIX; крім того, розробники системи прагнуть забезпечити максимальну переносимість QNX вихідних кодів, написаних для ОС Linux. Це значно полегшує портування вільно розповсюджуваного ПЗ QNX і, з іншого боку, забезпечує "переносимість" для розробників - прикладний програміст, який знає будь-яку UNIX-подібну ОС, може приступати до розробки прикладного ПЗ для QNX без переучування. Остання версія QNX Neutrino - 6.3.

Інструментальні та цільові системи

Інструментальна система (або середовище розробки) - це ЕОМ із засобами, що дозволяють формувати образ цільової системи. Такі кошти включені лише до комерційних дистрибутивів пакету розробника QNX Momentics.

Цільова система (або середовище виконання) призначена для експлуатації. Середовище виконання фактично є інструментальною системою, з якої видалено все непотрібне для даної прикладної задачі.

Дистрибутиви QNX

Дистрибутив – це спосіб постачання інструментальних систем. Інакше кажучи, QSS продає саме інструментарій розробки. Середовища виконання формуються розробником самостійно, але для постачання їх комусь ще потрібно купівля ліцензій на відповідне число копій середовища виконання (їх називають "модулі Run-Time"). Така політика дозволяє суттєво знизити вартість цільових систем.

Слід звернути увагу, що засоби розробки поставляються у чотирьох варіантах – для Microsoft Windows ХР, Sun Solaris (тільки для SPARC-версії), Linux та, зрозуміло, для QNX. Цільові системи можуть бути генеровані для декількох апаратних платформ (ARM, MIPS32, StrongARM, SH4, PowerPC, Xscale, x86). Цей список, ймовірно, поповнюватиметься. Висуваючи на ринок ОС QNX6, компанія QSS випустила два дистрибутиви:

  • QNX Real Time Platform (QNX RTP) - повнофункціональне середовище розробки; поширювалася безплатно для некомерційного використання. У разі комерційного використання системи розробник мав придбати відповідну ліцензію у QSS;
  • QNX Networking Infrastructure Platform (QNX NIP) - чисто комерційний дистрибутив, що є розширенням QNX RTP додатковими програмними пакетами, орієнтованими на виробників мережевогообладнання.

З виходом версії QNX 6.2 компанія QSS дещо змінила підхід до формування дистрибутивів. Пакет розробника, що включає ОСРВ QNX, графічне середовище Photon, інструменти розробки та різне додаткове ПЗ, отримав назву QNX Momentics. В даний час випущено кілька дистрибутивів QNX Momentics:

  • Non-Commercial Edition (NC) – ознайомчий комплект розробника, безкоштовний для некомерційного використання;
  • Standard Edition (SE) - пакет розробника, що дозволяє вести комерційну розробку ПЗ, у тому числі формувати цільові системи для різних платформ;
  • Professional Edition (РЕ) - розширений пакет розробника, доповнений інтегрованим середовищем розробки QNX IDE, заснованої на технології Eclipse, а також розширеною базою прикладів у вихідних текстах та рядом додаткових компонентів.

Детальна інформація щодо комплектації дистрибутивів Momentics доступна як у QSS, так і її партнерів. Професійний комплект QNX Momentics вважається базовим (тобто SE - фактично є урізаним РЕ). РЕ може доповнюватися пакетами розширення для різних цільових ринків. Тепер ви знаєте, чим пакет розробника QNX Momentics відрізняється від QNX ОСРВ.

POSIX-сумісність

POSIX (Portable Operation Systems Interface) - це стандарт, що розвивається, покликаний забезпечити переносимість вихідних текстів програм між ОС різних виробників. За основу стандартів POSIX були взяті ОС сімейства UNIX, надалі стандарти були доповнені розширеннями, включаючи розширення реального часу. Розробкою стандартів POSIX займаються робочі групи Інституту інженерів з електротехніки та радіоелектроніки (ІІЕР, Institute of Electrical and Electronics Engineers)IEEE) США. Тому стандарти POSIX після затвердження мають маркування IEEE. Крім того, існують Міжнародна організація зі стандартизації (International Organization for Standardization – ISO) та Міжнародна електротехнічна комісія – МЕК (International Electrotechnical Commission – IEC). Ці організації можуть затверджувати стандарти IEEE як міжнародні. Стандарт ISO/IEC 9945-1 визначає інтерфейс прикладного програмування (API) для операційних систем. Цей стандарт включає такі стандарти:

  • POSIX.l (IEEE 1003.1) - базовий API операційних систем;
  • POSIX.la (IEEE 1003.1а) - деякі розширення API;
  • POSIX.4 (IEEE 1003.1b) – розширення для підтримки реального часу;
  • POSIX.4a (IEEE 1003.1с) - інтерфейси потоків, що виконуються всередині POSIX-процесів;
  • POSIX. lb (IEEE 1003. Id) - додаткові розширення реального часу;
  • POSIX.12 (IEEE 1003.lg) – незалежний від протоколу інтерфейс сокетів;
  • IEEE 1003.lj – ще одне додаткове розширення реального часу.

Стандарт ISO/IEC 9945-2 (POSIX.2 або IEEE 1003.2) визначає набір утиліт та командних інтерпретаторів. Стандарт ISO/IEC 13210 (POSIX.3 або IEEE 1003.0) визначає набір тестів, що дозволяють визначити POSIX-сумісність операційної системи.

Зауважимо, що в документації часто використовується комбіноване позначення номерів стандартів, наприклад, замість POSIX.4a або IEEE 1003.1с пишуть POSIX 1003.1с.

Проте багато ОСРВ працюють усередині деякого промислового устаткування з обмеженими ресурсами, тобто. є системами, що вбудовуються. Вбудовані системи не можуть і не повинні забезпечувати всю POSIX-функціональність. Тому було вирішено визначити, якщо можна так сказати, правила "урізання"стандартів POSIX у необхідних випадках. Такі "урізання" названі профілями прикладних контекстів реального часу та регламентуються стандартом ISO/IEC ISP 15287-2 (POSIX. 13 або IEEE 1003.13). Цей стандарт визначає такі профілі:

  • мінімальна система - вбудована система без підтримки механізму керування пам'яттю (MMU), без файлової системи та терміналу. У такій системі дозволяється лише один багатопотоковий процес;
  • контролер реального часу - мінімальна система, доповнена файловою системою та терміналом введення/виводу;
  • спеціалізована система — велика вбудована система, де може виконуватися кілька многопоточных процесів. Файлова система відсутня;
  • багатоцільова система - операційна система реального часу, що забезпечує підтримку всієї передбаченої стандартом POSIX функціональності.

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