- Unter Linux sagen wir immer, dass der erste Prozess
init
(pid == 1) ist. Aber warum ist es nicht der Kernel (Startup), der das System einrichtet und deninit
Prozess erstellt ? Ist der Kernel ein Prozess? - Wir wissen, dass alle User-Space-Threads beim init-Prozess verwurzelt sind. Was ist dann mit Scheduler und anderen Kernel-Dingen wie Speicherverwaltung?
Grundsätzlich verwirrt mich die Struktur des Kernels. Wenn es sich um einen Prozess handelt, handelt es sich um einen einzelnen Prozess oder besteht er aus mehreren Prozessen?
Der Kernel verhält sich überhaupt nicht wirklich wie ein Prozess. Es wird nicht eingeplant, es wird entweder im Auftrag eines Prozesses (sogenannter Prozesskontext oder Benutzerkontext) oder als Ergebnis eines Interrupts oder einer Ausnahme (sogenannter Interruptkontext) ausgeführt.
Das heißt, der Linux-Kernel erzeugt Kernel-Threads, um einige Aufgaben auszuführen oder um zu vermeiden, dass etwas im Interrupt-Kontext zu lange ausgeführt wird. .
Sie können die Kernel-Threads in der Ausgabe des
ps
Befehls sehen. Sie sind leicht zu identifizieren: Ihr Name steht in Klammern. Einige von ihnen führen eine Instanz pro CPU aus. Die CPU wird durch eine Zahl nach einem Schrägstrich gekennzeichnet, sodass [ksoftirqd / 0] die Instanz von ksoftirqd auf CPU 0 ist.quelle
Es gibt Konzepte in Mikrokernen, bei denen verschiedene Teile des Kernels tatsächlich Prozesse sind, bei denen der primäre Sentinel meist nur IPC verwaltet.
Linux - egal ob gut oder schlecht - ist kein Mikrokernsystem.
quelle
Nein, es ist nicht ... Kernel (und Kernel-Erweiterungen) werden direkt in den Speicher geladen. Wenn es im Kernel unsicheren Code gibt, steht nichts zwischen ihm und großen Problemen.
Abgesehen davon führt der Kernel im Grunde genommen einen Wechsel zwischen Prozessen aus. Offensichtlich ist etwas, das Prozesse ausführt, kein Prozess.
(tl; dr 1. no 2. Teil des Kernels / seiner Erweiterung)
quelle
ninjalj schrieb: "Der Kernel verhält sich überhaupt nicht wirklich wie ein Prozess. Er wird nicht geplant."
Nun, es gibt den Leerlaufprozess (im Grunde PID 0, obwohl er nirgends angezeigt wird), der geplant ist und ungefähr immer in einem lauffähigen Zustand ist.
quelle
Quelle: https://courses.cs.washington.edu/courses/cse351/19su/lectures/18/CSE351-L18-processes_19su.pdf , Seite 36
quelle