QNX

Michael Winser michaelw at microsoft.UUCP
Fri May 12 04:40:20 AEST 1989


In article <1046 at altos86.UUCP> "M.D. Templeton GEC (Alvey" <uunet!information-systems.east-anglia.ac.uk!mdt> 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 at microsoft.uucp



More information about the Comp.unix mailing list