17 Punkte von GN⁺ 2024-06-08 | 3 Kommentare | Auf WhatsApp teilen
  • Wenn man im Web nach PID 0 sucht, findet man meist falsche Informationen.
  • Bei der Suche nach PID 0 mit Google, Bing, DuckDuckGo und Kagi war es schwierig, eine korrekte Antwort zu finden.
  • Falsche Informationen aus Wikipedia haben sich 16 Jahre lang verbreitet, und viele Websites haben sie zitiert.

Die Geschichte von PID 0

  • PID 0 ist an Scheduling und Energieverwaltung beteiligt und hat nichts mit Paging zu tun.
  • PID 0 fungiert als Scheduler, der läuft, wenn ein CPU-Kern nichts zu tun hat.
  • In frühem Unix führte PID 0 speicherverwaltungsbezogene Aufgaben aus, in modernem Unix jedoch nicht mehr.

Die tatsächliche Rolle von PID 0

  • PID 0 startet den Kernel und übernimmt danach die Verwaltung der CPU-Kerne.
  • Im Linux-Kernel ist PID 0 durch die Funktion do_idle implementiert.
  • Auch in anderen Kerneln wie FreeBSD erfüllt PID 0 eine ähnliche Rolle.

Die Verwirrung um PID 0

  • Im Linux-Kernel und im Userspace hat PID eine unterschiedliche Bedeutung.
  • Im Kernel stellt task_struct einen einzelnen Thread dar, und PID bedeutet die Thread-ID.
  • Im Userspace steht PID für einen Prozess und entspricht dabei der Thread-Gruppen-ID.

PID 0 in Multicore-Systemen

  • In Multicore-Systemen gibt es für jeden CPU-Kern einen Idle-Thread.
  • Diese Idle-Threads gehören alle zur Thread-Gruppe 0.
  • Im Userspace werden sie als PID 0 erkannt.

Fazit

  • PID 0 existiert und ist der Thread, der den Kernel startet.
  • PID 0 führt die anfängliche Kernel-Initialisierung durch und wechselt anschließend in einen Idle-Thread.
  • PID 0 hat nichts mit Speicherverwaltung zu tun.
  • In Multicore-Systemen gibt es pro Kern einen Idle-Thread, und sie alle gehören zur Thread-Gruppe 0.

Meinung von GN⁺

  • Die Bedeutung korrekter Informationen: Falsche Informationen haben sich über lange Zeit verbreitet, sodass viele Menschen sie als Tatsache akzeptiert haben. Das erinnert erneut daran, wie wichtig die Bereitstellung korrekter Informationen ist.
  • Die Komplexität des Kernels: Der Initialisierungsprozess des Kernels und die Scheduling-Mechanismen sind sehr komplex, und ihr Verständnis ist für Softwareingenieure äußerst hilfreich.
  • Die Verwirrung um PID: Da PID im Kernel und im Userspace Unterschiedliches bedeutet, ist es wichtig, dies klar zu verstehen.
  • Multicore-Systeme: Das Verständnis der Rolle von PID 0 in modernen Multicore-Systemen hilft bei der Optimierung der Systemleistung.
  • Der Einfluss von Wikipedia: Dies zeigt, wie stark Informationen aus Wikipedia viele Websites beeinflussen. Es unterstreicht, wie wichtig die Aktualisierung korrekter Informationen ist.

3 Kommentare

 
thinkpad 2024-07-17

Da erinnere ich mich an den Vorfall von damals, als dieser Agent kill -9 0 ausgeführt hat ...

 
whizkyu 2024-06-09

Interessant.

 
GN⁺ 2024-06-08
Hacker-News-Kommentare
  • Aus archäologischer Sicht interessant: Die Aussage „pid 0 ist Teil des [Linux]-Kernels“ ist beim Kernel-Debugging nützlich. Aus Sicht eines User-Space-Prozesses bedeutet „pid 0“ „ich selbst“.
  • Überheblichkeit im Internet: Viele Menschen im Internet treten bei Dingen, die sie zu wissen glauben, mit übertriebener Sicherheit auf. Ein so selbstsicherer Ton sollte nur von Experten verwendet werden.
  • PID 0 unter Windows: In NT-basiertem Windows ist PID 0 der „System Idle Process“ und damit ähnlich wie unter Linux. In DOS-basiertem Windows gibt es keine PID 0, und die Idle-Loop befindet sich in VMM32.
  • PID 0 in akademischem Unix: In den meisten akademischen Unix-Systemen hängt PID 0 mit dem Speichersubsystem (Paging) zusammen. Linux besitzt das Konzept von PID 0 nicht exklusiv.
  • Fehlerhaftes Allgemeinwissen: „Allgemeinwissen“ ist oft falsch. Der richtige Weg ist, den Kernel-Quellcode zu prüfen.
  • Eine dritte Verwendung von PID 0: Unter Linux gibt getppid den Wert 0 zurück, wenn sich der Elternprozess in einem anderen PID-Namespace befindet.
  • Empfehlung für weiteres Material: Wenn dich der frühe Kernel-Bootvorgang interessiert, ist diese hervorragende Ressource lesenswert. Linux Insides
  • Frage zum Befehl ps -aux: Wenn man den Befehl „ps -aux“ eingibt, werden auch Informationen über andere Benutzer angezeigt. Sollten diese Informationen nicht standardmäßig privat sein?
  • Interessante Verwendung von kill 0: Es wurde ein Skript geteilt, das kill 0 nutzt, um einen Befehl für eine begrenzte Zeit auszuführen und anschließend zu beenden.
  • Wiederverwendung von PID 0 im v4-Code: Es ist interessant, dass der v4-Code pid 0 wiederverwendet. Ich erinnere mich daran, dass wir dieses Problem Mitte der 80er Jahre im Kernel lösen mussten.