QNX

Unix-szerű operációs rendszer

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.

QNX

FejlesztőBlackBerry
Operációs rendszerUnix-típusú, valós idejű
Kategóriaoperációs rendszer
LicencNyílt forráskód nem-kereskedelmi felhasználáshoz, fizetős licenc kereskedelmi alkalmazásokhoz
A QNX weboldala

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[1] 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-2003
Common 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épeken 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