Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!sun-barr!decwrl!nsc!icldata!altos86!dtynan From: michaelw@microsoft.UUCP (Michael Winser) Newsgroups: comp.unix Subject: Re: QNX Keywords: QNX, real time unix Message-ID: <1096@altos86.UUCP> Date: 11 May 89 18:40:20 GMT References: <1046@altos86.UUCP> Sender: dtynan@altos86.UUCP Reply-To: michaelw@microsoft.UUCP (Michael Winser) Organization: Microsoft Corp., Redmond WA Lines: 94 Approved: dtynan@zorba.Tynan.COM In article <1046@altos86.UUCP> "M.D. Templeton GEC (Alvey" writes: >I was asked this morning by one of our >local bigwigs about my opinion of UNIX for use in a particular >application. This application{needs speed, graphics and needs to be flyable. >I felt that from what little I know of QNX it could be suitable. >I do actually have an old version (I think it's version 1) but no >documentation. > >Can anyone tell me of their experiences with QNX, and does anyone have >some old documentation that might match my old version. QNX is a very nice unix-like os that came out of the University of Waterloo. The kernel is split up into 4 tasks: Task Manager Device Manager File Manager Network Manager All communication is through inter-process message sends. The standard send receive reply trio is used. This is not quite true. There are also exceptions (unix like signals) and ports. Ports can be signaled (not the unix signal) or read in a non blocking manner (they can also act as semaphores with a blocking read). They are used primarily for getting interrupts into the system. QNX also supports shared libraries. In fact almost all of the standard 'C' library is in a shared library. This means that a simple programme's executable can be very small (pwd is less than 64 bytes I believe). You can add your own shared libraries quite easily (they are accessed via software interrupts). The filesystem is much better than DOS but not quite as nice as unix. It supports multiple users and (I think) locking. The network support is great. It is trivial to "mount" another machine's drive (or it's entire filesystem) as a "drive" on your own machine. You can load and run across the net (including booting). [2] [3]3:/usr/bin/ls [4]1:/ > [5]/tmp/ls.out Will run /usr/bin/ls from node 3's drive 3 on node 2. Ls will look at node 4, drive 1 and output to node 5 on /tmp (whereever node 5 finds /tmp). I highly recommend the protected mode version of QNX. It is much more secure and can use all 16Mbytes of address space. QNX's biggest problems are its compiler and other software. The compiler (when I last used it) did not support large memory models. I and D space is limited to 64k each. There is however a hack in the compiler allowing the programmer to access other segments (which can be allocated from the os). The -} token (no typo) references of the es register instead of ds. We used this (in Toronto) to build a fairly sophisticated object oriented programming environment. The data segment was for locals and "oop system" stuff and our "send" function would set up the es to be the object's instance space. The other big problem is software. There is precious little canned software for the machine. You have to write your own drivers for almost any new hardware. Fortunately this is quite easy. Interrupts are translated into signals to a port and your driver just hangs around reading signals from a port and doing all the work in a scheduled and orderly manner. I had not trouble writing drivers for a speech board and a telephony board last summer. Overall, QNX is a nice operating system for standalone applications. If your code size is going to be huge and does not lend itself to being spread across tasks and shared libraries then you might have problems. QNX is sold by Quantum. You can reach them at: Quantum Software Systems Ltd Kanata South Business Park 175 Terrence Matthews Crescent Kanata, Ontario Canada K2M 1W8 Their technical support is generally pretty good and quick too! Michael None of these opinions are those of Microsoft Inc. -- /\ no guts michael winser \/ no glory microsoft corp. (206) 882-8080, michaelw@microsoft.uucp