The QNX Neutrino RTOS provides high-performance and deterministic response times at the application level and in all subsystems. Thread priority inheritance eliminates priority inversion problems.
The QNX Neutrino RTOS provides a full multi-core solution that has been deployed on multi-core processors in virtually every embedded environment. The solution offers:
- Symmetric multiprocessing (SMP)
- Asymmetric multiprocessing (AMP)
- Bound multiprocessing (BMP)
- Inherent scalability — symmetric and bound multiprocessing scale seamlessly to 4, 18, 16+ cores
- Support for a wide range of popular multiprocessor SOCs and boards
In addition to its unparalleled reliability and self-healing capabilities, the QNX Neutrino microkernel architecture offers significant advantages over monolithic kernels.
Monolithic kernels, such as Microsoft Windows or Linux, require either big kernel locks (BKL) or fine-grain locking. This architecture is problematic for the following reasons:
- BKLs can cause long delays for threads requiring kernel access when the kernel is running on a different core, greatly degrading coherency.
- Fine grained locking introduces a large amount of complexity into code, creating fragile, difficult to understand system level interactions, without solving the entire problem — timeliness of access is still restricted to the degree of locking implemented in the current subsystem.
- Microkernel architecture
With the QNX microkernel, kernel operations are relatively few and of short duration. This minimal locking approach improves the performance of the rest of the system because neither BKL or fine grained locking approaches are necessary.
Long time-scale operations (including process managers) run in process space, and because of that, they do not halt the scheduling of other threads in the system: applications, drivers, or protocol stacks. Keeping extended duration operations in process threads (and outside the kernel) grants the microkernel the freedom to schedule regular process threads across multiple CPUs.
The QNX Neutrino RTOS enables rapid time-to-market for multi-core applications:
- Reuse existing applications
- Advanced visualization tools for multi-core systems
- Multi-core debugging and optimization tools
- SMP and BMP provide full visibility of all application processes and system resources
This rich, standards-based environment includes familiar shells, and command-line interfaces, as well as allows developers to quickly migrate Linux, UNIX, and other open source programs to BlackBerry QNX.
The QNX Neutrino RTOS is certified for conformance to the POSIX PSE52 Realtime Controller 1003.13-2003 System product standard. Government agencies as well as commercial customers can choose the QNX Neutrino RTOS with the assurance that it provides both the code portability and the realtime determinism needed for an array of military, networking, medical, and automotive systems.
Thanks to the microkernel architecture of the QNX Neutrino RTOS, virtually any component — even a low-level driver — can fail without damaging the kernel or other components. What is more, failed components can be restarted quickly and intelligently.
With the QNX Neutrino RTOS, spare CPU capacity is used when available (that is, processes can exceed their budget limits). However, if resources are constrained, processes are guaranteed to get their budgeted share.
Realtime scheduling ensures that process threads run when they are supposed to make sure that there is always enough CPU to go around – guaranteed.
If a device driver, protocol stack, or application experiences a problem, it does not take other components down with it. The QNX Neutrino RTOS high availability manager can terminate and restore the faulting component in isolation — often in just a few milliseconds, and without a reboot.
Supported networking technologies include IPv4, IPv6, IPSec, FTP, HTTP, SSH and Telnet. Unique transparent distributed processing enables an application to access resources on any node in a network for seamless peer-to-peer resource sharing.
Extensive support for POSIX standards facilitates application portability and rapid migration from Linux, UNIX, and other open source programs.
Runtime support and BSPs for the latest popular 32-bit and 64-bit chipsets from the ARM Cortex A-series and Intel/AMD x86 families lets designers select the best hardware platform for their embedded system, and then quickly get their systems up and running.
BlackBerry QNX brings advanced, layered security mechanisms, built directly into the OS and kernel. With BlackBerry QNX you can build a system that offers the best possible security measures, such as:
- Granular control of system privilege levels – restrict any process’s capabilities to only the elevated privilege level that is necessary for the specific operation (and only while required), without providing the process with unfettered access to the entire system. BlackBerry QNX features >50 distinct “abilities” that allow or deny operations with pinpoint accuracy across the system – even root processes can be limited.
- Layered approach – comprehensive system approach that builds on existing and new SDP features. Incorporates industry best practices, such as chain of trust, integrity management, and mandatory access control (MAC). Provides the ability to audit and attest to the integrity of the system.
- Sandboxing – limit the amount of damage a rogue process can do to only the “sandbox” it has been granted access.
- Secure Boot – Trust zone / TPM maintains the chain of trust through signed code execution and image verification.
- Encrypted file systems – the file system can be encrypted by dividing it into encryption domains, which can be locked, or unlocked for access. Strong AES 256 encryption is used, ensuring the safety of your data.
- Self-verifying file systems – protect data using a read-only file system that compresses the files in blocks, yet still supports random access.
- Reduced security attack surface – all processes, including drivers, file systems, etc. execute in user-mode, significantly reducing the damage compromised processes can do to the rest of the system.
- Heap, Stack, and Memory Protection – heap, stack, and allocated memory blocks are protected by “guard pages” that the microkernel uses to detect and trap stack overflows and other “out of bounds” conditions usually associated with bugs or malware.
- ASLR – The heap is protected by address space layout randomization (ASLR), which randomizes the stack start address and code locations in executable and libraries, as well as heap cookies, raising the difficulty level for attackers and malware.
- Root-less operation – Root access is divided into >50 root level capabilities via QNX abilities. Processes can be limited to the QNX abilities they need. This removes the need for root access by limiting processes to QNX abilities.
- Anomaly detection – Is a runtime behavior monitoring to detect anomalous behavior in the system. It will detect everything from periodic anomalies to illegal system call sequences. It can be trained and is continually self-learning. This is the first stage in offering a comprehensive system monitoring capability.
- Integrity Measurement – A mechanism to securely log system activities to detect security violations (realized or attempted) or anomalous behavior in the system.
QNX Neutrino includes a graphics compositing windowing system (Screen) that has complete GPU hardware acceleration and is capable of integrating multiple GUIs into a single scene. This scene is then rendered into one image that is associated with a display, allowing the designer to use the most appropriate graphics technology that corresponds with the image. Screen allows developers to build graphically rich, compelling UIs using built-in, high-performance OpenGL ES based transitions, supporting multi-touch displays, and rendering images from Qt, HTML5, video, and other technologies through a single compositing windowing system.
Integrated tool chain
The QNX® Momentics® Tool Suite offers all the development and debugging features commonly found in other Eclipse-based IDEs, plus unique BlackBerry QNX capabilities, such as multi-core profiling and an instrumented kernel (event gathering module).
Eclipse provides well-defined interfaces to ensure that tools work together seamlessly. Developers also benefit from an open, extensible platform for tool integration supported by a large and rapidly growing community of tool vendors and developers. They can plug in third-party tools, or build their own plug-ins using the industry-standard Eclipse framework.