Multiprocessing systems, whether discrete or multicore, can greatly
improve your applications' performance.
As described in the
Multicore Processing
chapter of the System Architecture guide, the QNX Neutrino RTOS can run on
single-core or multicore systems.
Note:
To determine how many processors there are on your system, look at the
num_cpu entry of the system page.
For more information, see the
System Page
chapter of
Building Embedded Systems.
QNX Neutrino supports these operating modes for multiprocessing:
- Asymmetric multiprocessing (AMP)
- A separate OS, or a separate instantiation of the same OS, runs on each CPU.
- Symmetric multiprocessing (SMP)
- A single instantiation of an OS manages all CPUs
simultaneously, and applications can float to any of them.
- Bound multiprocessing (BMP)
- A single instantiation of an OS manages all CPUs
simultaneously, but you can lock individual applications or threads to
a specific CPU.
SMP lets you get the most performance out of your system, but you might
need to use BMP for the few applications that may not work under SMP,
or if you want to explicitly control the process-level distribution of CPU
usage.
Note:
In QNX Neutrino 7.0 or later, we require that the hardware underlying ClockCycles()
be synchronized across all processors on an SMP system.
If it isn't, you might encounter some unexpected behavior, such as drifting times and timers.
Using synchronized hardware means that you no longer have to use a runmask for threads to prevent them from
migrating to other processors between calls to ClockCycles().