|
Historically, the "application pressure" on QNX® has been from
both ends of the computing spectrum - from memory-limited embedded systems all the way up to high-end SMP
(Symmetrical Multi-Processing) machines with gigabytes of physical memory. Accordingly, the design goals for
Neutrino accommodate both seemingly exclusive sets of functionality. Pursuing these goals is intended to extend
the reach of systems well beyond what other OS implementations could address.
 |
| The "Holy Grail" of operating systems. |
POSIX realtime and thread extensions
Since Neutrino implements the majority of the realtime and
thread services directly in the microkernel, these services are available even without the presence of
additional OS modules.
In addition, some of the profiles defined by POSIX suggest
that these services be present without necessarily requiring a process model. In order to accommodate this,
Neutrino provides direct support for threads, but relies on an add-on process manager to extend this
functionality to processes containing multiple threads.
Note that many realtime executives and kernels provide only a
non-memory-protected threaded model, with no process model and/or protected memory model at all. Without a
process model, full POSIX compliance cannot be achieved.
Scalable for very small embedded systems
To target very small embedded systems, Neutrino goes a step
further than earlier versions of QNX® by allowing even the process manager to be an optional component. When
running without a process manager, Neutrino lacks the ability to create processes and has only limited,
library-implemented pathname space management. As a result, a minimal Neutrino embedded system must boot with
an initial code set and must not attempt to create processes during runtime (although additional threads can be
created).
This is a reasonable tradeoff, since many embedded systems
don't need to dynamically create processes; they boot with an initial code set and run "as is." Support for
dynamic process creation would go unused in such systems.
 |
| Neutrino system process containing threads. |
|