The process manager is capable of creating multiple POSIX processes (each of which may contain multiple POSIX threads).
In QNX Neutrino, the microkernel is paired with the Process Manager in a single module (procnto). This module is required for all runtime systems. Its main areas of responsibility include:
- process management—manages process creation, destruction, and process attributes such as user ID (uid) and group ID (gid).
- memory management—manages a range of memory-protection capabilities, shared libraries, and interprocess POSIX shared-memory primitives.
- pathname management—manages the pathname space into which resource managers may attach.
User processes can access microkernel functions directly via kernel calls and process manager functions by sending messages to procnto. Note that a user process sends a message by invoking the MsgSend*() kernel call.
It's important to note that threads executing within procnto invoke the microkernel in exactly the same way as threads in other processes. The fact that the process manager code and the microkernel share the same process address space doesn't imply a special or private interface. All threads in the system share the same consistent kernel interface and all perform a privilege switch when invoking the microkernel.