GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Der Linux-Kernel:Top 5 Innovationen

Das Wort Innovation wird in der Tech-Branche fast so oft herumgesprochen wie Revolution , daher kann es schwierig sein, eine Übertreibung von etwas zu unterscheiden, das tatsächlich aufregend ist. Der Linux-Kernel wurde als innovativ bezeichnet, aber andererseits auch als der größte Hack im modernen Computing, ein Monolith in einer Mikrowelt.

Abgesehen von Marketing und Modellierung ist Linux wohl der beliebteste Kernel der Open-Source-Welt und hat in seiner fast 30-jährigen Lebensdauer einige echte Wendepunkte eingeführt.

Cgroups (2.6.24)

Im Jahr 2007 bekamen Paul Menage und Rohit Seth die esoterischen Kontrollgruppen (cgroups)-Funktion, die dem Kernel hinzugefügt wurde (die aktuelle Implementierung von cgroups ist eine Neufassung von Tejun Heo.) Diese neue Technologie wurde ursprünglich verwendet, um im Wesentlichen die Servicequalität für eine bestimmte Reihe von Aufgaben sicherzustellen.

Beispielsweise könnten Sie eine Kontrollgruppendefinition (cgroup) für alle mit Ihrem Webserver verbundenen Aufgaben, eine weitere cgroup für routinemäßige Backups und noch eine weitere für allgemeine Betriebssystemanforderungen erstellen. Sie könnten dann einen Prozentsatz der Ressourcen für jede Kontrollgruppe steuern, sodass Ihr Betriebssystem und Ihr Webserver den Großteil der Systemressourcen erhalten, während Ihre Backup-Prozesse Zugriff auf das haben, was noch übrig ist.

Wofür Cgroups jedoch am bekanntesten geworden sind, ist ihre Rolle als die Technologie, die die Cloud heute antreibt:Container. Tatsächlich wurden cgroups ursprünglich als Prozesscontainer bezeichnet. Es war keine große Überraschung, als sie von Projekten wie LXC, CoreOS und Docker übernommen wurden.

Die Schleusen öffnen sich, der Begriff Container wurde zu Recht zum Synonym für Linux, und das Konzept der Cloud-basierten „Apps“ im Microservice-Stil wurde schnell zur Norm. Heutzutage ist es schwer, von Cgroups wegzukommen, sie sind so weit verbreitet. Jede große Infrastruktur (und wahrscheinlich auch Ihr Laptop, wenn Sie Linux verwenden) nutzt cgroups auf sinnvolle Weise, wodurch Ihr Computererlebnis überschaubarer und flexibler als je zuvor wird.

Möglicherweise haben Sie beispielsweise bereits Flathub oder Flatpak auf Ihrem Computer installiert oder Sie haben begonnen, Kubernetes und/oder OpenShift bei der Arbeit zu verwenden. Unabhängig davon, wenn Ihnen der Begriff „Container“ noch unklar ist, können Sie sich in „Hinter den Kulissen mit Linux-Containern“ ein praktisches Verständnis von Containern aneignen.

LKMM (4.17)

Im Jahr 2018 wurde die harte Arbeit von Jade Alglave, Alan Stern, Andrea Parri, Luc Maranget, Paul McKenney und mehreren anderen in den Mainline-Linux-Kernel integriert, um formale Speichermodelle bereitzustellen. Das Subsystem Linux Kernel Memory [Consistency] Model (LKMM) ist eine Reihe von Tools, die das Linux-Speicherkohärenzmodell beschreiben und Lackmustests erstellen (Klitmus , speziell) zum Testen.

Je komplexer das physische Design der Systeme wird (mehr CPU-Kerne werden hinzugefügt, Cache und RAM wachsen usw.), desto schwieriger ist es für sie zu wissen, welcher Adressraum von welcher CPU wann benötigt wird. Wenn beispielsweise CPU0 Daten in eine gemeinsam genutzte Variable im Speicher schreiben muss und CPU1 diesen Wert lesen muss, muss CPU0 schreiben, bevor CPU1 zu lesen versucht. Wenn Werte in einer bestimmten Reihenfolge in den Speicher geschrieben werden, wird erwartet, dass sie auch in derselben Reihenfolge gelesen werden, unabhängig davon, welche CPU oder CPUs das Lesen durchführen.

Selbst auf einer einzelnen CPU erfordert die Speicherverwaltung eine bestimmte Aufgabenreihenfolge. Eine einfache Aktion wie x =y erfordert eine CPU, um den Wert von y zu laden aus dem Speicher und speichern Sie diesen Wert dann in x . Platzieren des in y gespeicherten Werts in das x Variable darf vorher nicht vorkommen die CPU hat den Wert aus dem Speicher gelesen. Es gibt auch Adressabhängigkeiten:x[n] =6 erfordert dieses n geladen wird, bevor die CPU den Wert sechs speichern kann.

LKMM hilft beim Identifizieren und Verfolgen dieser Speichermuster im Code. Dies geschieht teilweise mit einem Tool namens herd , das die von einem Speichermodell auferlegten Einschränkungen (in Form logischer Axiome) definiert und dann alle möglichen Ergebnisse auflistet, die mit diesen Einschränkungen übereinstimmen.

Patch für niedrige Latenz (2.6.38)

Vor langer Zeit, in den Tagen vor 2011, musste man sich einen Kernel mit niedriger Latenz besorgen, wenn man unter Linux "ernsthafte" Multimedia-Arbeiten machen wollte. Dies galt hauptsächlich für Audioaufnahmen, während viele Echtzeiteffekte hinzugefügt wurden (z. B. in ein Mikrofon singen und Hall hinzufügen und Ihre Stimme in Ihrem Headset ohne merkliche Verzögerung hören). Es gab Distributionen wie Ubuntu Studio, die zuverlässig einen solchen Kernel bereitstellten, also war es in der Praxis keine große Hürde, sondern nur eine wichtige Einschränkung bei der Auswahl Ihrer Distribution als Künstler.

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Wenn Sie jedoch Ubuntu Studio nicht verwendet haben oder Ihren Kernel aktualisieren mussten, bevor Ihre Distribution dazu kam, mussten Sie zur rt-patches-Webseite gehen, die Kernel-Patches herunterladen und sie auf Ihren Kernel anwenden Quellcode, manuell kompilieren und installieren.

Und dann, mit der Veröffentlichung der Kernel-Version 2.6.38, war dieser Prozess vorbei. Der Linux-Kernel hatte plötzlich, wie von Zauberhand, Code mit niedriger Latenz (laut Benchmarks verringerte sich die Latenz um mindestens den Faktor 10) standardmäßig eingebaut. Kein Herunterladen von Patches mehr, kein Kompilieren mehr. Alles hat einfach funktioniert, und das alles wegen eines kleinen Patches mit 200 Zeilen, der von Mike Galbraith implementiert wurde.

Für Open-Source-Multimedia-Künstler auf der ganzen Welt war dies ein Wendepunkt. Ab 2011 lief es so gut, dass ich mich 2016 der Herausforderung stellte, eine Digital Audio Workstation (DAW) auf einem Raspberry Pi v1 (Modell B) zu bauen, und fand, dass es überraschend gut funktionierte.

RCU (2.5)

RCU oder Read-Copy-Update ist ein in der Informatik definiertes System, das es mehreren Prozessor-Threads ermöglicht, aus dem gemeinsam genutzten Speicher zu lesen. Dies geschieht, indem Aktualisierungen verschoben, aber auch als aktualisiert markiert werden, um sicherzustellen, dass die Verbraucher der Daten die neueste Version lesen. Effektiv bedeutet dies, dass Lesevorgänge gleichzeitig mit Aktualisierungen stattfinden.

Der typische RCU-Zyklus sieht ungefähr so ​​aus:

  1. Entfernen Sie Verweise auf Daten, um zu verhindern, dass andere Leser darauf verweisen.
  2. Warten Sie, bis die Leser ihre kritischen Prozesse abgeschlossen haben.
  3. Speicherplatz zurückfordern.

Die Aufteilung der Aktualisierungsphase in Entfernungs- und Wiederherstellungsphasen bedeutet, dass der Updater die Entfernung sofort durchführt, während er die Wiederherstellung aufschiebt, bis alle aktiven Lesegeräte vollständig sind (entweder durch Blockieren dieser oder durch Registrieren eines Rückrufs, der nach Abschluss aufgerufen wird).

Obwohl das Konzept von Read-Copy-Update nicht für den Linux-Kernel erfunden wurde, ist seine Implementierung in Linux ein definierendes Beispiel für die Technologie.

Zusammenarbeit (0.01)

Die letzte Antwort auf die Frage, was der Linux-Kernel innoviert hat, wird immer vor allem Zusammenarbeit sein. Nennen Sie es gutes Timing, nennen Sie es technische Überlegenheit, nennen Sie es Hackbarkeit oder nennen Sie es einfach Open Source, aber der Linux-Kernel und die vielen Projekte, die er ermöglicht hat, sind ein leuchtendes Beispiel für Zusammenarbeit und Kooperation.

Und es geht weit über den Kernel hinaus. Menschen aus allen Gesellschaftsschichten haben zu Open Source beigetragen, wohl weil des Linux-Kernels. Linux war und ist bis heute eine wichtige Kraft Freier Software, die Benutzer dazu inspiriert, ihren Code, ihre Kunst, ihre Ideen oder einfach sich selbst in eine globale, produktive und vielfältige Gemeinschaft von Menschen einzubringen.

Was ist Ihre Lieblingsinnovation?

Diese Liste ist auf meine eigenen Interessen ausgerichtet:Container, nicht einheitlicher Speicherzugriff (NUMA) und Multimedia. Ich habe sicherlich Ihre Lieblings-Kernel-Innovation von der Liste gestrichen. Erzähl mir davon in den Kommentaren!


Linux
  1. Analysieren Sie den Linux-Kernel mit ftrace

  2. Der Linux-Kernel:Top 5 Innovationen

  3. Der Lebenszyklus des Linux-Kernel-Testens

  4. Linux – Teilnahme an der Kernel-Mailingliste?

  5. Überprüfen Sie die Systemlast unter Linux

Verwenden des kostenlosen Linux-Befehls

So überprüfen Sie die Kernel-Version in Linux

So passen Sie den Linux-Befehl top an

Verwalten von Swap im modernen Linux-System

Der Linux-Top-Befehl

Linux-Speichersegmentierung