Original-URL des Artikels: http://www.golem.de/news/linux-3-8-ende-fuer-die-386er-1302-97625.html    Veröffentlicht: 19.02.2013 04:56

Linux 3.8

Ende für die 386er

Der Linux-Kernel 3.8 wird keine 386er Prozessoren mehr unterstützen. Der Code wurde entfernt. Viele Änderungen wurden am Basissystem vorgenommen, darunter am Scheduler.

Der Linux-Kernel 3.8 verabschiedet sich von Intels 386-CPU-Architektur. Kernel-Hacker Ingo Molnar hat die Änderungen eingereicht, nicht ohne augenzwinkernd darauf hinzuweisen, dass damit 386-DX33-Rechner von 1991 nicht mehr mit einem aktuellen Linux-Kernel laufen werden. Zwar hat Linux-Gründer Linus Torvalds die ersten Versionen von Linux darauf entwickelt. Er sei aber nicht sentimental und trauere dem Code nicht nach, im Gegenteil: "Gut, dass wir ihn los sind", schreibt er und hat die Änderungen übernommen, die aus 56 Einfügungen und 425 Entfernungen bestehen.

Tatsächlich erleichtert dieser Schritt die Arbeit der Kernel-Entwickler enorm, denn Änderungen am SMP-Code mussten auch immer an den 386-Code angepasst werden. 486 und aktuellere x86-32-CPUs werden vom Linux-Kernel weiterhin unterstützt.

Gemeinsamer Speicher für Nullen

Die bereits eingeführten Prozess-Namespaces konnten nur für Prozesse verwendet werden, die Root-Rechte haben. Künftig lassen sich Namespaces auch mit nicht privilegierten Prozessen nutzen. Namespaces werden unter anderem von Einhängepunkten, der Interprozesskommunikation (IPC), Prozess-IDs (PIDs) oder dem Netzwerk-Stack bereitgestellt.

Die als Huge Pages bekannten Speicherseiten fordern meist mehr Speicher an, als sie derzeit benötigen und referenzieren Teile davon mit Null (Zero Pages). Der Kernel spart Speicher, indem er selbst eine solche Huge Zero Page anlegt, auf den andere Huge Pages gemeinsam verweisen können. Diese Funktion gab es bislang nur für kleinere Speicherseiten.

CPU0 mit Hotplugging

Zu den neu unterstützten CPUs gehört auch Samsungs Exynos 5440 mit Cortex-A15-Kernen, die in Samsungs nächstem großem Smartphone Galaxy S4 zum Einsatz kommen soll. Außerdem lässt sich Linux 3.8 mit den SoCs BCM281XX von Broadcom und A1X von Allwinner nutzen. Durch Änderungen im x86-Code kann künftig auch die CPU0, die zum Start des Betriebssystems benötigt wurde, im laufenden Betrieb ein- und ausgeschaltet werden (Hotplugging).

Für eine Leistungssteigerung aus Mehrkernsystemen mit Numa (Non-Uniform Memory Access) soll der als Balancenuma bezeichnete Patch dienen. Er soll dafür sorgen, dass Prozesse auf den Arbeitsspeicher des Prozessors zugreifen können, auf dem sie laufen. Noch handelt es sich nur um eine erste Umsetzung, weitere Patches sollen in Linux 3.9 für eine optimale Zuweisung sorgen. Vor allem müssen aber weitere Ansätze wie Autonuma und Numacore berücksichtigt werden. Auf Lwn.net lässt sich die Diskussion um die verschiedenen Numa-Patches nachlesen.

Scheduling mit weniger Latenzen

Das Scheduling wurde weiter optimiert, indem die Sperren durch RCU (Read-Copy-Write) überarbeitet wurden. Nicht mehr benötigte Datenstrukturen, die durch RCU modifiziert wurden, müssen weiterhin verfügbar bleiben (Callbacks). Bislang kümmert sich Softirq darum. Künftig sollen sie als Threads eine Zeit lang aufgehoben werden. Dadurch sollen Latenzen und Jitter verringert werden.

Der Scheduler in Linux 3.8 kann die Last, die Prozesse verursachen, genauer berechnen. Das soll nicht nur das Load-Balacing verbessern, sondern dem Kernel auch die Möglichkeit geben, viele kleinere Prozesse auf weniger CPUs zu verteilen. Das Devfreq-Subsystem kann Hardware in den Idle- oder Suspended-Modus unabhängig vom restlichen System versetzen, sofern die Geräte das unterstützen.

Weniger Speicher für Prozesse

Über den Cgroup-Controller zur Speicherverwaltung lässt sich künftig der Speicher begrenzen, der für die Verwaltung von Prozessen verwendet wird. Dadurch haben schlecht programmierte oder maliziöse Anwendungen keine Möglichkeit, sich rekursiv zu starten und so das System zu überlasten (Forkbomb). Außerdem können Anwendungen über die Schnittstellen Mmap und SysV IPC die Größe der angeforderten Hugemaps im Arbeitsspeicher selbst bestimmen.

Dem Kernel 3.8 liegt ein Diagnosewerkzeug bei, mit dem sich die Leistungsaufnahme von Intel-Prozessoren auslesen lässt. Das Turbostat genannte Tool ermittelt den Verbrauch in GPU- und CPU-Kernen oder den eines ganzen Prozessors.

Ballooning für Hyper-V

Für AArch64 gibt es weitere Verbesserungen. Der 64-Bit-Code für ARM-CPUs erhält zumindest erste Änderungen für eine künftige Unterstützung durch die Kernel Virtual Machine (KVM). Microsofts Hyper-V-Treiber kann künftig mit Ballooning umgehen. Das soll die Nutzung des Arbeitsspeichers durch unter Linux virtualisierte Windows-Systeme optimieren.

Besseres Dateisystem für Flashspeicher

Linux 3.8 unterstützt erstmals das von Samsung für Flash-Datenträger entwickelte Dateisystem F2fs (Flash-Friendly File System). Es lässt sich auf Speichermedien nutzen, die ein Flash Translation Layer (FTL) verwenden, etwa SSDs, USB-Sticks oder Speicherkarten. Mit FTL kann ein Datenträger als SSD angesprochen werden. Außerdem beschreibt FTL Speichermedien gleichmäßig und sorgt so für eine längere Lebensdauer.

Zu den weiteren Neuerungen gehört eine Datenverifizierung im Dateisystem XFS. Btrfs erhält die als Replace bezeichnete Funktion, mit der Daten zügiger von einem Medium auf ein anderes übertragen werden können. Außerdem kann Btrfs mehrere CPUs nutzen und die Latenzen wurden bei Fsync verringert. Sowohl Ext4 als auch Tmpfs nutzen Lseek, bei dem etwa leere Bereiche von Sparse-Dateien erkannt werden, was beispielsweise den Speicherbedarf bei Backups verringert. Die dazu verwendeten Optionen SEEK_HOLE und SEEK_DATA wurden erstmals von ZFS-Entwicklern umgesetzt.

Sicherheit durch File-Discriptor

In Chrome OS sollen aus Sicherheitsgründen Kernel-Module nur dann geladen werden, wenn sie sich auf der verschlüsselten Root-Partition befinden. Gegenwärtig bietet der Aufruf init_module keine Möglichkeit, die Herkunft des Moduls zu verifizieren. Eine Prüfung per Signatur ist zu langsam, deshalb reichte Kees Cook einen Patch ein, der einen neuen Syscall einführt. Über einen File Discriptor kann damit beispielsweise der Ursprung der Datei verifiziert werden.

Der Code des Linux Control and Device Interface (Comedi) wurde ebenso deutlich entschlackt wie der USB-Stack, dessen EHCI-Treiber überarbeitet wurde. Das unter Windows 8 verwendete Multitouch-Protokoll wurde in Linux 3.8 umgesetzt.

DRM für Tegras

Für den Tegra 2 und den Tegra 3 gibt es ein DR-Modul (Direct Rendering Module) und somit erste Treiber für deren GPUs. Zwar bleibt der 3D-Blob noch Closed Source, aber immerhin gibt es jetzt 2D-Funktionen und Unterstützung für HDMI. Neben einigen kleinen Verbesserungen bringt der aktuelle Nouveau-Treiber Z-Kompressionen für GPUs von Nvidia. Außerdem werden Nvidias GK106-Chips unterstützt.

Der aktuelle Linux-Kernel 3.8 ist als Quellcode von der Webseite kernel.org erhältlich. Einen Überblick über alle Änderungen bietet kernelnewbies.org. Dort gibt es auch eine ausführliche Liste aller neuen Treiber.  (jt)


Verwandte Artikel:
Linux 3.8: Code für i386 wird ausgemistet   
(13.12.2012 10:03, http://www.golem.de/news/linux-3-8-code-fuer-i386-wird-ausgemistet-1212-96336.html)
UEFI: Secure Boot in Linux ohne Hibernation   
(29.01.2013 17:29, http://www.golem.de/news/uefi-secure-boot-in-linux-ohne-hibernation-1301-97237.html)
Mate-Desktop: Neue Funktionen für Gnome-2-Fork   
(03.04.2013 13:25, http://www.golem.de/news/mate-desktop-neue-funktionen-fuer-gnome-2-fork-1304-98497.html)
Linux Kernel: Torvalds schließt Merge-Fenster für Linux 3.9   
(04.03.2013 16:27, http://www.golem.de/news/linux-kernel-torvalds-schliesst-merge-fenster-fuer-linux-3-9-1303-97966.html)
Valve: Eigene Pakete für Steam-Box-Distro?   
(02.04.2013 15:21, http://www.golem.de/news/valve-eigene-pakete-fuer-steam-box-distro-1304-98471.html)

© 2014 by Golem.de