A talk with Paul Leroux
Lower memory costs: Because of the fine-grained scalability of microkernel architecture, the QNX RTOS can provide a runtime environment considerably smaller than traditional Unix-style OSs, a critical advantage in high-volume devices, where even a $2 reduction in memory costs per unit can return millions of dollar in profits. In fact, QNX's native windowing system, the QNX Photon microGUI, also uses a microkernel architecture, so designers can easily "unplug" GUI services that aren't required by their memory-constrained devices.
Realtime determinism: Unlike Unix or Linux, QNX was designed from the beginning for real time and has proven itself in thousands of hard realtime systems - nuclear power plants, medical instrumentation, factory robots, process control systems, emergency response systems, etc.
Where did QNX get its inspiration from?
Our customers! As realtime embedded developers, they need to create applications that are small, fast, reliable, predictable, and like everyone else, they're under incredible time-to-market pressures. They expect a lot from us, and that really keeps us on our toes. But just as important, our customers create very cool - and often very important - applications; everything from kidney dialysis machines and emergency response systems to network routers and Web tablets. It's very motivating when you know your technology will do everything from help save lives to make the Internet run better.
On what hardware platforms does QNX run?
Development environment: QNX's self-hosted development environment (i.e. the QNX realtime platform) runs on x86. You can also target QNX from Solaris, Linux, and Windows workstations.
Runtime environment: The QNX RTOS, which forms the core of the QNX realtime platform, runs on PowerPC, x86, MIPS, SH-4, ARM, StrongARM, and, soon, XScale targets.
One very nice thing about our processor support is that you can target multiple processors simultaneously, using a single stream of source code. In some cases, the developer simply needs to specify a new processor target to generate binaries for a different processor.