2013-08-01 5 views
15

Ich wollte wissen, was ist kthread und warum es keinen Speicher und hat keine offenen Dateien. Ich habe einen Code geschrieben, der einfach die PID der laufenden Prozesse in einem übergeordneten Kindbaumformat zusammen mit einigen zusätzlichen Informationen wie verwendete VMZ, RSS, Threads und Openfiles ausgibt. Alle Kinder der PID 2 mit dem Namen kthreadd hatten nicht die VmSize und VmRSS in der Datei /proc/[pid]/status. Die /proc/[pid]/fd enthielt keine geöffneten Dateien.Was ist KThreadd Prozess und Kinder und wie unterscheidet es sich von Init und Kinder

Was sind diese Prozesse, wie unterscheiden sie sich von normalen Prozessen, die von init (PID 1) erzeugt werden. Ich lese (in einem alten Buch), dass der Swapper init PID1 erzeugen wird und alle anderen Prozesse Kinder von PID 1 sind. Definitiv gibt es eine andere Architektur dahinter (Linux Kernel 3.7.10.1-16), die ich nicht kenne Eine andere Frage ist, warum PID 2 ein Kind von PID 0 ist und kein Kind von PID 1 ist.

+0

Ich denke, das Sie .... http helfen können: // Unix. stackexchange.com/questions/13290/init-process-ancestoro-of-all-processes – Rex

+0

Diese Antwort in unix.stackexchange Antwortet nicht im Detail. Ich benötige genauere Informationen. – phoxis

Antwort

17

Kernel-Threads sind keine Kinder von init, da sie vor allen Userspace-Prozessen gestartet werden können.

Sie werden normalerweise zum Verwalten von Hardware verwendet, weshalb sie direkt vom Kernel verarbeitet werden und hohe Priorität haben.

Damit ein Prozess Kind von Init sein kann, muss er aus Init kloniert werden und Kthreads sind das nicht, deshalb ist ihre Eltern-PID 0, was "Niemand" bedeutet.

Alle Prozesse aus der Anwender haben typischerweise eine PID überlegen bis 1000, nur Threads Kernel erlaubt PID zu haben schlechter als 1000.

+7

Danke für die Antwort, aber können Sie mir ein paar Hinweise auf eine Dokumentation geben? – phoxis

Verwandte Themen