Я хотел знать, что такое kthread
и почему он не требует никакой памяти и не имеет открытых файлов. Я написал код, который просто напечатает PID текущих запущенных процессов в родительском древовидном формате вместе с некоторой дополнительной информацией, например, с использованием VMZ, RSS, потоков, openfiles. Все дочерние элементы PID 2 с именем kthreadd
не содержали VmSize и VmRSS в файле /proc/[pid]/status
. /proc/[pid]/fd
не содержал открытых файлов.
Каковы эти процессы, как они отличаются от обычных процессов, порожденных init (PID 1). Я прочитал (в старой книге), что swapper будет порождать init PID1, а весь другой процесс - это дети PID 1. Определенно, за этим стоит другая архитектура (ядро Linux 3.7.10.1-16), которое я не знаю, поэтому другой вопрос - почему PID 2 является дочерним элементом PID 0 и не является дочерним элементом PID 1.