QNX

**QNX** — камерцыйная Unix-падобная камп’ютарная аперацыйная сістэма рэальнага часу, Прызначана галоўным чынам для рынку ўбудаваных сістэм. QNX была першапачаткова распрацавана канадскай кампаніяй Quantum Software Systems. Лічыцца адной з найлепшых рэалізацый канцэпцыі мікраядзерных аперацыйных сістэм і выкарыстоўваецца ў шэрагу прылад, у тым ліку ў інтэрнэт-маршрутызатарах, авіясімулятарах, навігацыйных сістэмах, галівудскіх сістэмах спецэфектаў, смартфонах, мабільных прыладах, медыцынскіх прыладах, казіно і інш.

## Апісанне 
З’яўляючыся мікраядзернай аперацыйнай сістэмай, QNX грунтуецца на ідэі работы большай часткі аперацыйнай сістэмы ў форме шэрага маленькіх задач, вядомых як «серверы». Гэта адрозніваецца ад больш традыцыйнага маналітнага ядра, калі аперацыйная сістэма з’яўляецца проста адной вялікай праграмай, складзенай з вялікай колькасці частак вузкага прызначэння. У выпадку QNX, выкарыстанне мікраядра дазваляе распрацоўшчыкам адключаць любую частку функцыянальнасці, у якой нама патрэбы, без аніякіх змен у аперацыйнай сістэме: замест гэтага, «серверы» проста не запускаюцца.

Сістэма дастаткова малая, ранейшыя версіі змяшчаюцца на адным флопі-дыску.

QNX Neutrino (2001) была партавана на шэраг платформ, і цяпер працуе практычна на любым сучасным CPU, прысутным на рынку ўбудаваных сістэм. Спіс уключае PowerPC, сямейства x86, MIPS, SH-4, ARM.

QNX прапаноўвае таксама ліцэнзію для некамерцыйных і акадэмічных карыстальнікаў.

## Гісторыя 
Два студэнты ўніверсітэта Ватэрлоо Гордан Бэл і Дэн Додж ў 1980 скончылі вывучэнне курсу аб распрацоўцы аперацыйных сістэм, у час якога стварылі аснову ядра рэальнага часу. Абодва былі перакананы, што ў іх аперацыйнай сістэме існуе камерцыйная патрэба, і пераехалі ў горад Каната ў правінцыі Антарыа, дзе заснавалі кампанію Quantum Software Systems. У 1982 з’явілася першая версія QNX для працэсараў Intel 8088.

Адно з першых выкарыстанняў QNX не адносілася да ўбудаваных сістэм: QNX была абрана для ўласнага камп’ютарнага праекта міністэрства адукацыі Антарыа. У той час QNX выкарыстоўвалася галоўным чынам у «вялікіх праектах», паколькі яе ядро было занадта вялікім, каб змясціцца ў аднакрыштальных камп’ютарах той эпохі. У сярэдзіне 1980-х з’явілася QNX2. Сістэма атрымала добрую рэпутацыю за надзейнасць, і пачала ўжывацца для кіравання прамысловымі машынамі.

У другой палове 1980-х, у Quantum зразумелі, што рынак хутка рухаецца ў напрамку мадэлі POSIX, і вырашылі перапісаць ядро дзеля значна большай сумяшчальнасці на ніжэйшым узроўні. Так з’явілася QNX4. У гэты самы час была распрацавана новая канцэпцыя для ваконнай сістэмы, якая была распрацавана як ўбудаваная GUI пад імем QNX Photon microGUI. Таксама QNX партаваў для сябе версію X Window System. Дзякуючы інтэрфейсу POSIX, партаванне Unix і BSD пакетаў стала лягчэйшым.

К канцу 1990-х гадоў, кампанія, якая цяпер называецца QNX Software Systems, пачала працу над цалкам новай версіяй аперацыйнай сістэмы QNX, якая б падтрымлівала новую рэдакцыю POSIX і была б максімальна сумяшчальнай з NetBSD і Linux і ў той жа час захоўвала прадказальныя паводзіны ды мікраядзерную архітэктуру. Вынікам гэтых распрацовак у 2001 стала QNX Neutrino. Гэта версія пастаўляецца разам з QNX Momentics Tool Suite — інтэграваным асяроддзем распрацоўкі (IDE), заснаваным на Eclipse, рознымі ўтылітамі GNU і праграмным забяспячэннем, арыентаваным на Інтэрнэт, у тым ліку вэб-серверам. У адрозненне ад ранейшых версій, што працавалі толькі на PC-сумяшчальных архітэктурах, QNX6 лёгка адаптуецца да любой апаратнай канфігурацыі; акрамя гэтага, асобая ўвага была звернута на магчымасць эфектыўнага маштабавання.

У 2004 годзе QNX Software Systems была набыта кампаніяй Harman International Industries.

У верасні 2007 года QNX Software Systems аб’явіла аб даступнасці часткі зыходнага кода.

У красавіку 2010 года Research In Motion аб’явіла аб набыцці QNX Software Systems у Harman International Industries. У той жа дзень, доступ да зыходнага кода быў абмежаваны. У верасні 2010 года кампанія прадставіла планшэтны камп’ютар BlackBerry PlayBook і новую аперацыйную сістэму для яго, BlackBerry Tablet OS, заснаваную на QNX.

## Тэхналогія 
Ядро QNX змяшчае толькі планаванне працэсара, міжпрацэсавае ўзаемадзеянне, перанакіраванне перарыванняў і таймеры. Усё астатняе выконваецца ў якасці карыстальніцкіх працэсаў, уключаючы спецыяльны працэс proc, які адказны за стварэнне іншых працэсаў, а таксама кіраванне памяццю, ў спалучэнні з мікраядром. У ядры няма драйвераў прылад. Сеткавы стэк заснаваны на кодзе NetBSD. Акрамя падтрымкі ўласных драйвераў, QNX падтрымлівае іх састарэлыя версіі, сервер кіравання io-net, а таксама сеткавыя драйверы, партаваныя з NetBSD.

Міжпрацэсавае ўзаемадзеянне складаецца з адпраўкі паведамлення ад аднаго працэса да другога і чакання адказу. Гэта адна аперацыя, што завецца MsgSend. Паведамленне капіюецца ядром з адраснай прасторы адпраўніка ў адрасную прастору атрымальніка. Калі атрымліваючы працэс чакае паведамленне, кіраванне CPU перадаецца ў той жа час, без праходу праз планавальнік працэсара. Такім чынам, аперацыя MsgSend не прыводзіць да «страты чаргі» да CPU. Гэтая шчыльная інтэграцыя паміж перадачай паведамленняў і планаваннем працэсара з’яўляецца адным з галоўных механізмаў, які робіць перадачу паведамленняў у QNX шырока выкарыстальным.

Усе аперацыі ўводу/вываду, файлавыя, сеткавыя аперацыі працуюць праз гэты механізм, інфармацыя перадаецца праз капіраванне ў час перадачы паведамленняў. У пазнейшых версіях QNX паменшылася колькасць асобных працэсаў, а таксама сеткавы стэк і іншыя функцыянальныя блокі былі інтэграваныя ў адну праграмау з патрэбы прадукцыйнасці.

Прыярытэт апрацоўкі паведамленняў зыходзіць ад прыярытэтаў працэсаў. Паколькі запыты ўводу/вываду выконваюцца з выкарыстаннем перадачы паведамленняў, высокапрыярытэтныя працэсы атрымліваюць сэрвіс уводу/вываду раней за нізкапрыярытэтныя, што з’яўляецца істотнай прыкметай у сістэме жорсткага рэальнага часу.

Загрузчык — яшчэ адзін важны кампанент мінімальнай мікраядравай сістэмы. Паколькі карыстальніцкія праграмы могуць быць убудаванымі ў вобраз для загрузкі, патрэбны камплект драйвераў і бібліятэк для запуску павінен быць, але адсутнічае у ядры. Нават такія функцыі, як загрузка праграм, не знаходзяцца ў ядры, але замест гэтага знаходзяцца ў агульных бібліятэках прасторы карыстальніка, якія загружаюцца як частка вобразу. Магчыма змясціць увесь вобраз у ROM, што выкарыстоўваецца ў бяздыскавых убудаваных сістэмах.

QNX Neutrino падтрымлівае сіметрычную шматпрацэсарнасць і роднасць працэсара, што ў тэрмінах QNX завецца звязаннай шматпрацэсарнасцю (bound multiprocessing, BMP). BMP выкарыстоўваецца дзеля паляпшэння працы з кэшам і палягчэння міграцыі з бяспечных прыкладанняў без SMP на шматпрацэсарныя камп’ютары.

QNX Neutrino падтрымлівае строгае прыярытэтна-выцясняльнае планаванне і адаптыўны падзел планавання (APS). APS гарантуе мінімальнае выкарыстанне CPU выбранай групай працэсаў, нават калі астатнія працэсы маюць больш высокі прыярытэт. APS застаецца строга прыярытэтна-выцясняльным, калі сістэма не нагружана. Таксама ён можа быць канфігураваны каб выконваць набор крытычных струменяй строга ў рэальным часе, нават калі сістэма перагружана.

### Празрыстая размеркавальная апрацоўка 
Як вынікае з мікраядзернай архітэктуры, QNX з’яўляецца размеркавальнай аперацыйнай сістэмай. Дэн Додж і Пітар ван дэр Він маюць патэнт ЗША 6,697,876  аб размеркавальнай апрацоўцы ў QNX, камерцыйна вядомай як «Празрыстая размеркавальная апрацоўка». Гэта дазваляе ядрам QNX на розных прыладах мець доступ да сістэмных сэрвісаў адзін аднаго, фактычна выкарыстоўваючы такі самы механізм, які выкарыстоўваецца для доступу да лакальных сэрвісаў.

## Foundry27 
Foundry27 — гэта QNX вэб-супольнасць, што служыць як хаб для распрацоўшчыкаў QNX Neutrino, дзе распрацоўшчык можа зарэгістравацца, выбраць ліцэнзію і атрымаць крынічны код ды звязаныя інструменты АСРЧ. Пасля 9 красавіка 2010 года, пасля набыцця кампаніяй BlackBerry, поўны зыходны код больш не даступны зацікаўленым аматарам альбо грамадскасці.

## Спасылкі 
* QNX Software

Катэгорыя:Аперацыйныя сістэмы