Я ищу процесс, запущенный в Linux с идентификатором процесса 0. Я знаю, initчто PID 1, который является первым процессом в Linux, есть ли процесс с PID 0?
Есть две задачи со специально выделенными идентификаторами процессов: swapper
или sched имеет идентификатор процесса 0 и отвечает за подкачку страниц и фактически является частью ядра, а не обычным процессом пользовательского режима . Идентификатор процесса 1 обычно является процессом инициализации, главным образом ответственным за запуск и выключение системы. Первоначально, идентификатор процесса 1 не был специально зарезервирован для init никакими техническими мерами: он просто имел этот идентификатор как естественное следствие того, что ядро было первым процессом, вызванным ядром. Более поздние системы Unix обычно имеют дополнительные компоненты ядра, видимые как «процессы», и в этом случае PID 1 активно резервируется для процесса init для поддержания согласованности со старыми системами.
Вы можете увидеть доказательства этого, если вы посмотрите на родительские PID (PPID) initи kthreadd:
kthreaddэто демон потока ядра Все kthreads разветвляются из этой темы. Вы можете увидеть доказательства этого, если посмотрите на другие процессы, использующие psи увидев, кто является их PPID:
Так что, если PID 0 является swapper, то что kswapd[0-9]*в моей системе имеет PID 52 в настоящее время? Похоже, что также отвечает за подкачку.
Руслан
1
@Ruslan - если у вас есть вопросы, пожалуйста, задавайте их на основном сайте, комментарии не предназначены для этого. Ссылка на этот вопрос в вашем новом вопросе.
slm
хорошо, но когда мы создадим новый процесс, используя дочерний процесс fork, получим pid 0 ?
roottraveller
@roottraveller не обязательно, независимо от того, какой PID родителей находится там, где произошла форк, будет то, что обнаружится.
Есть две задачи со специально выделенными идентификаторами процессов: swapper или sched имеет идентификатор процесса 0 и отвечает за подкачку страниц и фактически является частью ядра, а не обычным процессом пользовательского режима.
Ответы:
На странице википедии под названием: Идентификатор процесса :
Вы можете увидеть доказательства этого, если вы посмотрите на родительские PID (PPID)
init
иkthreadd
:kthreadd
это демон потока ядра Все kthreads разветвляются из этой темы. Вы можете увидеть доказательства этого, если посмотрите на другие процессы, использующиеps
и увидев, кто является их PPID:Обратите внимание, что они все
2
.источник
kswapd[0-9]*
в моей системе имеет PID 52 в настоящее время? Похоже, что также отвечает за подкачку.Из идентификатора процесса вики:
источник
Процесс с
pid 0
является планировщиком,источник