GNU/Linux >> Belajar Linux >  >> Linux

Linux – Proses Init:Leluhur Semua Proses?

Saya selalu belajar bahwa proses init adalah nenek moyang dari semua proses. Mengapa proses 2 memiliki PPID 0?

$ ps -ef | head -n 3
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 May14 ?        00:00:01 /sbin/init
root         2     0  0 May14 ?        00:00:00 [kthreadd]

Jawaban yang Diterima:

Pertama, "leluhur" tidak sama dengan "orang tua". ancestor dapat menjadi parent dari parent parent ... parent parent, dan kernel hanya melacak satu level.
Namun, ketika sebuah proses mati, anak-anaknya diadopsi oleh init, jadi Anda akan melihat banyak proses yang parent-nya 1 pada sistem biasa.

Sistem Linux modern juga memiliki beberapa proses yang mengeksekusi kode kernel, tetapi dikelola sebagai proses pengguna, sejauh menyangkut penjadwalan. (Mereka tidak mematuhi aturan manajemen memori yang biasa karena mereka menjalankan kode kernel.) Semua proses ini dihasilkan oleh kthreadd (init dari utas kernel). Anda dapat mengenalinya melalui ID proses induknya (2) atau, biasanya, dengan fakta bahwa ps daftar mereka dengan nama di antara tanda kurung siku atau dengan fakta bahwa /proc/2/exe (biasanya tautan simbolis ke proses yang dapat dieksekusi) tidak dapat dibaca.

Proses 1 (init ) dan 2 (kthreadd ) dibuat langsung oleh kernel saat boot, jadi mereka tidak memiliki induk. Nilai 0 digunakan di bidang ppid mereka untuk menunjukkan hal itu. Pikirkan 0 sebagai arti "kernel itu sendiri" di sini.

Linux juga memiliki beberapa fasilitas untuk kernel untuk memulai proses pengguna yang lokasinya ditunjukkan melalui parameter sysctl dalam keadaan tertentu. Misalnya, kernel dapat memicu peristiwa pemuatan modul (misalnya ketika perangkat keras baru ditemukan, atau ketika beberapa protokol jaringan pertama kali digunakan) dengan memanggil program di kernel.modprobe nilai sysctl. Ketika sebuah program membuang inti, kernel memanggil program yang ditunjukkan oleh kernel.core_pattern jika ada.


Linux
  1. Linux – Proses “subreaper”?

  2. Proses UNIX / Linux:C fork() Fungsi

  3. Linux:Temukan dan Bunuh Proses Zombie

  1. 30 Latihan Proses Linux Untuk Sysadmin

  2. Bagaimana cara menghitung pemanfaatan CPU dari suatu proses &semua proses anaknya di Linux?

  3. Apakah utas kernel Linux benar-benar proses kernel?

  1. Linux – Mengapa Kernel Tidak Dapat Menjalankan Init?

  2. UNIX / Linux:3 Cara Mengirim Sinyal ke Proses

  3. Mengelola Proses Di Ubuntu Linux