Proses mana yang memiliki PID 0?

55

Saya mencari proses yang dimulai di Linux yang memiliki proses ID 0. Saya tahu initmemiliki PID 1, yang merupakan proses pertama di Linux, apakah ada proses dengan PID 0?

pengguna9744
sumber
1
ID Proses O adalah SWAPPER. ID Proses 1 adalah init.
Ankur Jain

Jawaban:

51

Dari halaman wikipedia berjudul: Pengidentifikasi proses :

Ada dua tugas dengan ID proses yang dibedakan secara khusus: swapper atau sched memiliki ID proses 0 dan bertanggung jawab untuk paging , dan sebenarnya merupakan bagian dari kernel daripada proses mode pengguna normal . ID Proses 1 biasanya merupakan proses init yang terutama bertanggung jawab untuk memulai dan mematikan sistem. Awalnya, ID proses 1 tidak secara khusus dicadangkan untuk init oleh tindakan teknis apa pun: ID proses itu hanya sebagai konsekuensi alami sebagai proses pertama yang dilakukan oleh kernel. Sistem Unix yang lebih baru biasanya memiliki komponen kernel tambahan yang terlihat sebagai 'proses', dalam hal ini PID 1 secara aktif dicadangkan untuk proses init untuk menjaga konsistensi dengan sistem yang lebih lama.

Anda dapat melihat bukti ini jika Anda melihat PID induk (PPID) dari initdan 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]

kthreaddadalah daemon utas kernel. Semua kthreads diambil dari utas ini. Anda dapat melihat bukti ini jika Anda melihat proses lain menggunakan psdan melihat siapa PPID mereka:

$ 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]

Perhatikan mereka semua 2.

slm
sumber
Jadi jika PID 0 adalah swapper, lalu apa kswapd[0-9]*, yang pada sistem saya memiliki PID 52 saat ini? Tampaknya juga bertanggung jawab untuk paging.
Ruslan
1
@Ruslan - jika Anda telah mengikuti pertanyaan, silakan tanyakan di situs utama, komentar tidak dimaksudkan untuk ini. Referensi pertanyaan ini dalam pertanyaan baru Anda.
slm
baik, tetapi ketika kita membuat proses baru menggunakan proses fork child dapatkan pid 0 ?
roottraveller
@roottraveller belum tentu, apa pun PID orang tua adalah tempat garpu terjadi akan muncul.
slm
10

Dari Process Identifier wiki:

Ada dua tugas dengan ID proses yang dibedakan secara khusus: swapper atau sched memiliki ID proses 0 dan bertanggung jawab untuk paging, dan sebenarnya merupakan bagian dari kernel daripada proses mode pengguna normal.

cuonglm
sumber
6

Proses dengan pid 0adalah penjadwal,

ID Proses Keterangan:
0 Penjadwal
1 Proses init
2 kflushd
3 kupdate
4 kpiod
5 kswapd
6 mdrecoveryd

pengguna78115
sumber