2013-08-01 13 views
15

Chciałem wiedzieć, co to jest kthread i dlaczego nie zajmuje żadnej pamięci i nie ma otwartych plików. Napisałem kod, który po prostu wydrukuje PID aktualnie uruchomionych procesów w formacie drzewa rodzica rodzicielskiego wraz z dodatkowymi informacjami, takimi jak używane VMZ, RSS, wątki, pliki open source. Wszystkie dzieci PID 2 o nazwie kthreadd nie miały VmSize i VmRSS w pliku /proc/[pid]/status. /proc/[pid]/fd nie zawiera żadnych otwartych plików.Co to jest proces kthreadd i dzieci i jak to się różni od init i dzieci

Czym są te procesy, jak się różnią od normalnych procesów inicjowanych przez init (PID 1). Przeczytałem (w starej książce), że zamiennik zainicjuje init PID1 i wszystkie inne procesy są potomkami PID 1. Zdecydowanie istnieje inna architektura za tym (jądro Linuksa 3.7.10.1-16), którego nie znam, więc kolejnym pytaniem jest, dlaczego PID 2 jest dzieckiem PID 0 i nie jest dzieckiem PID 1.

+0

myślę, że to może pomóc .... http: // UNIX. stackexchange.com/questions/13290/init-process-ancestor-all-all-processes – Rex

+0

Ta odpowiedź w unix.stackexchange Nie odpowiada szczegółowo. Potrzebuję bardziej szczegółowych informacji. – phoxis

Odpowiedz

17

Gwinty jądra nie są elementami potomnymi init, ponieważ można je uruchomić przed wszystkimi procesami przestrzeni użytkownika.

Zazwyczaj są używane do zarządzania sprzętem, dlatego są obsługiwane bezpośrednio przez jądro i mają wysoki priorytet.

Dla procesu, który ma być dzieckiem init, musi zostać sklonowany z init, a Kthreads nie dlatego jego macierzysty PID ma wartość 0, co oznacza "nikt".

Wszystkie procesy przestrzeni użytkownika mają zazwyczaj lepsze PID 1000, tylko jądro wątki mogą mieć gorszy PID do 1000.

+7

Dziękuję za odpowiedź, ale czy możesz podać jakieś odniesienie do jakiejś dokumentacji? – phoxis

Powiązane problemy