A more accurate statement would be that the Linux kernel is a monolithic kernel, which, unlike the QNX microkernel, does not provide MMU protection of core OS processes. This also makes it much easier to write and debug QNX device drivers.
You can debate the definition of "monolithic" and talk about "kernel modules" all day long, but the fact is that the Linux kernel all runs in the same memory space, so it is a less robust design than a microkernel. (Note that I said robust _design_ not implementation. It is possible to write a crappy microkernel).
If you're going to program for QNX, learn how to use its interprocess communication services; don't program it like it's a UNIX variant
Actually, QNX provides a POSIX resource manager framework that makes the native IPC pretty much transparent
There's no paging. Everything has to fit in memory
This is incorrect. Earlier QNX OS's (e.g. QNX4 and QNX2) did not support paging. QNX RTP (aka QNX Neutrino) does support paging. It simply must be enabled by your application.
Some sample code for a QNX-based distributed batch queuing system (suitable for raytracing, audio compression, etc) can be found here: http://www.parse.com/free/dq.html
Yes, I have used QNX at work for several years. It is the most distributed OS that I know of for general purpose use. My experience is mostly with QNX4, but the new QNX Realtime Platform (aka Neutrino 2.0, aka QNX6)promises to add some new twists. Some cool features of QNX4:
+ All network filesystems available with//node#/ syntax with no extra configuration required. + So, it is quite acceptible to echo "Hello World" >//node#/dev/con1 (or some other device) + Send/Receive/Reply interprocess messaging is network transparent + I have run computers with 4 network cards with no problem. QNX load balances over all available links. It will also intelligently bridge packets between LANS. + Load balances between different media too (Ethernet, Token ring, FDDI, etc) + Memory protected microkernel architecture! 1.95us context switch on a P133
I recommend checking out http://www.qnx.com/products/networking/ No, I do not work for QNX, but I think the world would be a better place if more people used it:-) The new QNX RTP will be open source accept for the mikrokernel itself (12k code) I believe.
Gee...an OS that supports native and cross-platform development, runs on different HW architectures, runs Tao's JVM, can fit a full OS/GUI on a 1.44 floppy, runs linux apps, has a 12k kernel, and can run on a 386.
Sounds a lot like QNX! I guess Amiga dumped them because unlike Amiga, the QNX OS really exists! BTW QNX is also a realtime OS (as in control-your-antilock-brakes-realtime)
For those of you who missed it, QNX Realtime OS will be available for free (as in free beer) download in the next month or so at http://get.qnx.com
FWIW I routinely install 15 Mb QNX installations for industrial controllers.
A more accurate statement would be that the Linux kernel is a monolithic kernel, which, unlike the QNX microkernel, does not provide MMU protection of core OS processes. This also makes it much easier to write and debug QNX device drivers.
You can debate the definition of "monolithic" and talk about "kernel modules" all day long, but the fact is that the Linux kernel all runs in the same memory space, so it is a less robust design than a microkernel. (Note that I said robust _design_ not implementation. It is possible to write a crappy microkernel).
FYI a Linux based install *does* exist but was not deemed ready for release. QNX is "driven by market demand", so demand away...
If you're going to program for QNX, learn how to use its interprocess communication services; don't program it like it's a UNIX variant
Actually, QNX provides a POSIX resource manager framework that makes the native IPC pretty much transparent
There's no paging. Everything has to fit in memory
This is incorrect. Earlier QNX OS's (e.g. QNX4 and QNX2) did not support paging. QNX RTP (aka QNX Neutrino) does support paging. It simply must be enabled by your application.
Some sample code for a QNX-based distributed batch queuing system (suitable for raytracing, audio compression, etc) can be found here:
http://www.parse.com/free/dq.html
Thanks Rob!
Yes, I have used QNX at work for several years. It is the most distributed OS that I know of for general purpose use. My experience is mostly with QNX4, but the new QNX Realtime Platform (aka Neutrino 2.0, aka QNX6)promises to add some new twists. Some cool features of QNX4:
//node#/ syntax with no extra configuration required. //node#/dev/con1 (or some other device)
:-)
+ All network filesystems available with
+ So, it is quite acceptible to echo "Hello World" >
+ Send/Receive/Reply interprocess messaging is network transparent
+ I have run computers with 4 network cards with no problem. QNX load balances over all available links. It will also intelligently bridge packets between LANS.
+ Load balances between different media too (Ethernet, Token ring, FDDI, etc)
+ Memory protected microkernel architecture! 1.95us context switch on a P133
I recommend checking out http://www.qnx.com/products/networking/
No, I do not work for QNX, but I think the world would be a better place if more people used it
The new QNX RTP will be open source accept for the mikrokernel itself (12k code) I believe.
Gee...an OS that supports native and cross-platform development, runs on different HW architectures, runs Tao's JVM, can fit a full OS/GUI on a 1.44 floppy, runs linux apps, has a 12k kernel, and can run on a 386.
Sounds a lot like QNX! I guess Amiga dumped them because unlike Amiga, the QNX OS really exists! BTW QNX is also a realtime OS (as in control-your-antilock-brakes-realtime)
For those of you who missed it, QNX Realtime OS will be available for free (as in free beer) download in the next month or so at http://get.qnx.com
FWIW I routinely install 15 Mb QNX installations for industrial controllers.