Ist das Design des Linux-Kernels veraltet?

Ist das Design des Linux-Kernels veraltet?

Linux hat im Laufe der Jahre große Fortschritte gemacht und ist weit über das hinausgegangen, was es zu Beginn war. Ein Redditor hat sich kürzlich gefragt, ob Linux unter einem veralteten Kernel-Design leidet. Er stellte seine Frage im Linux-Subreddit und bekam einige interessante Antworten.

Ronis_BR hat den Thread mit folgenden Kommentaren gestartet:

Ich bin seit 2004 ein Linux-Benutzer. Ich weiß viel über die Verwendung des Systems, aber ich verstehe nicht zu viel darüber, was sich unter der Haube des Kernels befindet. Eigentlich hört mein Wissen darin auf, meinen eigenen Kernel zu kompilieren.

Ich möchte hier jedoch Informatiker fragen, wie veraltet der Linux-Kernel in Bezug auf sein Design ist. Ich meine, es wurde 1992 gestartet und einige Eigenschaften haben sich nicht geändert. Auf der anderen Seite denke ich, dass der Stand der Technik des OS-Kernel-Designs (falls vorhanden ...) sehr weit fortgeschritten sein sollte.

Kann festgestellt werden, in welchen Punkten das Design des Linux-Kernels im Vergleich zum Design von Windows-, MacOS- und FreeBSD-Kerneln weiter fortgeschritten ist? (Beachten Sie, dass ich Design meine, nicht welches besser ist. Zum Beispiel hat HURD ein großartiges Design, aber es ist ziemlich einfach zu sagen, dass Linux heute viel weiter fortgeschritten ist).

Mehr bei Reddit

Seine Linux-Redditoren antworteten mit ihren Gedanken zum Kernel-Design:

ExoticMandibles : "" veraltet "? Nein. Das Design des Linux-Kernels ist in Bezug auf das moderne Kernel-Design gut informiert. Es ist nur so, dass Entscheidungen getroffen werden müssen, und Linux hat sich für die traditionelle entschieden.

Die Spannung im Kernel-Design liegt zwischen "Sicherheit / Stabilität" und "Leistung". Mikrokerne fördern die Sicherheit auf Kosten der Leistung. Wenn Sie einen winzigen minimalen Mikrokernel haben, bei dem der Kernel die Kommunikation mit Hardware, Speicherverwaltung, IPC und wenig anderem erleichtert, verfügt er über eine relativ kleine API-Oberfläche, die einen Angriff erschwert. Und wenn Sie einen fehlerhaften Dateisystemtreiber / Grafiktreiber / usw. haben, kann der Treiber abstürzen, ohne den Kernel herunterzufahren, und kann wahrscheinlich harmlos neu gestartet werden. Überlegene Stabilität! Überlegene Sicherheit! Alle guten Dinge.

Der Nachteil dieses Ansatzes ist der ewige, unausweichliche Aufwand all dieser IPC. Wenn Ihr Programm Daten aus einer Datei laden möchte, muss es den Dateisystemtreiber fragen, was bedeutet, dass IPC für diesen Prozess einen Prozesskontextwechsel und zwei Ringübergänge durchführt. Dann fordert der Dateisystemtreiber den Kernel auf, mit der Hardware zu kommunizieren, was zwei Ringübergänge bedeutet. Dann sendet der Dateisystemtreiber seine Antwort, was mehr IPC-Zwei-Ring-Übergänge und einen weiteren Kontextwechsel bedeutet. Gesamtaufwand: zwei Kontextwechsel, zwei IPC-Anrufe und sechs Ringübergänge. Sehr teuer!

Ein monolithischer Kernel faltet alle Gerätetreiber in den Kernel. Ein fehlerhafter Grafiktreiber kann also den Kernel herunterfahren, oder wenn er eine Sicherheitslücke aufweist, kann er möglicherweise ausgenutzt werden, um das System zu gefährden. Aber! Wenn Ihr Programm etwas von der Festplatte laden muss, ruft es den Kernel auf, der einen Ringübergang ausführt, mit der Hardware kommuniziert, das Ergebnis berechnet und das Ergebnis zurückgibt, wobei ein weiterer Ringübergang durchgeführt wird. Gesamtaufwand: zwei Ringübergänge. Viel billiger! Viel schneller!

Kurz gesagt, der Mikrokernel-Ansatz lautet: "Lassen Sie uns die Leistung für überlegene Sicherheit und Stabilität aufgeben." Der monolithische Kernel-Ansatz besagt: "Lassen Sie uns die Leistung beibehalten und Sicherheits- und Stabilitätsprobleme beheben, sobald sie auftreten." Die Welt scheint diesen Ansatz zu akzeptieren, wenn nicht sogar zu bevorzugen.

ps Windows NT war nie ein reiner Mikrokernel, aber es war lange Zeit mikrokernelartig. NT 3.x hatte Grafiktreiber als Benutzerprozess und ehrlich gesagt war NT 3.x super stabil. NT 4.0 hat Grafiktreiber in den Kernel verschoben. es war weniger stabil, aber viel performanter. Dies war ein allgemein beliebter Schritt. “

F22Rapture : „Ein praktischer Vorteil des monolithischen Kernel-Ansatzes für Linux besteht darin, dass er Hardwareanbieter dazu drängt, ihre Treiber in den Kernel zu integrieren, da nur wenige Hardwareanbieter selbst mit den Änderungen der Kernelschnittstelle Schritt halten möchten. Da sich die meisten Treiber im Baum befinden, können die Schnittstellen kontinuierlich überarbeitet werden, ohne dass ältere APIs unterstützt werden müssen. Der Kernel garantiert nur, dass der Benutzerbereich nicht unterbrochen wird, nicht der Kernelspace (Treiber), und es gibt eine Menge Abwanderung, wenn es um die Treiberschnittstellen geht, die die Anbieter dazu bringen, ihre Treiber zu pflegen. Nvidia ist einer der wenigen Anbieter, von denen ich mir vorstellen kann, dass er über die Ressourcen verfügt, um seinen eigenen Out-of-Tree-Treiber zu verwalten, der vollständig auf proprietären Komponenten basiert.

Ich vermute, wenn die Fahrer ihre eigenen kleinen Inseln wären, die durch stabile Schnittstellen getrennt sind, hätten wir möglicherweise nicht so viele Unternehmen, die bereit sind, ihren Code zu öffnen. “

Mallardtheduck : "In diesem Zusammenhang bezieht sich" monolithisch "nicht darauf, (fast) den gesamten Kernel- und Treibercode in einem einzigen Quellbaum zu haben, sondern darauf, dass der gesamte Kernel und die Treiber als eine einzige" Aufgabe "in einem ausgeführt werden einzelner Adressraum.

Dies unterscheidet sich von einem "Mikrokernel", bei dem die verschiedenen Kernelelemente und Treiber als separate Aufgaben mit separaten Adressräumen ausgeführt werden.

Wie bereits erwähnt, ist der Windows-Kernel grundsätzlich monolithisch, die Treiber werden jedoch weiterhin separat entwickelt. macOS verwendet eine Art Hybridkernel, der im Kern einen Mikrokernel verwendet, aber immer noch fast alles in einer einzigen "Aufgabe" hat, obwohl fast alle Treiber von Apple entwickelt / geliefert wurden. “

Slabity : „Die Leute haben dies seit vor 2004 diskutiert. Die Tanenbaum-Torvalds-Debatte 1999 1992 ist ein großes Beispiel für die Argumente zwischen Mikrokernel- und monolithischen Kernel-Designs.

Ich persönlich bin Teil des Mikrokernel-Lagers. Sie sind sauberer, sicherer und tragbarer. In dieser Hinsicht war das Design des Kernels zum Zeitpunkt seiner Erstellung veraltet.

… Linux hat viele Probleme bei monolithischen Kernel-Designs überwunden. Es ist modular aufgebaut, seine strenge Code-Richtlinie hat es relativ sicher gemacht, und ich glaube, niemand würde dagegen argumentieren, wie portabel es ist. “

TEchnicolourSocks : „Es gibt nur einen richtigen Weg für das Kernel-Design und es ist der Weg für TempleOS.

Geschrieben in HolyC, nicht vernetzt, nur Ring-0. Wie Gott es beabsichtigt hat. “

Scandalousmambo : „Die Natur der Entwicklung eines Systems, das so komplex ist wie der Linux-Kernel, bedeutet, dass es laut Leuten, die bei der ersten Entwicklung auf Hochstühlen saßen, immer" veraltet "sein wird.

Dieses Betriebssystem repräsentiert wahrscheinlich zig Millionen Arbeitsstunden.

Kann es ersetzt werden? Sicher. Wird es? Nein."

Grumbel : „In der Praxis macht es keinen großen Unterschied mehr. Früher war HURD mit seinen Userspace-Dateisystemen und dergleichen ziemlich cool. Aber Linux hat seitdem den größten Teil dieser Funktionalität erhalten. Wenn Sie ein Dateisystem, einen USB-Treiber oder ein Eingabegerät in den Benutzerbereich schreiben möchten, müssen Sie den Kernel nicht hacken. Sie können den Kernel jetzt sogar zur Laufzeit patchen, wenn Sie dies wirklich möchten.

Die Linux-Philosophie, keine fehlerhaften Treiber zu schreiben, die den Kernel überhaupt zum Absturz bringen, anstatt ihn gegen beschissene Treiber super robust zu machen, scheint auch in der realen Welt recht gut zu funktionieren. Wir müssen uns wahrscheinlich bei USB dafür bedanken, da durch die selbstbeschreibende Hardware nicht mehr für jedes neue Gerät, das Sie an den PC anschließen, ein neuer Treiber geschrieben werden muss.

Die gesamte Designdebatte ist jetzt noch akademischer als früher, da nur noch wenige Funktionen übrig sind, die Sie allein durch Designänderungen erhalten würden und die Sie nicht in einen monolithischen Kernel implementieren könnten. “

KugelKurt : „Obwohl hier ein Großteil der Diskussion über Mikrokerne im Vergleich zum monolithischen Kernel geführt wird, wurden neuere Forschungen zu Programmiersprachen durchgeführt.

Wenn Sie heute einen völlig neuen Kernel gestartet haben, wird dieser wahrscheinlich nicht in C geschrieben. In den Projekten Singularity und Midori von Microsoft wurde die Machbarkeit von C # / verwalteten Code-Kerneln untersucht.

Das bekannteste Nicht-Forschungs-Betriebssystem ohne C-Kernel ist wahrscheinlich Haiku, das in C ++ geschrieben ist. “

OmniaVincitVeritas : „Es war veraltet, als es zum ersten Mal erstellt wurde, und ist es immer noch. Wie wir wissen, funktioniert der technische Fortschritt jedoch fast nie, so dass die technisch / wissenschaftlich überlegene Lösung kurzfristig an die Spitze kommt. so viele andere Dinge beeinflussen auch den Erfolg.

In diesem Fall würden wir 100% sichere Mikrokerne ausführen, die in Haskell geschrieben wurden. Sicherheitsfirmen würden nicht existieren. Ich hätte einen Einhorn / Pony-Hybrid, der mit Sonnenlicht betrieben wird. “

Daemonpenguin : „Es gibt einige Konzepte, die theoretisch bessere Kernel-Designs liefern können. Es gibt zum Beispiel einen Rust-Kernel, der eine Reihe von Speicherangriffsvektoren umgehen könnte. Mikrokerne haben theoretisch einige sehr gute Designoptionen, die sie portabel, zuverlässig und möglicherweise selbstkorrigierend machen.

Das Problem ist jedoch, dass es sich eher um Theorie als um Praxis handelt. Egal wie gut eine Theorie ist, die Leute werden fast immer das Praktische (dh das Arbeiten jetzt) ​​über ein besseres Design nehmen. Der Linux-Kernel bietet so viel Hardware-Unterstützung und so viele Unternehmen, die die Entwicklung finanzieren, dass es unwahrscheinlich ist, dass andere Kernel (unabhängig von ihren coolen Designentscheidungen) aufholen.

MINIX zum Beispiel hat ein solides Design und einige großartige Funktionen, aber nur sehr wenig Hardware-Unterstützung, sodass fast niemand für die Plattform entwickelt. “

Mehr bei Reddit

DistroWatch Bewertungen 4MLinux 21.0

Linux bietet viele verschiedene Arten von Distributionen. Einige sind mit mehr Software gebündelt, andere mit weniger. 4MLinux richtet sich an diejenigen, die eine leichte Distribution bevorzugen. Ein Autor bei DistroWatch hat eine vollständige Überprüfung von 4MLinux 21.0.

Joshua Allen Holm berichtet für DistroWatch:

4MLinux ist eine leichtgewichtige Linux-Distribution, die vier wichtige Funktionsbereiche bietet. Mit nur der auf der ISO verfügbaren Software bietet 4MLinux eine Vielzahl von Anwendungen für die Systemwartung. Abspielen vieler Arten von Multimediadateien; Angebot eines Miniservers zur Bereitstellung eines einfachen Webservers; und es hat eine anständige Auswahl an Spielen, die die Distribution in eine Kategorie einordnet, die sie als Mysterium bezeichnet. Diese vier Funktionen bilden die Grundlage für den Namen der Distribution. Vier Dinge, die mit "M" beginnen, also 4MLinux.

Das Booten von 4MLinux von einem Flash-Laufwerk ist ein schneller Vorgang. Ich war schnell und automatisch als root angemeldet und konnte in der Desktop-Umgebung arbeiten. Für den Desktop verwendet 4MLinux JVM in Kombination mit einem Wbar-Starter am oberen Bildschirmrand, der Verknüpfungen zu wichtigen Programmen bereitstellt. Außerdem gibt es IDesk zur Verwaltung des Desktops und Conky zur Bereitstellung grundlegender Systemstatusinformationen. Wbar, IDesk und Conky können alle ausgeschaltet werden, aber das System ist bereits sehr leicht, wenn sie sich in ihrem standardmäßigen, aktivierten Zustand befinden.

4MLinux wird standardmäßig mit einer anständigen Auswahl an Software geliefert. Im JVM-Anwendungsmenü gibt es Verknüpfungen für ein Terminal, Internetanwendungen, Wartung, Multimedia, Miniserver und Mystery. Das Internet-Untermenü enthält Links zum Surfen im Internet, HexChat für IRC, Sylpheed für E-Mail, Übertragung für Bittorrent, uGet zum Herunterladen, ein Dienstprogramm zum Freigeben von Dateien über Bluetooth, GNOME PPP für DFÜ-Internetverbindungen und eine Option für Tor ein- und ausschalten.

4MLinux bietet viel Software in einem kleinen Paket. Für die Systemwartung ist es eine gute Wahl, sie zur Hand zu haben. Für Multimedia, Miniserver und Mystery bietet es eine nützliche Auswahl an Software. Es gibt jedoch auch andere Distributionen, die sich nur auf eine dieser Aufgaben konzentrieren und es besser machen, indem sie fokussierter sind. Das heißt nicht, dass 4MLinux schlecht ist, aber es versucht, zu viele verschiedene Dinge gleichzeitig zu tun. Um ganz ehrlich zu sein, denke ich, dass 4MLinux ein stärkeres Angebot wäre, wenn es 3MLinux wäre und den mysteriösen Aspekt vollständig fallen lassen würde. Vielleicht nur Solitaire oder ein anderes leichtes Spiel als Ablenkung, während Wartungsaufgaben ausgeführt werden, und den durch Entfernen der Spiele frei gewordenen Speicherplatz nutzen, um standardmäßig einige der optionalen Erweiterungsanwendungen einzuschließen.

Mehr bei DistroWatch

LinuxInsider testet Ultimate Edition 5.4

Die Ultimate Edition hingegen befindet sich am anderen Ende des Spektrums als 4MLinux. UE ist definitiv eine Freude für Maximalisten, da es voller Software ist. Ein Autor bei LinuxInsider hat eine vollständige Überprüfung der Ultimate Edition 5.4.

Jack M. Germain berichtet für LinuxInsider:

Ich war nicht begeistert von meinen ersten praktischen Erfahrungen mit Ultimate Edition 5.4. Ich fand eine nervige Liste von Dingen, die daran falsch waren.

Nach vielen Jahren der Überprüfung von Linux-Distributionen habe ich eine solide Verbindung zwischen den ersten Eindrücken der Website einer Distribution und den bleibenden Eindrücken der Leistung einer Distribution festgestellt. Sagen wir einfach, dass der unorganisierte Zustand der Website in diesem Fall in der neuesten Version dieser Distribution zum Tragen kommt.

Ein kleines Beispiel: Ich habe nirgendwo eine Liste der Mindestinstallationsanforderungen für Hardware gefunden. Das war frustrierend. Ich habe Zeit damit verschwendet, Ultimate Linux auf mehrere veraltete Computer zu laden. Einige der Probleme betrafen Speicher und Speicherplatz. Andere Probleme betrafen Unzulänglichkeiten der Grafikkarte.

Ultimate Edition richtet sich an Linux-Neulinge, aber diejenigen, die es versuchen, müssen möglicherweise etwas besser mit Linux vertraut sein, um einige der Probleme beim Ausführen dieses nicht ganz so ultimativen Linux-Betriebssystems zu umgehen.

Mehr bei LinuxInsider

Hast du eine Zusammenfassung verpasst? Besuchen Sie die Homepage von Eye On Open, um sich über die neuesten Nachrichten zu Open Source und Linux zu informieren .