In today’s entry in our Alternative OS Contest, James Ingraham takes a close look at QNX, the operating system based on the Neutrino microkernel. He concludes that “While you can probably find solutions for just about all of your desktop computing needs using the QNX RTOS, that is not QNX’s strong suit. Its focus is real-time, embedded, and mission critical applications.” Read on for the whole article. What is QNX? That seems like an easy enough question, but the answer is fairly complicated. QNX is a company, a microkernel, a real-time operating system, and a development platform. To stay consistent, here’s the QNX nomenclature this article will follow, though it is not official:
What’s an RTOS?
Again, a simple question without a particularly good answer. The abbreviation “RTOS” stands for real-time operating system… but unfortunately no one can agree on what “real-time” means, or even “operating system,” for that matter. The raging debate about “what is real-time?” doesn’t particularly impact a review of any given OS, but I’ll outline a few points about people generally mean by it.
- Predictability. The time to complete a task must be bounded.
- Priorities. There has to be a way to interrupt a lower priority task to make sure that high priority tasks aren’t starved.
- Scalability. Usually, when you think of scalability in computing it starts small and goes upward toward massive buildings chock full of IT people. In the case of RTOSes, scalability means stripping down the OS to the bare minimum required. If the RTOS is controlling a jet fighter, you don’t need or want MSN Messenger, Real Player, or Solitaire. Some RTOSes need only a few kilobytes of storage and RAM to work.
- Robustness. There is no known way to prevent an electronic system from crashing. However, there are methods for both minimizing the chance of crashes and for graceful recovery from crashes.
The QNX Neutrino RTOS
QSS’s crown jewel is the QNX Neutrino message passing microkernel. What’s a message passing microkernel? The executive summary is that it is a specific solution to the problems of creating a Real-time Operating System. Skipping the technical details on how this works, for now think of QNX as “just another OS.” In fact, to users and developers, QNX looks like any other POSIX-compliant system, e.g. Linux or Solaris. The underlying architecture may be vastly different, but type ls at a prompt and you’ll see the familiar /usr, /bin, /home, and /root directories.
Supported architectures are ARM, MIPS, PowerPC, SH-4, StrongARM, XScale™, and x86. Currently, there is no 64-bit support. The Neutrino is a true multi-threaded, multi-tasking system, with several different modes of multi-processing. QSS refers to these as Symmetric, Asymmetric, and Bounded Multi-Processing. (SMP, AMP, and BMP, respectively). Again ignoring the technical details of these terms, the different modes allow developers to fine-tune the behavior of their applications for real-time tasks. BMP, for example, forces tasks to run on a specific processor.
File systems are not part of the microkernel, making it easy to load and unload as needed. QNX defaults to the qnx4 file system, a proprietary fs similar to other POSIX file systems. It includes support for images for use in ROM, NAND flash, and NOR flash, with Execute-in-place capabilities. There is also a RAM-disk utility. Recently, QNX released ETFS, or the Embedded Transactional File System. Essentially, this uses atomic transactions to ensure there are no file corruptions as a result of power-outages or a crashing program. ext2, DOS / FAT12, FAT16, FAT32 , ISO9660, and Joliet are also supported. Notably missing are ext3, JFS, XFS, ZFS, and ReiserFS. Of course, NTFS is not supported. Sharing with other systems is still fairly easy; both CIFS (client) and NFS (client and server) work fine. Briefly, QNX used a Package File System that was more of a hassle than a help; support remains but it is no longer a mainstream solution.
QNX has IPv4 and IPv6, plus its own proprietary network protocol. Message passing extends to the QNX network seamlessly, so that distributed computing is transparent. As a simple example, a drive on a remote machine could be mounted locally, whether or not the remote machine has it mounted. Since most advanced users think nothing of remote-mounting a drive, a more impressive example might be transparently accessing a remote serial port.
USB support is okay, but since most companies do not offer QNX drivers for their devices you are mostly limited to generic devices such as keyboards, mice, and storage devices. USB flash storage works like any other drive. There are a handful of printers that work on USB. Don’t get your hopes up for much else.
Video card support is similarly essentially limited to nVidia, ATI, or Matrox. Even then, QNX has trouble keeping up with the fast pace of the graphics market.
Hardware support in general is a weakness when it comes to “standard” devices. The emphasis is on embedded hardware, such as Board Support Packages (BSPs) to allow QNX to boot on systems that don’t have a BIOS. Writing or porting device drivers is fairly straightforward, provided with documentation for a given device. QNX has several Device Driver Kits (DDKs) to ease development, as well as POSIX conventions for direct access of hardware through port I/O and dual-port memory.
QNX Photon microGUI
QNX has its own window manager / GUI called Photon. There is no true “desktop.” The Shelf is something like a Dock or Quick Launch, which is of course configurable. The Shelf also includes a Launch button that behaves just like the Windows Start Menu. In fact, the Windows key opens the Launch menu.
Photon has its own API, which means that the vast library of X Windows applications are not supported. However, there is a port of XFree86, which can be run instead of Photon. In addition, an application called XPhoton allows most applications to run in Photon by fooling them into thinking they are running in X. Still, QSS does not directly support GTK+, Qt, or Tcl/Tk. Ports of these toolkits are unsupported and very far behind the latest revisions.
QNX has its own browser, called Voyager 2, which uses Mozilla’s rendering engine. Mozilla itself and Firefox are both available, though users are at the mercy of QSS for updates. There is a browser widget, so embedding an HTML renderer into an application is trivially easy. Alas, while QNX has a nice set of native widgets, there is not nearly as broad a range as there are for more “standard” systems.
One advantage Photon has as a result of being a standard component of the OS is that virtually everything is configurable in GUI form. Yes, you can edit text files like you would on Linux, but the GUI configuration is quite nice. It is possible to use the system without ever opening a shell.
Fast, lightweight, configurable, and reasonably pretty, Photon is an excellent GUI for embedded applications. It does not have the power and flexibility of say KDE on X, but it can do an awful lot with a lot less resources. My photon directory is about 37MB… and 15MB of that is fonts. This doesn’t count Mozilla.
QNX Momentics
QSS is a founding member of the Eclipse consortium, and is almost single handedly responsible for the C Development Tools (CDT). Eclipse is therefore the cornerstone of the Momentics development platform. This is a double edged sword; on the one hand having full support for Eclipse is good. On the other hand, there are virtually no other options. However, it appears that there will be virtually no options besides Eclipse in the entire RTOS market fairly soon. Such is QNX’s success with Eclipse that almost all other major RTOS vendors have switched to Eclipse-based tools. This includes arch-rival and RTOS market leader Wind River, as well as highly-regarded tool maker Green Hills.
In addition to Eclipse, Momentics includes Application Builder, a GUI form designer for Photon applications. While the Photon API is all C, Application Builder is a RAD tool in the vein of Microsoft’s Visual Basic or Borland’s Delphi. In fact, Application Builder was around well before Microsoft or Borland had form designers for C/C++. The separation of the form designer from the IDE is quite normal for Eclipse developers, but might come as a shock for those used to Visual Studio or Borland’s tools.
Language and compiler support is an issue. Most real-time embedded systems are programmed in C. Here, QNX is covered by the GCC, plus an extensive set of libraries. The GCC also provides C++ support, and QNX has a full C++ library (including the STL) and a scaled down Embedded C++ library, both supplied by Dinkum. Intel also provides a C/C++ compiler for QNX on x86, which is an additional purchase beyond standard Momentics. Things go downhill from there. Ada (invented for and still widely used for the mission critical applications QNX and other RTOSes target) is available, but not from QSS. Java is supported, but since it relied on IBM’s WebSphere it became horribly out of date. They have since switched to PERC from Aonix. (Unfortunately, I can’t give you any more information about PERC, since I do not have access to it.) GCJ has not been ported, nor have many of the other GCC tools. The bottom line is that the bulk of any real applications for QNX will have to be done in C/C++.
QNX is not open source, but does offer the source code for many components. They have a number of what they call Technology Development Kits (TDKs) to cover multimedia, embedded 3D graphics (using the OpenGL ES standard), networking, high availability computing, critical process monitoring, and more.
QNX is unique among RTOSes in that it supports self-hosted development. In other words, you can compile a program on the QNX RTOS. For programmers not used to the embedded world, it will come as a shock that no other RTOS can compile so much as a “Hello, world!” program, in any language. However, consider where the RTOSes are intended to run. Is there any reason to compile a program on your TiVo, PDA, cell phone, or car entertainment system? All other commercial RTOSes rely on cross-development. Most vendors’ cross-development systems require Windows, though a few support other platforms. In addition to self-hosted development, Momentics also supports cross-development from Windows, Linux, and Solaris. The nice thing about self-hosted development is that it eases the code-test-debug cycle. After the development cycle, a final product based on QNX (e.g. a car navigation system) would not include the development tools.
Documentation and Support
If you are used to Linux, the documentation for QNX is absolutely delightful. Extensive, well-written, and virtually error-free, the docs (available as HTML or PDF) cover everything from basic systems administration and using Photon to the deep inner-workings of the OS and how to develop applications from top to bottom. However, there are virtually no independent books on QNX. The two most famous, both by Robert Krten, are quite good. There are also a handful of on-line communities for QNX. However, if you find yourself stuck, the massive on- and off- line community surrounding Windows and Linux is not there for QNX.
QSS does offer web, e-mail, and phone based support, at varying levels of service and price. The people that answer the phone are not call center plebeians reading from a script. They work with QNX daily and can answer many questions off-hand. They also have access to the QNX developers, so that even very sophisticated questions can be answered. Sending code snippets back and forth is common. Granted, this support is not cheap, but it is good. For home projects, it’s not worth it. For mission critical commercial applications, it’s nice to know that solid people are there to help.
Getting QNX
RTOS vendors generally do not have an “Add to Cart” button on their web pages. It can take weeks to get a quote from a vendor, with lots of back-and-forth with a sales rep about specific requirements and features. I am not at liberty to divulge specific pricing for various RTOS development licenses, but you should expect a number in the tens of thousands of US dollars. QNX Momentics is among the least expensive for initial setup, and can come in under ten thousand depending on requirements. The trade-off is that there is also a runtime royalty, which can tip the balance depending on volume. The cost runtime licenses for QNX can vary greatly, especially since price will go down as volume goes up. The industry as a whole ranges from royalty-free to hundreds of dollars per unit.
QNX does offer a 30-day trial of Momentics, which is enough time to check it out as a desktop OS. It would be difficult to learn enough to develop a non-trivial real-time application in 30 days. At one time QSS offered a version that was free for non-commercial use; this has since been withdrawn.
There is a famous demonstration of QNX 4.x booting the OS and Photon microGUI from a single floppy disk, then launching a browser and using an Ethernet or SLIP connection to access the Internet. This is not possible with the QNX Neutrino RTOS. The demo used older versions of the OS, the GUI, and the Voyager browser. This is worth mentioning only because people still talk about how impressive this demo was whenever QNX is mentioned, but it is no longer available, nor is it particularly related to the modern QNX RTOS.
Conclusions
While you can probably find solutions for just about all of your desktop computing needs using the QNX RTOS, that is not QNX’s strong suit. Its focus is real-time, embedded, and mission critical applications. In these realms, QNX has numerous features that stand out. Recently, the in-car telematics market has been a primary driver, leading to QSS’s acquisition by Harman, of Harman-Kardon audio fame. It may not have the market share of VxWorks, but QNX manages to maintain a niche for itself with continually innovative features and a broad array of options.
About the author:
James Ingraham is the Software Development Team Leader for gantry robot manufacturer Sage Automation, Inc., and has been a QNX user for the last decade or so.
If you would like to see your thoughts or experiences with technology published, please consider writing an article for OSNews.
After using ICON’s at highschool for 4 years you couldnt force me back onto QNX… It was simply HORRIBLE! Yes I’m sure they have ‘fixed’ things in the last 13 years but QNX for a multiuser primary OS was just painfull!
After using ICON’s at highschool for 4 years you couldnt force me back onto QNX… It was simply HORRIBLE!
AAAIIIIEEEEE ! Thank you for dredging up repressed memories for me. Those things were simply awful. I remember that we could bring down the entire network for kicks, by simply powering on two systems at the same time.
I don’t think we had very many classes where the network remained stable and operational the entire time, it was always going down whether intentionally or not. They really were buggers of a system to have to use.
Dude, the ICONs ran a version of QNX that was “current” before QNX 2 was released on PCs waaaaaaay back when.
The hardware didn’t even have memory protection back then, that’s why it sucked for multi-user. And yes, it was still better than other products at the time, at least for schools.
QNX 6 is an entirely different beast. In fact, QNX 2 and QNX 4 were also completely different from the version than ran on the ICONs.
– chrish @ QNX
At our highschool, the choice was between Commodore PETs which could only run Basic and use floppies only, and the ICONs, which could run C, Interpreted Pascal, Logo, UNIX shell scripts, and a few other languages, and provided a shared Unix-like home directory structure on a central hard drive, and provided some cool animation and drawing packages, there was no contest at our high school. The ICONs were favoured by a large margin:
http://en.wikipedia.org/wiki/Unisys_ICON
Now the machines did have their problems. The first of which was that it was possible for some of us (4 people, to my knowledge) to gain root access through a few silly security holes. Fortunately it was an unwritten code at the time that no root user would abuse his power to cheat on assignments, so the teacher turned a blind eye to it (possibly since OSes like Linux didn’t exist at the time to provide eager future programmers a way to learn). But this exploring of how QNX ticked occassionally lead to problems. For instance one annoying thing on QNX was that it was possible to create a file that was non-deletable, non-readable, and non-writable by everyone including root. Basically dead disk space that could only be removed by reformatting.
Ugh … Dead disk space & the glorious CGA graphics….
Although I do recall getting windows 3.0 real mode running on an icon.. and some sierra CGA games (man hunter sanfrancisco) with the dos emulator….
I also recall something about cd .. not working correctly….
And that ‘turing’ thing? Pascal wanabe.. how horrid. Although I always wondered what Ontario did with all those old things… The ICON II’s were 100000% better than the I’s though.
You have to remember that the first generation of ICONs were 80186 and 80286 machines. Any OS on those systems would be painfully slow, not to mention it was using a dedicated file server using 10base2 network.
“After using ICON’s at highschool for 4 years you couldnt force me back onto QNX… It was simply HORRIBLE! Yes I’m sure they have ‘fixed’ things in the last 13 years but QNX for a multiuser primary OS was just painfull!“
Wow! 13 years ago… 1993! If you use the MS Windows comparison, then you’ll be thinking back to even before the original MS Windows 95 days; all the way back to when Windows 3.1 was MSs popular OS!
Comparing the changes to MS Windows, and *nix –> Linux OSs, and many many more OSs, then I think QNX’ll be quite different.
Back 13 years I was still using Amiga OS, RISC OS (Acorn Archimedes), and my humble Atari ST occasionally. How things have changed!
PS. BTW, thanks to James Ingraham for the QNX review!
Yes it was windows 3.0.. Windows 3.1 had just shipped and I remember having to use the windows 3.0 CGA driver.
I’m just saying as a former day to day user of QNX it was horrible. I know it has a huge fan boy following because its a microkernel, but try to actually use it. I’ll take windows 3.0 any day over qnx.
PhAB (Photon Application Builder) is quite nice, but offers you only the ability to make VB-like apps. If you want to code stuff in OpenGL, you MUST first get their OpenGL TDK (Technology Development Kit) which includes the libraries and headers (1500$), and for every kind of stuff (networking for instance), another 1500$ TDK is required.
You cannot play MPG or AVI (DivX) files, because they removed all their codecs from 6.2 to put them in another TDK for QNX 6.3.
QNX is nice looking (Photon), Neutrino is pretty stable, but as a desktop OS, QNX just worth nothing but the CD you have etched it on…
Kochise
Edited 2006-07-24 12:44
Note that QNX has no “VB-like” language or environment; PhAB is a user-interface builder, and you develop using C/C++.
And yes, QNX isn’t intended for typical desktop use.
– chrish @ QNX
“And yes, QNX isn’t intended for typical desktop use”
I not said VB-like language, I said VB-like looking UI That’s pretty a difference, because the power of QNX cannot be compared to what can offer VB in this range of application
And it’s sad QNX, with such a well organized and ergonomic shell cannot be used as a desktop OS…
Kochise
I remember downloading the free install discs and playing. It was amazing how fast the system was. I stopped caring when they stopped caring about the community.
Keep in mind that QNX is owned by Harman International Industries, which includes (among others) JBL, the daddy of professional speakers. QNX is an excellent O.S. for doing audio-related things. where latency is the enemy of everyone. So give a little credit where credit is due. It may not be the best O.S. for everyone, but it certainly has its place in this world.
Edited 2006-07-24 14:39
“It may not be the best O.S. for everyone, but it certainly has its place in this world.”
For the people that can get in touch with it, yes, maybe. Should I speak also of a revolutionary OS that I keep under cover and only a few (and rich) customers could affor ? I don’t think so, because hardly few people will ever have to deal with…
That’s the problem with QNX : with 6.0 and 6.1, I thought it was some ‘early’ versions that lacked features released as NC (Non Commercial) usage to the community as an appeal. Then with 6.2 and 6.3 I understood that QNX don’t give a shit about the community and the only interrest is to make money (that’s pretty normal).
It’s just too sad QNX don’t leave some geeks improve the desktop version they don’t plan to support anymore.
Kochise
Should I speak also of a revolutionary OS that I keep under cover and only a few (and rich) customers could affor
a) QNX is not “under a cover”; it’s well known and well marketed
b) Compared with other RTOSes, QNX is not expensive, so most people who need an RTOS can afford it: it’s not some delicacy reserved for the rich. If you think about it, six computers and accompanying copies of XP Pro and Office Pro would also cost $10,000, but most small companies manage it.
c) What on Earth do you plan to do with an RTOS anyway? It’s quite unsuited to general desktop use; as the article states, its main advantage is that it provides an easy development system for software that will run on machines lacking a display, keyboard and other niceties.
Not every operating system needs to be able to play MP3’s, have a fanciful (or indeed any) display layer, or even be able to multi-task to be of value. QNX is aimed at the embedded space where there are hard real-time and fault-intolerant constraints. Ultimately almost no-one in the “community” every here is talking about was able to contribute the kind of high-quality code – most of it in assembly – that mattered to QNX. The company has a number of very skilled developers that need to be paid, and earning money to pay those people for their hard work is nothing to be ashamed of.
Edited 2006-07-24 17:58
“Not every operating system needs to be able to play MP3’s, have a fanciful (or indeed any) display layer, or even be able to multi-task to be of value.”
A desktop OS needs these ‘fancy’ stuffs. Otherwise please explain why have QSSL bothered to create a native x86 version of QNX with such a nice and effective GUI ?
And don’t tell me about cross development, a cross compiler hosted on Windows or Linux is just enough. So why have they wasted so much creativity in something they lock down afterward ?
I think there were markets for an open desktop version for people seeking reliabilty and responsiveness from their OS, not especially focusing on the RTOS hype of the embedded version. People would have been eager to develop on QNX NC which provide a strong industry compliant API, not the mess you may find on other platforms (see on Windows Win32 vs MFC vs ATL vs WTL, .NET vs …).
It’s normal QNX is seeking some money for their coders, I’m not against that at all. But enforcing the use of a NC desktop version would enforce little by little QNX as a standard de facto, especially in high schools where students can work on a POSIX compilant OS that is really used in the industry. That would be a great advantage for everyone…
But hey, that’s my vision of things, and I know that people on the market and financial departement have other views of the problem, mostly a short time range…
Kochise
The Photon GUI was designed for people who want a nice graphical display on their embedded systems.
Students would do better with Linux or (preferably) FreeBSD, since they’ll be able to run all those “other” desktop applications they’ll want to use.
– chrish @ QNX
As far as I can tell, QNX is following the SCO pattern for success. They reall ought to give it away to developers to get more seats. But I know they would rather gouge everyone. That is what made SCO the #1 force in UNIX right?
“As far as I can tell, QNX is following the SCO pattern for success…”
WHOA! I haven’t seen QNX sue anyone. I agree that I think pulling the non-commercial version was a mistake, but they have ALWAYS been good corporate citizens.
Just like to point out that QNX 6 contains almost no assembly code, and that nobody (to my knowledge) develops QNX software in assembly language. The OS (and applications) is very portable.
– chrish @ QNX
I thought that might be the case. However I remember hearing that back in the 4.x days a substantial portion of the kernel was assembly. Maybe it was just hype.
> I understood that QNX don’t give a shit about the community and the
> only interrest is to make money (that’s pretty normal).
They do give a **** about their customers, otherwise they’d surely not have a high quality support line. I don’t know if that is what you mean by community, though.
> It’s just too sad QNX don’t leave some geeks improve the desktop
> version they don’t plan to support anymore.
It probably contains too many hints to make a clone of the non-desktop stuff too. Which is exactly what they *don’t* want.
This is a very nice article. Both in the way it was written as well as the content. While some of the others didn’t find it as useful, it certainitly gave me more information about RTOS – what they are and how they are used. QNX sounds like a good operating system, the only drawback I can see is the price. I’m not sure if $10k is average for this type of operating system or not.
Thank you, TaterSalad. It’s nice to post something on the Internet and NOT get flamed.
Also, I can assure you that $10K is at the low end for development systems for RTOSes. Oddly, Windows CE is a counter-example. For VxWorks, Integrity, ThreadX, etc. tens of thousands is normal. That’s one reason Linux is making significant in-roads in the embedded market.
QNX… My favourite operating system, together with the BeOS. I wrote a similar article to this one for OSNews a long time ago (before I became editor), with the difference that my article focused on the desktop and microkernels in general:
http://www.osnews.com/story.php?news_id=8911
QNX made me love and appreciate microkernels more than monolithic kernels; regular OSNews readers will know this.
I still pity the fact that QSS did not go the Red Hat/Fedora route. QSS has a gem of an operating system, a gem of a graphical user environment, and a gem of a developer platform, including extensive documentation. They have all the bits in place in order to create and sustain a vibrant community that can extend the QNX operating system into a desktop operating system. POSIX compliance is even higher than Linux’s or Solaris’, so porting applications is made easier.
They do not even have to open source their baby; a free for non-commercial usage version like before is all that is needed. Set up a nice Wiki and forum page where QNX coders and QSS employees can help out, maybe make the DDK easily available, and there you go, you have yourself a good starting point for creating a nice niche in the desktop world.
Such a shame. I know they do not *need* to do it, I know it is not QSS’ target. However, that does not negate the fact they *could*, with relatively little effort.
They have all the bits in place in order to create and sustain a vibrant community that can extend the QNX operating system into a desktop operating system.
Isn’t there an ongoing arguement of why RTOS should or should not be used on the desktop? I can’t remember the points or counterpoints, but I could swear someone would always ask the question of “How would an RTOS do on the desktop?”
I did some temp work years ago at a Heidleberg-Harris printing press factory. The presses were controlled with QNX. The Engineering Department was full of C programmers that developed the interface.
Just doesn’t seem right that someone would want to run a desktop environment on this real-time operating system.
Why the first poster was using it in high school was beyond me.
I agree. There is hardly ever a requirement for real time performance on a desktop computer. In fact it’s pretty much impossible on a normal configuration, with a hard drive and virtual memory for example, and other often completely unknown and unpredicatable timing and performance factors. It certainly would be silly to design a RTOS (even a soft RTOS) to be indended just for desktop use. The same is for QNX. The only reason to have QNX installed on a PC is so you can develop applications for it that will end up running on some other platform. I’ve worked with QNX in university in RTOS and embedded system courses. A friend of mine worked with it to make software for controlling a nuclear power plant experiments. Those are the types of uses QNX is intended for, and in that context, it is a good OS. It should not be judged on it’s features, or usability as a dekstop OS.
Edited 2006-07-24 16:41
> Why the first poster was using it in high school was beyond me.
The link I provided earlier has the basic history:
http://en.wikipedia.org/wiki/Unisys_ICON
Ontario has a habit of going its own way on a lot of things. For instance, instead of teaching Pascal or C, the University of Toronto taught a language that was created inhouse called Turing:
http://en.wikipedia.org/wiki/Turing_programming_language
Instead of teaching OS design using FreeBSD or Linux or Minux, it taught classes using the TUNIS operating system (written in Turing):
http://en.wikipedia.org/wiki/TUNIS
On the plus side, it also went it’s own way by licensing StarOffice instead of MS Office:
http://www.sun.com/smi/Press/sunflash/2004-05/sunflash.20040527.1.x…
Then with 6.2 and 6.3 I understood that QNX don’t give a shit about the community and the only interrest is to make money (that’s pretty normal).
There was an NC version of 6.2.1 and with 6.3 AFAIK you can still use the os itself after Momentics evaluation periond ends.
You can’t do NOTHING with QNX, especially with the 6.3, and even less (than NOTHING) after the 30 days ran out…
Kochise
Let us know how you fare using VxWorks or another embedded OS as a desktop system, I’m sure that would make a very interesting article that OS News would be happy to publish for you.
– chrish @ QNX
“You can’t do NOTHING with QNX…”
Ignoring the double negative…
I’d better call my customers quickly, then, since we’ve got about 100 industrial robots (we’re a small company) doing “nothing” because they’re running on QNX. Oh, and somebody put in a call to NASA and tell them the International Space Station isn’t working either. Neither, apparently, is the Cabury plant in Canada, which is clearly NOT producing 48 million pounds of chocolate bars a year using QNX. And I guess we’ll have to tell Audi, Accura, & Saab that their high-end, luxury in-car entertainment systems don’t work. Or if you want to be REALLY scared, how about the anasthesia machines running on QNX? I guess they “can’t do nothing” either. </sarcasm>
I would much rather be hooked up to an anasthesia machine running QNX than Linux. Sure, QNX doesn’t have the best photo editors, chat clients, or games. But when you’re talking about millions of dollars or even human life on the line, is “can I get on AIM?” really a relevant question?
“I would much rather be hooked up to an anasthesia machine running QNX than Linux. Sure, QNX doesn’t have the best photo editors, chat clients, or games. But when you’re talking about millions of dollars or even human life on the line, is “can I get on AIM?” really a relevant question?”
The “but it sucks on the desktop” crowd really annoys me, as if there’s no life beyond the desktop.
But you just did the exact opposite here. Linux may be suited for the desktop (which I think it isn’t yet, but that’s a different story), but that doesn’t mean it isn’t suited for critical embedded applications too (there are medical systems out controlled by software running on Windows XP, which I find much more disturbing).
“Linux may be suited for the desktop… but that doesn’t mean it isn’t suited for critical embedded applications too.”
Depends on what you mean by “critical.” I would not trust Linux if life and limb were at stake. Nor do most of the people designing “life at stake” systems. My industrial embedded “critical” applications would do okay on Linux, but “crtical” here means “critical to production” not “if you screw up people die.” The arguments are many and varied, but for me it boils down to this; the Linux kernel is not pre-emptable. That means you can never ever reliably guarantee system response time. Is it “fast enough?” Yes, generally. Has anyone decided to trust it fly a jet fighter? No.
I’m actually not aware of any medical equipment running on Windows XP that is actually life-crtical, e.g. delivering anasthesia, running a dialysis machine, etc. Controlling an X-ray machine or MRI maybe. Of course, one of the most famous software blunders in history was an X-ray machine that occaissionally delivered lethal doses of radiation (they wrote their own OS). If there ARE life-critical machines running Windows XP, I agree that it is quite terrifying.
Windows CE, on the other hand, IS in fact a real-time OS, and can reliably run critical systems. But nobody’s controlling jet fighters with it, either.
By the way, NASA ground control at Johnson Space Center in Houston (as in “Houston, we have a problem”) is chock full of Windows machines. This is fine, because you can just switch to another machine if you need to. The International Space Station, however, runs QNX.
You’re right that Linux isn’t automatically out of the running simply because it can be a decent desktop OS. In fact, nobody is really sure just how good (or bad) Linux is at “Real-Time Critical” applications. Such things are notoriously hard to measure. But I feel safer with the “traditional” commercial RTOSes, e.g. VxWorks, Integrity, QNX, etc.
“the Linux kernel is not pre-emptable”
If you mean that a process can be preempted while executing kernel code, then that’s not true at least since early 2004 (check http://kerneltrap.org/node/2702).
“Depends on what you mean by “critical.” I would not trust Linux if life and limb were at stake.”
If one defines “critical” or “life-critical” in terms of reliability, then I think Linux is reliable enough to handle such critical tasks, especially after shaving off all unneeded bits. However, if “critical” is defined in terms of real-time guarantees, then I wouldn’t use Linux either.
Linux isn’t an RTOS and it probably will never be (real-time and general purpose capabilities don’t seem to be a particularly good match).
“If there ARE life-critical machines running Windows XP, I agree that it is quite terrifying.”
I can’t say for sure, but I’m quite certain that there are a lot of stuff being controlled by software running on Windows XP boxes that one could consider “life critical”. If you have a couple of big industrial robots running an RTOS inside, but being controlled by some software running on Windows XP, then that could be considered life critical too. If the Windows box goes mad and one of the robots chops the head out of a worker nearby, then that could be considered life critical
“If the Windows box goes mad and one of the robots chops the head out of a worker nearby, then that could be considered life critical ”
Can’t happen. The rules regarding industrial machinery require physical barriers. If there is a way through the barrier (e.g. a gate in the fence around the machine), when opened it must remove all motive power through a double-redundant, safety-rated hardware circuit. The software can go as screwy as it wants, and nobody gets hurt. If a guy jumps the fence or comes up with some other clever way to defeat the safety circuit, he’s as likely to be killed by a working system as a non-working one. He’d better HOPE for a blue-screen at that point. 🙂
Incidentaly, I like the fact that I can’t kill anyone with my job. I have no desire to write software for medical devices, jet planes, or nuclear power plants.
I believe we’re all speaking about the desktop version, right ? Osnews deals with Linux, Morphos, skyos, reactos, etc… Are these embedded OSes ? Noooo, and thus I’m NOT speaking about the embedded version of QNX which is famously known for its power. So please don’t put silly words in my mouth… This article competition mostly deals with DESKTOP OS, not embedded !
Currently, from a desktop point of view, QNX lacks of many many many features to compete with other opponent operating system. One thing that was (isn’t anymore as QNX NC was pulled) hyped and promoted about QNX is how it is POSIX compliant, and how easy it is to convert softwares from *nix and Linux. Thus all of this for a promised usage as desktop OS.
The article deals with the desktop edition of QNX (shelf, photon gui, …), and concludes that QNX is fast, reliable, etc… Sure, but unusable for the common buddy And the competition is about desktop OS to be discovered by the common guys outa there !
Kochise
Back in the 6.2 days QNX really rocked. It had a vibrant community with some very nice, helpful QNX devs (CDM, etc). Lots of nice apps, too. You could use 6.2 as a desktop OS easily.
Then came the 6.3 update and while the internals got some much needed updating but the community was cut off from QNX as the the NC version was a very different NC than 6.2. CDM, etc, left for greener pastures as QNX really turned away from a broad community and concentrated in the embedded market; nothing wrong with that, as that is where the money is, but after creating a community with the 6.0 NC release only to see it abandoned with 6.3 really hurt.Devs left. The OSS apps that helped make 6.2 so nifty went abandoned.
I look at QNX screenshots now and just sigh. QNX could have been so good, so popular.
Oh well.
I’m no expert in operating system programming but if I recall correctly: the main thing that hurt QNX RTOS on the desktop was the scheduling method that was used.
At one time QSSL seemed to enjoy that home users were interested and enjoyed tinkering with their OS. zizban mentioned that around the 6.3 release this came to an end. I read a lot of useful tools were “time limited” so I didn’t bother downloading it. Whether that obstacle to QNX hobbyist development was a real or perceived, it brought an end to a lot of home user support. Very unfortunate.
The QNX community was/is top-notch. The QSSL staff and even full-time QNX professionals were always around, enthusiastically helping one another. It didn’t matter if you were a Fortune 500 company employee or basement hobbyist. The departure of CDM was a huge blow. Things are definitely a lot more inaccessible these days.
One of things that was time limited was the compiler; qcc is very good, one of the best compilers put there but after 30 days it went away. Ever try compiling something on 6.3 with gcc? Too many hacks to get around the default qcc flags; never mind trying to use PhAB with gcc. Too much hassle for a hobbyist dev.
qcc is just a front-end that calls gcc… it makes it easier to support builds for multiple architectures, but it’s hardly required to make QNX applications.
– chrish @ QNX
ChrisH: “qcc… [is not] required to make QNX applications.”
Hate to break it to you Chris, but it is not possible to use GCC directly to compile anything more complicated than “Hello, World!” I know because I tried to build the Boost++ libraries using qcc. It didn’t work, so I tried gcc directly, and that was even worse. I called tech support to ask about it; they said that using gcc directly was impossible. Well, not impossible, just impractical to the point of going-over-Niagra-falls-in-a-barrel-and-surviving.
In March, OSNews.com published an interview about BNX, what was then described as the “mating of Haiku’s open source BeOS servers with a specially-licensed, real-time kernel from QNX Software Systems” (quote from the intro). I thought this was an interesting project.
Today, when I saw the QNX article, I thought I would look for the BNX interview on OSNews, but it seems to be gone. The interview URL at…
http://osnews.com/story.php?news_id=14088
…gives a “No data found” error message). For those interested, a copy can be found here:
http://trollaxor.com/text/bnx_sven_jorg_talks_about_merging_beos_an…
I wonder if this project been abandoned? And if so, it would be interesting to know the reasons why, as the concept looked quite interesting.
It’s a real shame QSS still doesn’t offer this or that they haven’t put out a new, updated version. (It would be a cracktacular handout at tradeshows.)
When the motherboard in my PC died circa 1997, and the only other computer in the house was a 486/100 laptop with 16megs of RAM, that boot floppy got me online … in a GUI. No frills, but blazing fast.
The Ultimate Boot CD inludes the QNX browser floppy.
Look near bottom of app list under Network Tools.
http://www.ultimatebootcd.com/index.html
Alas you probably have to download the whole UBCD iso file which I find worthwhile anyway. You could probably extract it to a floppy img file.
I’ve always liked QNX and I enjoyed the article a lot. All around good read.