Какой процесс имеет PID 0?

55

Я ищу процесс, запущенный в Linux с идентификатором процесса 0. Я знаю, initчто PID 1, который является первым процессом в Linux, есть ли процесс с PID 0?

user9744
источник
Связанный: unix.stackexchange.com/questions/13290/...
ОДС
1
Идентификатор процесса O - SWAPPER. Идентификатор процесса 1 является init.
Анкур Джайн

Ответы:

51

На странице википедии под названием: Идентификатор процесса :

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

Вы можете увидеть доказательства этого, если вы посмотрите на родительские PID (PPID) initи kthreadd:

$ ps -eaf
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Jun24 ?        00:00:02 /sbin/init
root         2     0  0 Jun24 ?        00:00:00 [kthreadd]

kthreaddэто демон потока ядра Все kthreads разветвляются из этой темы. Вы можете увидеть доказательства этого, если посмотрите на другие процессы, использующие psи увидев, кто является их PPID:

$ ps -eaf
root         3     2  0 Jun24 ?        00:00:57 [ksoftirqd/0]
root         4     2  0 Jun24 ?        00:01:19 [migration/0]
root         5     2  0 Jun24 ?        00:00:00 [watchdog/0]
root        15     2  0 Jun24 ?        00:01:28 [events/0]
root        19     2  0 Jun24 ?        00:00:00 [cpuset]
root        20     2  0 Jun24 ?        00:00:00 [khelper]

Обратите внимание, что они все 2.

SLM
источник
Так что, если PID 0 является swapper, то что kswapd[0-9]*в моей системе имеет PID 52 в настоящее время? Похоже, что также отвечает за подкачку.
Руслан
1
@Ruslan - если у вас есть вопросы, пожалуйста, задавайте их на основном сайте, комментарии не предназначены для этого. Ссылка на этот вопрос в вашем новом вопросе.
slm
хорошо, но когда мы создадим новый процесс, используя дочерний процесс fork, получим pid 0 ?
roottraveller
@roottraveller не обязательно, независимо от того, какой PID родителей находится там, где произошла форк, будет то, что обнаружится.
SLM
10

Из идентификатора процесса вики:

Есть две задачи со специально выделенными идентификаторами процессов: swapper или sched имеет идентификатор процесса 0 и отвечает за подкачку страниц и фактически является частью ядра, а не обычным процессом пользовательского режима.

cuonglm
источник
6

Процесс с pid 0является планировщиком,

Идентификатор процесса Описание:
0 Планировщик
1 Процесс инициализации
2 kflushd
3 kupdate
4 kpiod
5 kswapd
6 mdrecoveryd

user78115
источник