QNX

A QNX (kiejtve Q-N-X) egy POSIX-kompatibilis, Unix-szerű, valós idejű operációs rendszer. Ezt a mikrokernel alapú operációs rendszert főleg beágyazott rendszerekhez ajánlják. A QNX kernelt 2007. szeptember 9-én ingyenesen hozzáférhetővé tették nem-kereskedelmi jellegű alkalmazásokra.

Ismertetés 
A QNX mikrokernel alapú operációs rendszer. A mikrokernel minden egyéb folyamattól elszigetelten működik.
Minden egyéb driver, alkalmazás egy ún. szoftver buszon keresztül tart kapcsolatot a kernellel és más komponensekkel. Ez néhány szempontból különbözik a hagyományos, monolitikus kernel-modellektől, mert ott az operációs rendszer egy nagy darab program, amely rengeteg, speciális feladattal felruházott „alkatrészből” áll.
A QNX esetében azonban a mikrokernel használata azt jelenti, hogy a programozók bármilyen funkcionalitást ki tudnak kapcsolni, amelyre nincs szükségük – ahelyett, hogy az operációs rendszer, vagy a kernel megváltoztatásával kellene ezt elérni. A QNX esetében ezeket a modulokat egyszerűen nem futtatják, vagy nem is építik be a target gépre.

A lényeges, architekturális különbség valójában az, hogy a kernel és az eszközmeghajtók, ún. driver-ek memóriaterülete egymástól elszigetelt, ezért egy driver hibája nem okozhatja a teljes kernel sérülését.

Ennek köszönhetően a QNX nagyon kis helyet foglal, minimális konfigurációban általában egy floppy-n vagy USB stick-en is elfér, továbbá gyors, de funkcionalitásában teljes.
Érdekes jellemvonása továbbá, hogy szinte bármilyen adathordozóról képes elindulni, "bootolni".

A QNX Neutrino-t több platformra is portolták, így a mai beágyazott rendszereknél használt szinte összes CPU-val kompatibilis: x86 sorozat, MIPS, PowerPC, Hitachi/Renesas SH4, valamint a szoros kapcsolatban álló ARM – (ARM9, ARM11, Cortex), Atmel AT91SAM9xxxx, StrongARM és xScale processzorokon. Az Eclipse alapú fejlesztőrendszere automatikusan képes minden platformra lefordítani a forráskódú projektet.

Sajátosságai:
 Skálázhatóság – felépítéséből adódóan képes egyetlen kis adatgyűjtő chipen is futni, ugyanakkor alkalmas akár több monitoros grafikus megjelenítésű központi felügyeleti rendszert is üzemeltetni. Széles körű felhasználási területei a mobil eszközöktől a gyógyászati és ipari berendezéseken át az erőművi és hadiipari rendszerekig terjednek.
 Universal Process Model – az összes programfolyamat egymástól elszigetelt memóriaterületen fut. Ezzel jelentősen megnövekedhet a rendszer megbízhatósága, mivel egy folyamat sem véletlenül, sem direkt nem írhatja felül egy másik folyamat memóriáját.
 Szinkron üzenetváltó mechanizmus - Send, Receive, Reply. Ezt az egyedülálló üzenetváltó módszert nem találhatjuk meg más operációs rendszerekben. Kiválóan alkalmas szekvenciális működési elvű ipari berendezések üzemeltetésére, egymást követő folyamatok reteszelt ütemezésére. Az üzenetek és adatblokkok kizárólag a kernelen keresztül kerülnek továbbításra, az egyik folyamatszál (thread) környezetéből (context), a másik folyamat felé.
 Az Adaptive Partitioning egy speciális, APS ütemező segítségével dinamikusan képes a processzoridőt elvenni az épp várakozó folyamatoktól és átadni a több processzoridőt igénylő folyamatok számára. Így még erősen leterhelt rendszer esetén is minden folyamat számára biztosítani lehet a processzorhoz jutást.
 High Availability - HA (magas rendelkezésre állás) Az ilyen rendszereknek folyamatos és hibamentes működést, 99,999%-os rendelkezésre állást kell biztosítaniuk.
Az állásidő egy év folyamán összesen 5perc lehet.
Ezt megfelelő szoftveres támogatás hiányában általában speciális hardver eszközökkel érik el, pl. PCI Hot Plug architektúrával.
A QNX6 OS rendelkezik egy speciális, ún. HAM, High Availability Manager, valamint a HA client-side library elnevezésű szoftverkomponensekkel, amely lehetőséget ad arra, hogy automatikus és transzparens szoftver komponens leállító és újraindító mechanizmus-al lássunk el rendszereket.
A HA_* library speciális API-t biztosít a fejlesztők számára.

A magas megbízhatósági és hibatűrő képessége miatt magas szintű szabványminősítésekkel rendelkezik, mint pl.:POSIX PSE52 Realtime Controller 1003.13-2003Common Criteria ISO/IEC 15408 Evaluation Assurance Level (EAL) 4+  -- QNX Neutrino RTOS Secure Kernel --International Electrotechnical Commission (IEC) standard 61508 Safety Integrity Level 3 (SIL3). IEC 61508 (az alkalmazást külön is kell minősíttetni)Hadiipari szabvány minősítés: (DO-178B, MIL-STD 1553, QNX Neutrino RTOS: #0033857, cage code: 3AD83)

 Történelme 
 Kezdetek 
A QNX operációs rendszert Gordon Bell és Dan Dodge hozta létre, miután a Waterloo-i Egyetemen hallgatóként egy „Thoth” nevű projekt-en is dolgoztak. Ez egyike volt a legelső üzenetváltó (message passing) típusú operációs rendszereknek. Ugyanezt a működési elvet alkalmazták a későbbi, UNIX rendszerhez hasonló felülettel rendelkező QNX-ben is. Az operációs rendszer prototípusát általuk összeszerelt Motorola 6809-es és Intel 8088-as gépekeken futtatták először.

Az egyetem elvégzése után Bell és Dodge a Bell Northern Research (BNR)-nél kezdtek dolgozni programozóként. A BNR-nél minden szabad pillanatot felhasználtak saját operációs rendszerük fejlesztésére.

Az 1980-as évek elején az IBM útjára indította az első 8088-as processzorral működő IBM PC-jét. Bell és Dodge fél évvel később egy PC-s magazinban ismertették az új gépre írt operációs rendszerüket, amely akkor a QUNIX („Quick UNIX”) nevet kapta. Quantum Software Systems Limited (QSSL) néven céget jegyeztek be, az első QNX verziót pedig 1981-ben jelentették meg.

A QUNIX név csak 1-2 évig maradhatott meg, ugyanis a UNIX márkanév tulajdonos AT&T társaság nemtetszését jelezte, és azonnali névcserét követelt. Az angolul ugyanolyan kiejtésű (kb. kju-nix), ám nevében „Unix”-ot nem tartalmazó új név a QNX lett.

Az operációs rendszer korai béta verziói multi-tasking nélküliek voltak. Egy 64K memóriával, egyetlen 180K-s floppy-val rendelkező IBM PC-n futottak. Néhány hónappal később az 1.0–s verziót már multitaszkos támogatással adták ki.

A 64KB memória elégségesnek bizonyult az OS, valamint egy parancsértelmező futtatásához, a compiler működését is biztosította, valamint további háttérmunka elvégzésére is lehetőséget adott (például file kinyomtatására).

A kis lélekszámú lelkes felhasználói tábor együtt dolgozott a fejlesztőkkel, folyamatosan tájékoztatva őket az operációs rendszerrel kapcsolatban felmerült problémákról és további ötletekkel járulva hozzá az operációs rendszer fejlesztéséhez.

A legelső fejlesztők Terry Laughlin, Bill Flowers, Dan Hildebrand és Luc Bazinet voltak. Dan Hildebrand nevéhez köthető az egyetlen hajlékonylemezre elkészített QNX demo, mely a mai napig letölthető a QNX weboldaláról. A floppy mindent tartalmaz, ami egy modemen keresztüli internetes szörfözéshez kell grafikus felületen.

Ahogyan az IBM PC hardver piaci ára egyre csökkent, a felhasználóknak lehetőségük nyílt 256KB-ra, majd 512KB-ra bővíteni, míg végül az „elképesztően nagy” 640KB-s memóriaméret is elérhetővé vált. A QNX működéséhez ez már túl soknak számított, ezért a bőséges memóriaterület egyik tipikus felhasználási módja az volt, hogy a rendszerhez egy 256KB ramdiszk-ként csatoltan a compiler működését gyorsították fel vele, másként ez a sok memóriaterület egyébként feladat nélkül maradt volna.

Az első 360KB-os hajlékonylemezes meghajtók megjelenésekor minden komoly QNX fejlesztőnek kettő darabra volt szüksége. Az első tartalmazta az operációs rendszert és a kiegészítő állományokat, a második a programozási munkához szükséges forrásfájlokat.

A QNX számára a következő nagy lépés az IBM AT megjelenése volt. Néhány egyszerű módosítás után a legszembetűnőbb változást a jelentős sebességnövekedés jelentette – ez akkor valóban komolynak számított a 6 MHz-es 80286-os processzoron. Hat hetes fejlesztői munka után a processzor védett módú működtetése is megvalósult.

Nagyjából a 286-os processzorral egy időben jelent meg a QNX hálózati támogatása. A fejlesztők az Arcnetet választották a robusztus kivitel, a valós idejű tulajdonság, valamint az elérhető piaci ár miatt. Mivel nem volt egyezményes szabvány ezekre a kártyákra, a QNX megegyezett a Corman Technologies nevű céggel egy egyedi felépítésű hálózati kártya megépítésében, melyhez a szoftveres támogatást az operációs rendszer részeként biztosította. Állítólag néhány legelső verziójú kártya a mai napig működik.

Az 1980-as évek közepén Ottawában megrendezték az első QNX-konferenciát, amelyen kevesebb, mint 100 fő volt jelen, bár lelkesedésük határtalan volt. A kis résztvevőszámnak köszönhetően a hangulat családiassá vált, a résztvevők ide-oda szaladgálhattak az előadások, a büfé és a vetítőszobák között.

 Növekedés és átalakulás 

A 386-os processzor megjelenésével a QNX is fejlődött tovább. A QSSL eddigre már nagyjából 50 alkalmazottra bővült. A felújított hálózati rendszer széles hardvertámogatást biztosított, az OS hibatűrő rendszerré vált, a magas szinten optimalizált fájlrendszer pedig meg lett szabadítva néhány, a QNX2-ből ismert korlátozástól, „szűk keresztmetszettől” (lassú floppy-kezelés, a DOS fájlrendszer lomha működése, hiányzó merevlemez LBA kezelés, támogatás az újabb hardvereszközökhöz, stb.)

A QNX 4.2 már támogatta a 32 bites programokat, és már nem tartalmazott többé 16 bites komponenseket. A cég eközben a kétszemélyes vállalkozásból 150 fős vállalattá nőtte ki magát. Egy újabb névcserére is szükség volt, az új név QNX Software Systems Limited lett, ugyanis a „Quantum” megnevezés más cégek nevében is szerepelt.

A nagy QNX kis utódjaként megjelent a QNX/Neutrino, mely a beépített, egykártyás, beágyazott rendszerek piacát célozta meg. A QSSL nagyjából ebben az időben tervbe vette a QNX 4.x kernel későbbi cseréjét QNX/Neutrino kernelre. A Microsoft ebben az időszakban mutatta be a vállalati rendszerekre célzott Windows NT-t.

 Napjaink rendszerei felé 

A 4.25-ös verzió lett az utolsó QNX 4 sorozatú OS. A QSSL ezután újabb operációs rendszert jelentett be: QNX RTP – Realtime Platform (másik megnevezés szerint QNX6).
Ez már Neutrino kernelt alkalmazott, SMP (többprocesszoros) rendszereket támogatott, megfelelt a legutóbbi a többszálas rendszereket definiáló POSIX szabványnak.
A bejelentés utáni, 6.0.0 verzió még csak az x86 processzorokat támogatta.

A 2007 augusztusában megjelent 6.3.3 verziótól a hardver architektúra az x86-on kívül már PowerPC (IBM, Motorola), MIPS, StrongARM (Intel), vagy SH4 (Hitachi) is lehet.

A jelenlegi QNX Neutrino 6.4.x verzió biztonsági fokozatú kernellel rendelkezik (QNX Neutrino RTOS Secure Kernel), a korábbi Photon MicroGUI és Advanced Graphics elnevezésű technológiákon kívül az Adobe Flash technológiát is támogatja az alkalmazások grafikus felületeinek létrehozásához.
A technológia lényege, hogy a flash fejlesztőeszközzel létrehozott .swf fájlhoz a QNX egy flash C/C++ library-t kapcsol, a Flash ActionScript-ek pedig ezeken a C/C++ forráskódban definiált változókon keresztül valósítanak meg adatkapcsolatot. Ezután a QNX runtime környezetbe feltöltött projektet a QNX flash player futtatja. Részletes leírás itt.

Korábban a grafikus felületet (GUI) is programozóknak kellett létrehozniuk, de ezzel az új technológiával a teljes GUI felület elkészítését a grafikusokra bízhatjuk.Több mint 50 féle típusú gépjármű fedélzeti rendszerében ma már ezt a QNX CAR elnevezésű, QNX és Flash technológiát találhatjuk meg.

Néhány gyártó: BMW, Ford, Daimler, Delphi, General Motors, Mercedes, Volkswagen, Toyota.'''

2009-ben a gépjárművek fedélzeti rendszereiben alkalmazott technológiai megoldás elnyerte az ADOBE MAX AWARD díjat.

Versenytársak 
Vetélytársak a beágyazott rendszerek piacáról: Windows CE, OS-9.

Jegyzetek

Források 
 A gyártó honlapja
 Magyar nyelvű QNX oldalak, műszaki szaktanácsadás, Magyar nyelven
 Magyar nyelvű QNX fórum
 OpenQNX, ingyenes műszaki szaktanácsadás, angol nyelven
 Nyílt forrású alkalmazások, letöltések
 A QNX Neutrino mikrokernel forráskódjának letöltése, az Open Development project

Unix