Now Reading
Linux 6.1 qua nächster Langzeit-Kernel erschienen

Linux 6.1 qua nächster Langzeit-Kernel erschienen

Linux 6.1 als nächster Langzeit-Kernel erschienen

[ad_1]

Nachdem dieser Vorgänger Linux-Kernel 6.0 ein Wartungs-Release war, stellt dieser neue Kernel 6.1 die Weichen pro die Zukunft. Mittel- solange bis langfristig wird Kernel-Funktionsvielfalt nicht mehr nur in Kohlenstoff, sondern gleichfalls in Rust programmiert werden können. Neue Möglichkeiten beim Durchstöbern von Fehlern im Kernelspace und ein neues Swap-Management setzen neue Akzente.

Die wohl größte Neuerung in Linux 6.1 ist dieser Einzug von Rust. Schon wenige Jahre wurde hinter den Kulissen gefeilt und gehämmert, um den Kernel pro die aufstrebende Programmiersprache gesund zu zeugen. So soll es zukünftig möglich sein, nicht nur Module in Kohlenstoff zu programmieren, sondern gleichfalls in Rust.

Jener aktuelle Stand erlaubt es bislang lediglich, ein sehr einfaches Beispielmodul zu kompilieren, laden und freisprechen. Linus Torvalds wollte im ersten Schritttempo lediglich ein einfaches “Hello, world!”. Andere und vor allem sinnvolle Module sind damit in Rust im aktuellen Kernel nicht möglich. Ungeachtet gibt dieser neue Kernel verschmelzen ersten Einblick, wie die Integration von Rust erfolgt und welche Herausforderungen gemeistert werden wollen.

Typischerweise pro den Linux-Kernel relativ die Rust-Integration bestimmte Versionen: Ein erfolgreicher Zusammenbau von Rust in den Kernel garantieren nur dies (ältere) Rust 1.62.0 und bindgen 0.56.0. Wer dies Wagnis mit neueren Versionen eingehen möchte, dem quittiert dieser Kernel-Konfigurationsprozess dieses mit einer Warnmeldung. Ein Aussperrung erfolgt jedoch nicht.

Neben dem im Weg verfügbaren Rust und bindgen ist dieser Quellcode dieser Rust-Standard-Library nötig, da im Zuge dieser Kernel-Build-Prozesses eigene Versionen dieser Crates (Rust-Modul) core und alloc erstellt werden. Liegen die Werkzeuge und dieser Quelltext nicht vor, deaktiviert dieser Kernel-Konfigurationsprozess stillschweigend die Rust-Unterstützung. Die Rust-Vorkaufsrecht in “make menuconfig” verschwindet kurzerhand.

Wer Rust zu den vorgegebenen Versionen normiert einbinden möchte, kann selten gen die Pakete seiner Linux-Distribution zurückgreifen. Es empfiehlt sich jetzt, Rust in dieser passenden Version übrig rust-lang.org zu installieren. Voraussichtlich werden die Linux-Distributoren später Softwarepakete pro die Rust-Integration bewilligen.

Die Rust-Integration ist im Zusammenhang Weitem nicht vollwertig. Im Wesentlichen ist nur verfügbar, welches qua minimale Stützpunkt pro dies Beispielmodul nötig ist. Dies Zusammenführen von Kohlenstoff und Rust im Kernel stellt noch immer eine Herausforderung dar. Die im Kernel gewachsenen Strukturen und Mechanismen sind gen die Möglichkeiten und Eigenheiten von Kohlenstoff ausgelegt. Zwar ist dies Zusammenspiel von Rust und Kohlenstoff mithilfe von bindgen im Userspace schon seit dieser Zeit den Kindertagen von Rust möglich. Die Kernel-API stellt Rust jedoch vor ganz neue Herausforderungen.

Namentlich merklich zeigen dies Strukturen in dieser Kernel-API, die Zeigestock gen Funktionen enthalten. Ein Klassiker ist die Kohlenstoff-struct file_operations, die gen Funktionen eines Treibers verweist. In der Regel kann jene gleichfalls Rust mit “traits” darstellen. In der Tat verwendet dieser Kernel hier gerne Nullzeiger, wenn die betreffende Operation vom Viehtreiber nicht implementiert ist. Jener Kohlenstoff-Identifikator des Kernels erkennt jene Nullzeiger und führt an den betreffenden Stellen stattdessen Default-Operationen aus. Rust versucht derartige Nullzeiger-Konstruktionen zu vermeiden, welches zusätzlichen Aufwendung beim Einbinden von Rust in den Kernel erzeugt. Jener Linux-Kernel sieht hierfür ein komplexes Makro #[vtable] vor, um Rust in diesem Zähler möglichst geschmeidig Kernel-kompatibel zu zeugen.

Da Torvalds in Linux 6.1 nur ein “Hello, world!”-Protest wollte, sind jene nutzbringenden Konstrukte erst pro 6.2 vorgesehen. Die Lücke zwischen Protest und nutzbarer Rust-Umgebung wird ein Patch-Set des Entwicklers Miguel Ojeda in 6.2 im Prinzip schließen. Solange bis die ersten Viehtreiber qua Rust-Identifikator in den Kernel Einfluss besitzen, werden jedoch noch wenige Releases kommen und umziehen.

Programme können gen modernen Systemen mit Linux mehr Kurzspeicher verwenden qua physisch vorhanden ist. Wird dieser “echte” Speicher konzis, schiebt Linux Information aus dem Kurzspeicher in den Swap, darum gen die Harddisk. Zwischen dieser Fundus, welches in den Swap umziehen soll, nutzt die Speicherverwaltung von Linux den LRU-Konzept (Least Recent Used). Es nutzt zwei Warteschlangen von Speicherseiten (Pages). Eine mit den aktiven Pages, darum jene, die zuletzt verwendet wurden. Und eine mit den inaktiven Speicherseiten, von denen dies System “glaubt”, sie seien nicht in Gebrauch. Wird gen eine inaktive Page zugegriffen, wandert sie zu den aktiven Pages. Braucht dies System Speicher, werden die inaktiven Pages ihrer Reihenfolge nachdem zu Swap-Kandidaten.

Dieser Konzept erzielt in dieser Realität nicht immer die besten Ergebnisse. Zum Beispiel können so wenige Pages in einem ineffizienten Tanz zwischen inaktiven und aktiven Pages durchrotieren. Linux 6.1 verspricht mit dem Multi-Generational LRU (MGLRU) eine verbesserte Strategie. Statt zwei Listen bündelt dies System Pages in mehrere Schichten von Listen, Generationen genannt. Darin hält dies System straff, zu welchem Zeitpunkt eine Page zuletzt verwendet wurde. Hierzu scannt dies System die Pages regelmäßig. Welches im Zusammenhang wiederholten Scans schon “quicklebendig” war, wandert eine Generation höher. Welches nicht im Zugriff war, geht Richtung älteste Generation. Braucht dies System Speicher, findet es Swap-Kandidaten in dieser ältesten Generation.

Zudem arbeitet MGLRU beim Scan übrig die Prozess-Page-Tabellen, nicht schnell mit dem physischen Speicher. Dies erhoben laut Yu Zhao, dem Entwickler von MGLRU, die Vorteil. MGLRU ist zur Vorsicht mit einem “Kill-Switch” versehen. Zusätzlich /sys/kernel/mm/lru_gen/enabled lässt sich dies neue Memory-Management deaktivieren, sollte es Probleme im System konfektionieren.

[ad_2]
View Comments (0)

Leave a Reply

Your email address will not be published.

Scroll To Top