These limits apply to the entire system:
- Processes
- A maximum of 4095 active at any time, except on versions of ARM before v6, where the limit is 63 processes.
On ARM platforms, the limit is actually on the number of separate
address spaces; you could have more processes if they happen to
be sharing an address space because of
vfork(),
but that's very unusual.
- Prefix space (resource-manager attaches, etc.)
- Limited by memory.
- Sessions and process groups
- 4095 (since you need at least one process
per session or group).
- Physical address space
- No limits, except those imposed by the hardware;
see the documentation for the chip you're using.
These limits apply to each process:
- Number of threads: 32767
- Number of timers: 32767
- Priorities: 0 through 255
Priority 0 is used for the idle thread;
by default, priorities of 64 and greater are privileged, so only
processes with an effective user ID of 0 (i.e., root)
can use them.
Non-root processes can use priorities from 1 through 63.
You can change the range of privileged priorities with the
-P option for
procnto.
- Memory allocation:
Because the malloc() implementation uses signed, 32-bit
integers to represent the size internally,
you can't allocate more than 2 GB in a single allocation.
If the size is greater than 2 GB, these functions indicate an error
of ENOMEM: