Как pid (идентификатор процесса) выделяется для процесса-демона в ядре Linux? - PullRequest
1 голос
/ 21 января 2012

Я исследовал код ядра Linux (2.6.11) о создании процесса / потока и следовал за do_fork () -> alloc_pidmap ()

Кажется, что alloc_pidmap всегда возвращает pid> 300, как только предыдущий pid достиг максимального pid, тогда как на самом деле pid демона всегда <300 (это правильно?). </p>

Получает ли демон pid, используя функцию, отличную от alloc_pidmap ()? Если это так, значит ли это, что процесс демона не создается с помощью do_fork?

1 Ответ

2 голосов
/ 21 января 2012

AFAIK pid выделяются ядром; ограничение 300 (то есть #define RESERVED_PIDS 300 private внутри kernel/pid.c), которое вы видите, возможно, связано с тем, что в большинстве систем несколько процессов были разветвлены в начале загрузки (например, из initrd возможно).

Вы можете протестировать загрузку GRUB непосредственно в ядро ​​с init=/bin/sh

Некоторые процессы являются процессами ядра (без кода пользователя, например, kworker или kauditd), которые не запускаются форком от init или потомков. Вероятно, они начинаются с kthread_create внутри ядра (и без какого-либо системного вызова).

И вы должны объяснить, почему вы спрашиваете об этом. Ваш вопрос об определении, является ли процесс демоном или нет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...