Warum lässt sich Linux so gut auf verschiedene Hardwareplattformen skalieren?

22

Warum läuft Linux gut auf so vielen verschiedenen Arten von Computern - Desktops, Laptops, Servern, eingebetteten Geräten, Mobiltelefonen usw.? Liegt es hauptsächlich daran, dass das System offen ist, sodass ein Teil davon geändert werden kann, um in verschiedenen Umgebungen zu funktionieren? Oder gibt es andere Eigenschaften des Linux-Kernels und / oder -Systems, die es diesem Betriebssystem erleichtern, auf einer so breiten Palette von Plattformen zu arbeiten?

Justin Ethier
quelle
7
Ich denke, Sie haben bereits einen Teil der Antwort - Offenheit macht es verschiedenen Gruppen von Menschen oder Unternehmen leicht, sie an ihre Bedürfnisse anzupassen. Da der Kernel als monolithisch kritisiert wurde, bin ich mir nicht sicher, ob sein ursprüngliches Design bewusst in irgendeiner Weise auf Skalierbarkeit optimiert wurde. Ich würde vermuten, dass eine größere Anzahl von Leuten am Kern von Linux gearbeitet hat als an anderen Betriebssystemen - und dies hat die Kernbetreuer möglicherweise gezwungen, den Code sorgfältig in Teile mit klaren Schnittstellen zu unterteilen? Auf der anderen Seite haben einige BSD-Varianten die Portabilität als explizites Ziel.
RedGrittyBrick
@Red: Es wurde kritisiert, dass es sich um einen monolithischen Kernel statt um einen Mikrokernel handelt - das hat jedoch nichts mit dem Design zu tun. Es hat damit zu tun, wie viel des Kernels im Userspace und wie viel im Kernelspace läuft. Der Kernel von Windows NT ist (zum Beispiel) sehr modular, aber technisch gesehen immer noch monolithisch, da die meisten Dienste (dh das Dateisystem) im Kernelmodus und nicht im Benutzermodus ausgeführt werden.
Billy ONeal
@Billy: Windows NT ist technisch ein Hybrid - Kernel. Ich bin der Meinung, dass Microsoft die Subsysteme nach wie vor mithilfe der Nachrichtenübermittlung verwaltet und die Möglichkeit beibehält, Teile wie gewünscht in den Benutzerbereich zu verschieben. Sie haben dies mit dem Grafiksystem in Vista gemacht: Es befindet sich jetzt im User-Space, nachdem es seit NT 4.0
Zan Lynx
2
@Zan: Ich hatte den Eindruck, dass der Status als "Hybrid-Kernel" umstritten war . Deshalb sagte ich "monolithisch". NT hat sicherlich viele monolithische Eigenschaften, auch wenn es in bibliotheksähnliche Teile aufgeteilt ist.
Billy ONeal
@Billy: Mir scheint, wenn Ihr Kernel nur durch Ändern einiger Optionen und Neuerstellen in einen Mikrokernel verwandelt werden kann, ist dies etwas anderes als monolithisch, auch wenn die am häufigsten verwendeten binären Builds alles in den Adressraum des Kernels stellen.
Zan Lynx

Antworten:

31

Offenheit ist sicherlich ein Teil davon, aber ich denke, der Schlüsselfaktor ist, dass Linus Torvald weiterhin darauf besteht, dass die gesamte Arbeit, von groß bis klein, einen Platz im Linux-Kernel einnimmt, solange sie gut gemacht ist. Wenn er sich irgendwann entschlossen hätte, eine Linie zu ziehen und zu sagen: "Okay, für diese ausgefallene Supercomputer-Hardware brauchen wir eine Gabel", dann hätte sich möglicherweise eine völlig getrennte High-End- und Klein-System-Variante entwickelt. Stattdessen haben die Leute die härtere Arbeit geleistet, alles relativ gut zusammenspielen zu lassen.

Und Kludges, die eine Seite der Dinge zum Nachteil der anderen befähigen, werden im Allgemeinen nicht zugelassen. Wiederum zwingen sie die Menschen dazu, Probleme härter, aber korrekter zu lösen, was sich in der Regel als einfacher herausstellt einmal wird der Kludge zu einer historischen Fußnote.

Aus einem Interview vor einigen Jahren :

F: Linux ist ein vielseitiges System. Es liefert PCs, riesige Server, Handys und etwa zehn andere Geräte. In welchem ​​Sektor wird Linux von Ihrer privilegierten Position aus das größte Potenzial entfalten?

A: Ich denke, die wahre Stärke von Linux ist genau, dass es sich nicht um eine Nische handelt. Jeder kann mitspielen, und verschiedene Leute und Unternehmen haben völlig unterschiedliche Motivationen und Überzeugungen, was für sie wichtig ist. Ich interessiere mich also nicht einmal für einen bestimmten Sektor.

mattdm
quelle
18
Und das kleine System und die großen Systemdefinitionen ändern sich ständig, so dass gute Verwirrungen vermieden wurden. Die Multicore-Smartphones können jetzt von der ganzen Supercomputerarbeit profitieren, die vor Jahren geleistet wurde.
Zan Lynx
4

Linux lässt sich auf viele verschiedene Arten von Hardware skalieren, weil:

  • es ist sehr konfigurierbar
  • Die Quelle ist frei verfügbar und kann für jede CPU erstellt werden, für die ein C-Compiler verfügbar ist
  • Prozessoren in eingebetteten Geräten und Mobiltelefonen haben mindestens die gleiche oder eine höhere Leistung als die ursprünglichen 386-Maschinen, auf denen die frühe Linux-Entwicklung durchgeführt wurde, und gewinnen weiterhin an Leistung
  • Es funktioniert einwandfrei mit nichts anderem als einem Netzwerk, einer Festplatte oder einem festplattenähnlichen Gerät und einer seriellen Schnittstelle
LawrenceC
quelle
Nun, jemand müsste eine minimale Menge an Bootstrap-Code und C-Laufzeit für die Zielplattform schreiben. Oh, und es muss den virtuellen Speicher unterstützen. Aber sonst wahr :)
Billy ONeal
1
@Billy Es gibt Ports für Nommu-Systeme: uClinux, uClinux / ARM und MontaVista Linux.
Tobu
@Tobu: Hmm .. Ich verstehe nicht, wie das sein kann. Die gesamte "Unix-Philosophie" für mehrere Prozesse geht davon aus, dass so etwas forkmöglich ist und forkauf einem nicht-virtuellen Speichersystem nicht in angemessener Weise effizient ausgeführt werden kann. Während die angegebenen Ports wahrscheinlich Teile des Linux-Kernels verwenden und Linux-Software ausführen können, unterscheiden sich die von diesen Ports bereitgestellten APIs anscheinend größtenteils von den typischen Linux-Kerneln. (Beispiel: Speicherzuordnung - was offensichtlich virtuellen Speicher erfordert)
Billy ONeal
linuxjournal.com/article/7814 : Laut Aussage, dass uCLinux keine fork () -, sondern eine blockierende Variante namens vfork () unterstützt, müssen Anwendungen unter uCLinux neu geschrieben werden, um vfork oder Threads zu verwenden.
LawrenceC
4

Der Linux-Kernel lässt sich gut skalieren, weil es so ist. Der Kernel ist relativ klein und macht das, was er tun muss. Gerätetreiber sind optional und können bei kleineren Systemen aus dem Kernel entfernt werden. Über die minimalen Kernel-Anforderungen hinaus werden die meisten Funktionen als optionale Features implementiert.

Schauen Sie sich die Konfigurationsdatei an, die neben den meisten Kerneln installiert ist. Es werden alle aktivierten Funktionen sowie die unterstützten Treiber aufgelistet.

Treiber werden entweder im Kernel eingebettet oder als ladbare Module unterstützt. Auf diese Weise kann ein Kernel dynamisch für die Hardware konfiguriert werden, auf der er ausgeführt wird. Dies ist der Ansatz vieler Distributionen.

Abgesehen von den Kompilierungswerkzeugen ist das Ändern des Kernels für neue Hardware relativ einfach. Für einen neuen Prozessor muss nur der zugehörige Code als Modifikation der vorhandenen Funktionalität implementiert werden. Neue Geräte erfordern nur einen neuen Treiber mit den entsprechenden Haken. Neue Dateisysteme sind ebenfalls relativ triviale Modifikationen.

Die Codebasis wurde gut gepflegt, um diese Flexibilität ohne externe Gabelung beizubehalten. Die bedingte Kompilierung führt zu einem sehr flexiblen Kernel, der so gering wie möglich gehalten wurde.

BillThor
quelle
1

Ich habe keine detaillierten technischen Kenntnisse, um diese Antwort zu untermauern, aber meiner Erfahrung nach lässt sich Linux im Vergleich zu anderen Betriebssystemen, die ich häufig verwende (hauptsächlich Windows), gut skalieren. Die Frage ist also vielleicht, warum Windows nicht so gut skaliert wie Linux.

Wenn es für Sie immer noch nützlich ist, diese Frage so zu wiederholen, würde ich vorschlagen, dass die Marktkräfte Microsoft dazu motivieren, Features und Funktionen hinzuzufügen, die auf die neueste und leistungsfähigste Hardware abgestimmt sind, da sie mehr Kopien des Betriebssystems verkaufen, vor allem, wenn Endbenutzer neue Systeme kaufen . Daher stelle ich zu jedem Zeitpunkt fest, dass die neueste Version von Windows auf älterer, weniger leistungsfähiger Hardware eine schlechte Leistung aufweist.

Verzeih mir, wenn das deine Frage vereinfacht.

Mox
quelle
Es scheint, dass Sie über das Betriebssystem sprechen, während der Typ über den Kernel spricht. Nun, es sei denn, Sie wissen genau, ob der Windows-Kernel aufgebläht ist.
Tshepang
@ Tshepang: Um fair zu sein, werden Fragen zum "Linux-Kernel und / oder -System" gestellt. Teilen sich Windows 7 und Windows Phone 7 einen Kernel? Das Wenige, das ich gelesen habe, deutet darauf hin, dass ihre Kernel weniger Code gemeinsam haben als die Kernel von Ubuntu Server und Android.
RedGrittyBrick
Danke, aber die Frage drehte sich wirklich um Linux und nicht um ein anderes Betriebssystem. Es gibt viele andere: en.wikipedia.org/wiki/List_of_operating_systems
Justin Ethier
Der NT-Kernel ist eigentlich sehr effizient, aber es ist die große Anzahl von Ebenen, die ihn umgeben
LawrenceC