Melihat sumber strace
saya menemukan penggunaan bendera klon CLONE_IDLETASK
yang dijelaskan di sana sebagai:
#define CLONE_IDLETASK 0x00001000 /* kernel-only flag */
Setelah melihat lebih dalam ke dalamnya saya menemukan bahwa, meskipun flag itu tidak tercakup di man clone
dalamnya sebenarnya digunakan oleh kernel selama proses boot untuk membuat proses idle (semuanya harus memiliki PID 0) untuk setiap CPU pada mesin. yaitu mesin dengan 8 CPU akan memiliki setidaknya 7 (lihat pertanyaan di bawah) proses seperti "berjalan" (catatan kutipan).
Sekarang, ini membawa saya pada beberapa pertanyaan tentang apa sebenarnya proses "idle" itu lakukan. Asumsi saya adalah bahwa ia mengeksekusi operasi NOP terus menerus sampai jangka waktunya berakhir dan kernel memberikan proses nyata untuk menjalankan atau menetapkan proses idle sekali lagi (jika CPU tidak sedang digunakan). Namun, itu dugaan lengkap. Begitu:
Pada mesin dengan, katakanlah, 8 CPU akankah 7 proses diam tersebut dibuat? (dan satu CPU akan dipegang oleh kernel itu sendiri sementara tidak ada pekerjaan userspace melakukan?)
Apakah proses idle benar-benar hanya aliran operasi NOP yang tak terbatas? (atau loop yang melakukan hal yang sama).
Apakah penggunaan CPU (katakanlah
uptime
) hanya dihitung dengan berapa lama proses idle berada pada CPU dan berapa lama tidak ada selama periode waktu tertentu?
PS Kemungkinan besar pertanyaan ini disebabkan oleh fakta bahwa saya tidak sepenuhnya memahami cara kerja CPU. yaitu saya mengerti perakitan, kerangka waktu dan interupsi tetapi saya tidak tahu bagaimana, misalnya, CPU dapat menggunakan energi lebih banyak atau lebih sedikit tergantung pada apa yang sedang dieksekusi. Saya akan berterima kasih jika seseorang juga dapat menjelaskan hal itu kepada saya.