Який процес має PID 0?


55

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



1
Ідентифікатор процесу O SWAPPER. Ідентифікатор процесу 1 є init.
Анкур Джайн

Відповіді:


51

На сторінці вікіпедії під назвою: Ідентифікатор процесу :

Існують два завдання із спеціально розрізненими ідентифікаторами процесу: swapper або sched має ідентифікатор процесу 0 і відповідає за підключення , і насправді є частиною ядра, а не звичайним процесом у режимі користувача . Ідентифікатор 1 процесу, як правило, є процесом init, головним чином відповідальним за запуск і вимкнення системи. Спочатку ідентифікатор 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.


Отже, якщо PID 0 є своппером, то що таке kswapd[0-9]*, що в моїй системі має PID 52? Здається, він також відповідає за пейджинги.
Руслан

1
@Ruslan - якщо у вас є запитання щодо запитань, будь ласка, задайте їх на головному сайті, коментарі для цього не призначені. Посилайтеся на це питання у своєму новому запитанні.
slm

добре, але коли ми створюємо новий процес, використовуючи дочірній процес fork, отримуємо pid 0 ?
roottraveller

@roottraveller не обов'язково, те, що з’являється, буде мати значення PID батьків, де виникла вилка.
slm

10

З вікі Ідентифікатор процесу :

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


6

Процес з pid 0- це планувальник,

Ідентифікатор процесу Опис:
0 Планувальник
1 Процес init
2 kflushd
3 kupdate
4 kpiod
5 kswapd
6 mdrecoveryd

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.