QNX verze 2


QNX je NEPOSIXovy Unixovy mikrokernelovy distribuovany realtimovy OS pro i86 a i286+. Tato veta popisuje QNX se vsemi jeho dulezitymi vlastnostmi a zajimavostmi. Predem Vas musim upozornit, ze verze 2 je dnes "obsolete" (1992) , misto ni se vyviji QNX 4.x. Presto si ale QNX 2.x muzete stale koupit. Spolu se systemem je take prekladac, utilitky a paperware. Manualy me dost prekvapily, protoze se znacne lisi od tech dnesnich ktere nic nereknou. Napriklad v knize "Zakladne informacie" naleznete popis instalace (MAUALNI i za pouziti /cmds/install), IPC, sitovani, common problems, modemy, DETAILNI popis filesystemu a dalsi. Kez by byl takovyto manual i k SCOcku ;-) Vlastni OS je na jedne diskete, utilitky a development tools na dalsich dvou.

Instalace

je easy, zvladne ji i zacatecnik. Muzete bud' instalovat manualne, nebo za pomoci /cmds/install. Co se mi moc libi je ze install vypisuje co prave spousti vcetne vsech parametru. Po instalaci nabootuje QNX a muzete se prilogovat do systemu. A uz v tomto momente vznikaji problemy; diky NEPOSIXcnosti (Ugh) systemu chvili trva, nez si zvyknete ze neni ps(1), ale tsk, misto 'ls -l' je files atd. Dalsi vec, ktera se mi nelibi jsou disky. Podobne jako DOS, OS/2 ci Windoze neumi QNX mountovat disky do stromu, ale oznacuje si je cisly. Nastesti si je muzete (temer) libovolne mountovat, neni zde zadne omezeni ze /dev/fd0 = A:, /dev/hda1 = C:, atd. Napriklad prikazem mount disk 2 /drivers/disk.atc pa=qnx si namountujete hda3 na 2:/. Jinak je temer vse v normalu.

QNX je mikrokernelovy

Mnoho lidi si mysli ze mikrokernelovy znamena maly. To ale nemusi byt pravda. Monolyticky kernel (Linux,BSD,...) ma "v sobe" zabudovane vsechny drivery, filesystemy, protokoly a ty bezi v kernel-modu. Pokud user-level aplikace chce napriklad otevrit soubor, provede syscall "open". Tim se prepne do kernel-modu a soubor se otevre. U mikrokernelovych systemu je tomu jinak. Kernel umi jenom scheduling a interprocess communication. Pokud nejaky proces chce otevrit soubor, posle zpravu "open" procesu "fs", ten otevre soubor a odpovi volajicimu procesu. Stejne probihaji vsechny ostatni operace. V QNXu je nekolik dulezitych procesu: Neni samozrejme vyjimkou, ze mezi sebou komunikuji i tyto procesy. Napriklad "task" muze chtit po "net" aby poslal message procesu bezicimu na uplne jinem stroji.

QNX je distribuovany

QNXy mezi sebou komunikuji po siti a to siti ARCnetove (jenom, zadny ethernet). U ARCnetu se na chvili zastavim, protoze se jiz temer nepouziva a neni tudiz prilis znamy. Je velice podobny ethernetu, pomalejsi, ale mene choulostivy na chyby kabelaze. Existuje nekolik variant ARCnetu - od 2.5Mbps az do 100Mbps. Ja mam jenom ty 2.5Mbps sitovky. Skoda. Na propojeni ARCnetove site se pouziva tenky koaxial ci UTP zapojeny bud' do sbernice (jako eth.) nebo do hvezdy. ARCnet neni zdaleka tolik choulostivy na kabelaz jako ethernet. Mel by se terminovat 93 ohmovymi odpory. Doma mam sdilenou kabelaz pro ethernet i arcnet (samozrejme ze oboji nebezi soucastne!). Zapojeny mam jenom jeden terminator 50 ohm, coz je u kratkeho kabelu temer jako 2x 100 ohmovy terminator. Sit' funguje 100%. Dokonce nevadilo ani kdyz jsem pridal dalsi terminator na "druhou" stranu koaxialu. Dle dokumentace v Linuxu chodi nekterym lidem ARCnet i bez terminatoru :-)) Adresace neni fixni jako u ethernetu (48bit), ale nastavuje se (jumpery, v setupu ci pajeckou) jako 8bit cislo, tzn sit muze mit maximalne 0x100 stanic (-2 rezervovane).

Zpet ale ke QNXu. Nekolik pocitacu spojenych siti muzete "spojit" dohromady, takze se budou tvarit temer jako jeden stroj. Pro programatora to znamena kompletni IPC pres sit, pro uzivatele moznost spoustet a pouzivat programy na kteremkoliv pocitaci na siti (pokud k tomu ma prava). Uvedu par prikladu:

$ ls [4]3:/                  - vypise obsah adresare 3:/ na stroji '4'
$ [4] ls 3:/                 - spusti na stroji '4' prikaz "ls 3:/"
$ [4] ls [1]3:/ > [2]1:/out  - Ze stroje 4 vypise obsah adresare 3:/ na
                               pocitaci '1' a vystup presmeruje do souboru
                               1:/out na pocitaci '2'.

Na vsech strojich vidite procesy sve i ostatnich QNXu. Tento problem je resen pres "virtualni" PIDy, takze na kazdem stroji muze mit jeden proces jiny PID. Pri dorucovani zprav/semaforu/signalu je 100% zarucene, ze dojdou ve stejnem poradi jako byly vyslany. Pokud nejaky stroj vymrzne, ci nekdo prekopne kabelaz, automaticky se vyradi dany stroj z provozu a zrusi se vsechny odkazy na nej. Pokud prave probiha nejaka komunikace je komunikujicimu procesu vracena chyba (v errno, ale nezkousel jsem).

QNX samozrejme umi bootovat pres sit'. O to se stara program netboot a musim uznat ze diskless stanice bezi velice svizne. Cely system muzete nainstalovat jen na jeden pocitac (bootserver) a ostatni stanice z nej bootovat. Kazda si z /config/ bere zvlastni sys.init (sys.init.{n}, kde n je cislo uzlu podle ARCnetu).

Realtimovy OS pro x86/286+

Co znamena slovo realtimovy doufam nemusim vysvetlovat ;) Existuji dve verze QNXu; jedna pro XTcka a druha bezici v protected mode pro 286ky. Ta XTckova verze nema ochranu pameti (samozrejme) a prepina mezi procesy pomoci interruptu a syscallu. O poznani lepe je 286kova verze, kde ochrana pameti je, scheduling je ale samozrejme softwarovy. Skoda ze Intel[R][TM][C] neimplementoval nejake zakladni veci z schedulingu do prepinani procesu na 386+ (TSS).

Zaver?

Nevim co si mam o QNX 2 myslet. Neustale me prekvapuje. Jednou mile, potom jsem sokovan. Ale pres to jde o *VELMI* zajimavy system. Dalsi info naleznete na www.qnx.com, ovsem 99% je o QNX 4. Tam si muzete take stahnout demodisketu s QNXem. S tou disketou se pripojite na sit (ppp,eth,tokenring,arcnet) a brouzdate (v GUI) ;-). Na jednu disketu se jim toho veslo docela dost, stoji opravdu za vyzkouseni.

PS: Nemate nekdo zbytecne ARCnety?


Copyright (c) 1999 Martin Hinner, All rights reserved.