QNX

admin Статті про Linux/FreeBSD

QNXQNX. Нещодавно компанія RIM, найбільший виробник смартфонів у США, купила канадську фірму QSS. Незабаром стало відомо, навіщо потрібна була ця угода: RIM анонсувала планшетний комп'ютер, що працює під управлінням операційної системи, заснованої на QNX Neutrino.

Фахівцям у галузі промислової автоматизації додаткових пояснень не потрібно - їм добре знайома ця платформа. Скоро з нею вперше познайомиться і широка публіка.

Історична довідка QNX

Тридцять років тому, в 1980 році, випускники канадського університету Ватерлоо Гордон Белл і Ден Додж разом розробили основу ядра нової операційної системи реального часу. Тоді ж вони переїхали в місто Каната в провінції Онтаріо і заснували компанію Quantum Software Systems, яка через два роки випускає операційну систему QUNIX (читається як "кюнікс", від англ. "Quick" - швидкий).

Торговою маркою UNIX на той момент володіла корпорація AT&T. За її наполяганням система була перейменована в QNX, а пізніше, вже на початку дев'яностих, і сама компанія змінила назву на QNX Software Systems (QSS).

До середини вісімдесятих з'явилася QNX2, а через десять років за нею пішла QNX4. Розробники ще раз повністю переписали ядро, зосередивши свої зусилля на сумісності зі стандартом POSIX. У QNX4 з'явилася вбудована графічна підсистема Photon microGUI, а крім того, завдяки сумісності з POSIX, на неї були перенесені різні програми для Unix (зокрема X Window System).

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

Photon microGUI

Наприкінці дев'яностих компанія QSS розробила QNX6 (Neutrino), яка була випущена в 2001 році. Крім відповідності нової редакції стандарту POSIX, вона відрізняється максимальною сумісністю з NetBSD і Linux (досить сказати, що нова мережева підсистема QNX була портована з NetBSD). При цьому операційна система зберегла мікроядерну архітектуру.

В даний час розробникам (саме вони є клієнтами QSS, адже це вбудована ОС) доступна версія QNX 6.5, яка поставляється разом з заснованим на Eclipse середовищем розробки QNX Momentics (з її допомогою створюють цільові системи для різних пристроїв).

У 2004 році QSS була куплена корпорацією Harman (так, угода з RIM - не перший продаж компанії), яка зберегла її автономію, а Ден Додж став також віце-президентом Harman з інформаційних технологій. У 2007 році вихідні тексти QNX почали відкривати під гібридною ліцензією (в рамках проекту Foundry27), але при цьому сама система залишилася комерційною. Після покупки QSS компанією RIM доступ до вихідних текстів був обмежений і почалася новітня історія цієї примітної ОС.Архітектура системи QNX

Складно описати архітектуру системи, не вдаючись у непотрібні більшості читачів технічні подробиці. Ми звикли до ОС з монолітними ядрами, які представляють собою велику програму, що містить безліч підсистем: систему управління процесами і пам'яттю, дискову підсистему і т. д. У QNX все навпаки.

Ядро QNX - це невелика (близько 8Кб в QNX4 і від 20 до 32 Кб в QNX6) програма на асемблері, яка займається, в основноve, плануванням процесів і забезпеченням взаємодії між ними. Все інше роблять самі запущені процеси, притому тут немає ніякої принципової різниці між звичайною для користувача програмою і, скажімо, дисковою підсистемою. Будь-який процес може бути запущений і зупинений в довільний момент часу, причому якщо не потрібно, наприклад, працювати з мережею - немає ніякої необхідності запускати мережеву підсистему.

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

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

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

Будь cистема реального часу повинна бути швидкою (інакше вона не встигне обробити дані з декількох джерел, та ще без буферизації). Але вона повинна забезпечити не просто швидку, а гарантовану реакцію. Звичайно, фахівцям подібне пояснення здасться занадто дилетантським, але для загального розуміння ситуації його цілком достатньо. Можна ще говорити про справжню багатозадачність, блокування, квантуванні часу й інші цікаві речі, але це точно виходить за рамки популяризаторської статті.

Наостанок варто зазначити, що QNX - це вбудована ОС. Якщо QNX4 ще розгортали за допомогою програми установки на деяких пристроях, то для QNX Neutrino це абсолютно ненормальна ситуація. Сценарій тут такий: є встановлене під Windows або Linux середовище розробки Momentics, у ній роблять цільову систему (прошивку), яку і заливають на пристрій. Звичайно, програма установки тут є, з її допомогою можна поставити QNX Neutrino (і Momentics для QNX) на x86-сумісну машину. Але в реальній роботі її не використовують - тільки для тестів та навчання. (Зверніть увагу на цікаву статтю про процесори Intell)

Приклади застосування QNX

Говорити про використання системи QNX можна нескінченно. Ця система нагадує горезвісного ховрашка, якого ніхто не бачить ... а він, тим часом, є. QNX контролює роботу атомних реакторів, газових котлів, автомобільних комп'ютерів, бурових установок (до речі, система активно застосовується і в російській нафто-газової галузі) і маси інших пристроїв від найпростіших контролерів до складних бортових комплексів автономних підводних і космічних апаратів. Тут і робота з пластиковими картами VISA в Північній Америці, і управління дорожнім рухом у канадському місті Оттава-Карлтон.

Найбільш вражаюче застосування QNX в телекомі - ОС для систем маршрутизації операторського класу Cisco IOS XR являє собою цільову систему на базі Neutrino (звичайно, в IOS XR більше розробленого компанією Cisco, але вибір QNX в якості основи для подібної платформи говорить багато про що). У Санкт-Петербурзі QNX застосовується в системі автоматизованого контролю та управління розводкою Троїцького моста, в метрополітені і багато де ще - всього не згадаєш.Графічна підсистема QNX

Цілком очевидно, що така універсальна, надійна, розширювана (та інше) операційна система може працювати і на гаджетах. Але тут є одна проблема - вбудовувана графічна підсистема Photon для цього абсолютно не пристосована. Однак не все так погано - ще до продажу компанії в QSS замислювалися про використання своїх розробок в цій області і почали робити нову графічну підсистему. Нічого дивного - якщо не брати до уваги відсутність адекватного інтерфейсу - QNX була б ідеальною системою для сучасних планшетів і комунікаторів. Напевно вона вимагатиме набагато менших ресурсів, ніж десктопні Linux, iOS і Windows (забезпечуючи при цьому більш надійну роботу пристрою). Розробники реалізувати свої наполеонівські плани не змогли. Не виключено, що у RIM це вийде. До речі, той факт, що в новій графічній підсистемі QNX активно використовувалися технології Adobe Flash та JavaScript наводить на певні думки - швидше за все інтерфейс анонсованого планшета використовує старі розробки QSS (представники RIM також багато говорять про використання Flash та JavaScript в інтерфейсі свого планшета).