1

Кто или Какой процесс является родителем процесса INIT? INIT - это первый процесс, который инициализируется ядром, ядро не является одним процессом, так каково его значение идентификатора родительского процесса?

2 ответа2

2

Согласно ps -ef его идентификатор родительского процесса равен 0 .

Например:

$ ps -ef | head -4
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Mar14 ?        00:00:03 init [2]  
root         2     0  0 Mar14 ?        00:00:00 [kthreadd]
root         3     2  0 Mar14 ?        00:00:17 [ksoftirqd/0]

Обычно говорят, что init не имеет родителя и что, следовательно, значение PPID 0 является заполнителем, сигнализирующим, что у него нет родителя. В качестве альтернативы можно утверждать, что ядро является "родителем" init и что 0 означает ядро.

0

На самом деле pid 0 - это планировщик ядра, поэтому родительский элемент init - это планировщик kenerl, который работает в режиме ядра. https://en.wikipedia.org/wiki/Process_identifier

Есть две задачи со специально выделенными идентификаторами процессов: swapper или sched имеет идентификатор процесса 0 и отвечает за подкачку страниц и фактически является частью ядра, а не обычным процессом пользовательского режима. Идентификатор процесса 1 обычно является процессом инициализации, главным образом ответственным за запуск и выключение системы. Первоначально, идентификатор процесса 1 не был специально зарезервирован для init никакими техническими мерами: он просто имел этот идентификатор как естественное следствие того, что ядро было первым процессом, вызванным ядром. Более поздние системы Unix обычно имеют дополнительные компоненты ядра, видимые как «процессы», и в этом случае PID 1 активно резервируется для процесса init, чтобы поддерживать согласованность со старыми системами. R работает в режиме ядра.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .