Der Endpunkt der Linux-Unterstützung für Echtzeit-Preemption
- Die Arbeiten zur Ergänzung von Linux um Echtzeit-Unterstützung begannen 2004 und befinden sich nun in der Schlussphase.
- Ziel der Echtzeit-Preemption ist es, dass Prozesse mit der höchsten Priorität mit minimaler Verzögerung ausgeführt werden können; dafür wird der Kernel in möglichst vielen Situationen präemptierbar gemacht.
- Diese Arbeit führte dazu, dass zentrale Teile des Kernels neu geschrieben wurden, und sie bringt Vorteile, die über Echtzeit-Anwendungsfälle hinausgehen.
Lösung des printk()-Problems
- Die Funktion
printk(), die im Kernel verwendet wird, um Nachrichten an die Systemkonsole und ins Log zu senden, arbeitet synchron und kehrt erst zurück, wenn die Nachricht an alle konfigurierten Ziele übertragen wurde.
- Echtzeit-Entwickler verlagerten die
printk()-Ausgabe in einen separaten Thread, um sie asynchron zu machen, doch das war nur eine Übergangslösung.
- Seit 2018 wird ernsthaft am
printk()-Problem gearbeitet; mit rund 300 Patches nähert sich die Lösung, auch wenn noch einige komplexe Probleme offen sind.
Ausblick auf die Mainline-Integration des Echtzeit-Preemption-Codes
- Es wurde die Hoffnung geäußert, dass der verbleibende Teil des Echtzeit-Preemption-Codes noch vor seinem 20-jährigen Jubiläum Ende 2024 in die Mainline integriert wird.
- Am
printk()-Code selbst gab es zuletzt keine Änderungen, aber der Handover-Code wurde so angepasst, dass Konsolentreiber einzeln aktualisiert werden können.
- Der Code wurde so geändert, dass wichtige Nachrichten vollständig in den Nachrichtenpuffer kopiert werden, bevor die erste Zeile ausgegeben wird; außerdem werden Nachrichten zuerst auf einer sicheren Konsole protokolliert, um Systemabstürze durch fehlerhafte Konsolentreiber zu verhindern.
Meinung von GN⁺
- Die Arbeiten zur Ergänzung des Linux-Kernels um Echtzeit-Preemption-Unterstützung sind nahezu abgeschlossen und werden Systemen, die Echtzeitverarbeitung benötigen, große Vorteile bringen.
- Die Asynchronisierung der
printk()-Funktion verbessert die Reaktionsfähigkeit des Systems und spielt eine wichtige Rolle beim Erreichen der Ziele der Echtzeit-Preemption.
- Dieser Artikel zeigt einen wichtigen Fortschritt in der Entwicklung des Linux-Kernels und bietet interessante Inhalte für alle, die sich für Kernel-Entwicklung interessieren.
1 Kommentare
Hacker-News-Meinungen
Vorteile des QNX-Mikrokernels
Probleme von Linux bei der Echtzeitverarbeitung
Die Logging-Funktion des Kernels und reale Anwendungsfälle
Austauschbarkeit von Echtzeit-Hardware-/Software-Kombinationen
Die Unterscheidung zwischen „harten“ und „weichen“ Echtzeitanwendungen
Echtzeitverarbeitung im Linux-Kernel und die Grenzen der Hardware
Probleme mit synchronem Logging
Methoden zur Gewährleistung der Reaktionsfähigkeit eines bestimmten Prozesses
Echtzeitpräemption in Linux und frühere Erfahrungen
Auswirkungen auf normale Nutzer