The task list is stored in a circular doubly linked list; each node is a
struct task_struct. The list structure is specifically in the
tasks field. There's no separate object in memory to represent the list: each node contains pointers to the previous and next node (
This data structure doesn't have an inherent maximum size. The limiting factor as far as the number of tasks is concerned will be either the available memory for tasks structures and other resources consumed by the tasks, or the number of process (more precisely, task group) identifiers, which are limited to 15 bits by default.
Read chapter 5 of Linux Kernel Development, or chapter 11 of Linux Device Drivers , for more information on this data structure in the Linux kernel.