Как нумеруются процессы в UNIX?

17

Я не могу найти шаблон, когда смотрю на нумерацию идентификаторов PID в таблице процессов ( ps -a), так как идентификаторы PID не являются последующими числами, и иногда между этими числами возникают большие "пропуски". Это потому, что могут быть некоторые процессы, которые выполняются в течение короткого времени, и они резервируют некоторые PID? Есть ли какой-то диапазон, после которого нумерация процессов сбрасывается?

Я использую Mac OS X, но думаю, что ответ должен относиться к UNIX в целом.

синтагма
источник

Ответы:

18

Да, по обоим пунктам.

Многие процессы недолговечны. Они получают PID, запускаются, заканчивают работу, и PID исчезает из таблицы процессов.

Процессы иногда живут только доли секунды!

Часто при запуске программ они запускают многочисленные команды в рамках проверки системы и инициализации своей среды.

Максимальный номер PID зависит от системы и иногда настраивается. По сути, если вы знаете, что у вас будет огромное количество процессов, вам, возможно, придется увеличить их, но в новых операционных системах я считаю, что максимальное число обычно достаточно велико для большинства рабочих нагрузок.

PID - это записи в таблице процессов, и чем больше у вас памяти, тем больше памяти занимает таблица процессов.

Посмотрите на этот связанный вопрос: /server/279178/what-is-the-range-of-a-pid-on-linux-and-solaris

Также обратите внимание, что с этим связан «максимальный номер процесса на пользователя», который является мерой защиты от злонамеренного пользователя, намеренно создающего много процессов для захвата всей таблицы процессов.

Johan
источник
7

Также возможно сконфигурировать некоторые современные ядра для назначения случайных PID новым процессам для повышения безопасности. По крайней мере, Linux и FreeBSD могут делать это с настройкой sysctl, а OpenBSD делает это всегда. В этих случаях вы можете сказать все меньше о схемах нумерации.

unperson325680
источник
Знаете ли вы, что, если таковые имеются, стоимость производительности существует для этого?
Брюс Эдигер
@Bruce: первый предложенный патч имел наихудшую производительность O (infty) из-за наивной рандомизации. Но я думаю, что они получили что-то безопасное и полезное. Я не нашел ничего очень актуального по этой теме ... не то, что использовалось, я верю. :)
unperson325680
5
Случайные ПИДы для меня звучат как безопасность через безвестность.
Йохан
Вот что это такое, в основном ...
unperson325680
Если исходить из отдельных инициатив, Linux предлагал его только через патч grsecurity , команда ядра Linux всегда отказывалась его реализовывать ( пример здесь ), и даже команда grsecurity в конце 2006 года отказалась от него .
WhiteWinterWolf