Если говорить о 2.4 (в 2.2 это число было фиксированной константой которую можно было подкрутить при сборке ядра как в 2.5/2.6 точно не помню) то: вообще говоря звисит от max_threads - это число можно подкручивать через procfs. Его начальное значение зависит от объема RAM - доступной системе.
Нет таблицы процессов, есть связный список struct task_struct с упомянутым выше ограничением в max_threads (нежестким, просто проверяемым). Плюс естественным ограничением является наличие свободной памяти ядра.