Jawaban pendek:
- Tidak, ini bukan proses
- Utas pengguna tidak di-root di init.
Init hanyalah proses pertama; itu tidak mengelola proses atau utas. Itu membuat beberapa, menggunakan fork syscalls kernel () dan exec.
Saya pikir Anda memiliki ide kotor tentang apa proses itu. itu tidak hanya berarti sedikit mengeksekusi kode. Ya, kernel dieksekusi sebelum init (dan boot loader bahkan sebelum itu). Tetapi 'proses' memiliki definisi spesifik:
- Berjalan di ruang pengguna
- Dijalankan dengan ID proses
- Banyak interaksi harus melalui kernel
- Semua sumber daya harus berasal dari kernel
- Perlu dijadwalkan oleh kernel
Jadi, begitu kernel diinisialisasi, ia menjalankan init, yang kemudian memunculkan proses apa pun yang dikatakan konfigurasi lain.
Sejauh # 2, semua hal-hal kernel, well, di dalam kernel. Pikirkan kernel sebagai area kode yang luas. Sekali lagi, bukan proses, tetapi gumpalan kode besar. Bagian-bagian dari kernel menangani manajemen memori, bagian-bagiannya dengan bagian penjadwalan itu sendiri (seperti driver, dll.), Dan bagian-bagiannya dengan proses penjadwalan.
Kernel tidak benar-benar berperilaku seperti proses sama sekali. Itu tidak dijadwalkan, itu berjalan atas nama proses (disebut konteks proses atau konteks pengguna), atau berjalan sebagai hasil dari interupsi atau pengecualian (disebut konteks interrupt).
Yang mengatakan, kernel Linux memunculkan thread kernel untuk melakukan beberapa tugas, atau untuk menghindari menjalankan sesuatu pada konteks interupsi terlalu lama (itulah yang dilakukan thread ksoftirqd, menghindari latensi berlebihan yang dapat menyebabkan mis: menjatuhkan audio, ...) .
Anda dapat melihat utas kernel pada output dari
ps
perintah. Mereka mudah diidentifikasi: nama mereka di antara tanda kurung. Beberapa dari mereka menjalankan satu instance per CPU, CPU diidentifikasi dengan angka setelah slash, jadi [ksoftirqd / 0] adalah instance dari ksoftirqd pada CPU 0.sumber
Ada konsep dalam kernel mikro di mana berbagai bagian dari kernel memang proses dengan sentinel primer kebanyakan hanya mengelola IPC.
Linux - baik atau buruk - bukan sistem kernel mikro.
sumber
Tidak, ini bukan ... Kernel (dan ekstensi kernel) langsung dimuat ke dalam memori. Jika ada kode yang tidak aman di kernel, tidak ada yang menghalangi dan masalah besar.
Selain itu, kernel pada dasarnya mengeksekusi / beralih antar proses. Jelas sesuatu yang benar-benar menjalankan proses tidak akan menjadi proses itu sendiri.
(tl; dr 1. no 2. bagian dari kernel / ekstensinya)
sumber
ninjalj menulis: "Kernel sama sekali tidak berperilaku seperti sebuah proses. Itu tidak dijadwalkan,"
Nah, ada proses idle (pada dasarnya pid 0, meskipun tidak ditampilkan di mana saja) yang dijadwalkan dan selalu dalam kondisi runnable.
sumber
Sumber: https://courses.cs.washington.edu/courses/cse351/19su/lectures/18/CSE351-L18-processes_19su.pdf , halaman 36
sumber