As a true microkernel operating system, the QNX® Neutrino® RTOS implements only the most
fundamental services in the OS kernel, such as signals, timers, and scheduling. All other components file
systems, drivers, protocol stacks, applications run in the safety of memory-protected user space. Fault
resilience is built right in.
Moreover, all components communicate via a single, well-defined messaging layer. This forms a virtual "software
bus" that lets you dynamically plug in, or plug out, any component on the fly. Better yet, messages can flow
transparently across processor boundaries, providing seamless access to any resource, anywhere on the network.
A microkernel architecture enables developers to:
- Build self-healing systems
- Virtually any component, even a low-level driver, can fail without damaging the kernel or other
components.
- If a component fails, the OS can cleanly terminate it and reclaim any resources it was using
no need to reboot.
- Failed components can be restarted quickly and intelligently, using QNX Neutrino’s high
availability manager.
- Upgrade systems without costly service interruptions
- Components can be safely upgraded on the fly without downtime
- Accelerate the debugging cycle
- If a memory violation occurs, the OS can immediately identify the component responsible, at the
exact instruction.
- Developers focus on solving subtle memory bugs, rather than waste weeks tracking them down.
- Build distributed, fault-tolerant systems
- Distributed message passing enables massively scalable, fault-resilient systems that transparently
share resources across almost any chassis, fabric, or interconnect.
- Increase code reuse and reduce verification efforts
- Field-tested binaries drivers, applications, custom OS services, and so on can be reused
across entire product lines.
- Developers can target uniprocessor devices, SMP systems, or massive clusters with just one OS and one
set of binaries.
- Simplify design of modular, easy-to-maintain systems
- Message passing not only provides a consistent form of IPC, it also:
- partitions complex applications into cleanly separated building blocks that can be developed and
tested individually
- automatically synchronizes the execution of cooperating components
- eliminates need to track complicated queuing behavior
- allows system services to be accessed via simple, industry-standard POSIX function calls; no
need to deal with a complex messaging layer