Konzeptioneller Unterschied zwischen Linux und (freiem) BSD-Kernel

18

(Ich habe bereits bemerkt, dass diese Frage bereits gestellt wurde, aber ich denke, dass sie nicht so beantwortet wurde, wie ich es gerne verstehen würde.)

Was sind die konzeptionellen und strukturellen Unterschiede zwischen a

  • Linux Kernel
  • BSD Kernel (sagen wir mal FreeBSD)

Letztendlich sind sie beide Kernel - ich würde annehmen, dass es Unterschiede in Struktur, Funktionalität und Spezialisierung gibt. In welchen Szenarien hätte eine Art von Kernel einen Vorteil gegenüber der anderen? (Webserver, Datenbank, Computing usw.)

Gibt es gemeinsame Anstrengungen, um Kräfte für einen gemeinsamen Kernel oder bestimmte Module zu konzentrieren, oder wäre das überhaupt sinnlos?

PS: Unterschiedliche Lizenztypen oder Versand- / Verpackungs- / Wartungsansätze sind in diesem Zusammenhang nicht von Bedeutung. Ich bin wirklich daran interessiert zu verstehen, wie sie sich in Bezug auf Struktur, Funktionalität / Merkmale und Spezialisierung unterscheiden.

Binäranomalie
quelle
Gibt es gemeinsame Anstrengungen, um Kräfte für einen gemeinsamen Kernel oder bestimmte Module zu konzentrieren, oder wäre das überhaupt sinnlos? Mein erster Gedanke ist, welchen Sinn das haben könnte ... einen dritten Kernel zu erstellen, der "vollständig auf einer Mischung aus Linux und FreeBSD basiert"?
Goldlöckchen
Nein, überhaupt nicht, sondern umgekehrt - eine Zusammenarbeit für Teile herstellen, die für beide gleich sind. Ich denke für bestimmte Fahrer ist dies schon der Fall, wenn ich mich nicht irre.
Binaryanomaly
1
@binaryanomaly: Unterschiedliche Lizenzen sind für beide Seiten sehr wichtig. Bis zu einem gewissen Grad könnte man es eine Ideologie auf beiden Seiten des Ganges nennen. Zum Beispiel war GCC ein wunder Punkt in den BSDs und FreeBSD wechselte aus genau diesem Grund zu Clang als Standard: Lizenzprobleme.
0xC0000022L
1
@ 0xC0000022L: Sie haben sicherlich Recht und ich wollte nicht sagen, dass Lizenzfragen nicht wichtig sind - ich wollte nur, dass sie nicht im Mittelpunkt dieser speziellen Diskussion stehen.
Binaryanomaly
Wirklich @goldilocks, Sie können den Vorteil einer dritten Sache nicht sehen, die weder zu linux noch zu BSDish ist, aber genau richtig ?
Josh Rumbut

Antworten:

22

1. Was sind die konzeptionellen und strukturellen Unterschiede zwischen einem Linux-Kernel und einem BSD-Kernel?

(: Das heißt in Bezug auf Architektur und interne Strukturen gibt es natürlich Unterschiede auf , wie die Dinge getan LVM vs geom früh und komplex, Gefängnis - Funktion für FreeBSD, ...), aber insgesamt gibt es nicht viel Unterschied zwischen den beiden:

  • Der BSD * -Kernel und der Linux-Kernel haben sich beide von einem rein monolithischen Ansatz zu etwas Hybrid / Modularem entwickelt.

Dennoch gibt es grundlegende Unterschiede in ihrer Herangehensweise und Geschichte:

  • BSD-Kernel verwenden BSD-Lizenzen und Linux-Kernel verwendet GPL-Lizenzen .
  • BSD-Kernel sind keine eigenständigen Kernel, sondern werden als Teil eines Ganzen entwickelt . Dies ist natürlich nur eine philosophische und keine technische Sichtweise, aber dies gibt dem System Kohärenz .
  • BSD-Kernel werden mit einer konservativeren Sichtweise entwickelt und es wird mehr Wert darauf gelegt, mit ihrem Ansatz konsistent zu bleiben, als mit ausgefallenen Funktionen.
  • Linux-Kernel sind mehr über Treiber, Funktionen, ... (je mehr desto besser).

Wie anderswo groß geschrieben :

Es ist intelligentes Design und Ordnung (BSD *) im Vergleich zu natürlicher Auslese und Chaos (GNU / Linux).

2. In welchen Szenarien hätte eine Art Kernel einen Vorteil gegenüber der anderen?

Obwohl sie einen fast Vanilla-Linux-Kernel und einen FreeBSD-Kernel miteinander vergleichen, weisen sie in Bezug auf ihre Gesamtstruktur und ihr Konzept mehr oder weniger den gleichen allgemeinen Nutzungsgrad auf , dh ohne besondere Spezialisierung (nicht in Echtzeit, nicht hochgradig parallel, nicht spielorientiert, nicht eingebettet, ...).

Natürlich gibt es hier und da ein paar Unterschiede, wie die native ZFS-Unterstützung oder die Geom-Architektur für FreeBSD, gegenüber den vielen Treibern oder verschiedenen Dateisystemen für Linux. Aber nichts, was eine allgemeine Software wie Webserver oder Datenbanken wirklich verwenden würde, um einen wirklichen Unterschied zu machen. Vergleiche in diesen Fällen würden höchstwahrscheinlich zu einem Abstimmungskampf zwischen den beiden führen, nichts Besonderes.

Einige würden jedoch argumentieren, dass OpenBSD einen tiefen und konsistenten Sicherheitsansatz hat, während gehärtete Linux-Distributionen "nur" modifizierte Versionen des Vanilla-Linux-Kernels sind. Dies könnte für ein so hoch spezialisiertes System zutreffen, wie Steam-OS die Nummer eins für Spiele sein würde.

3. Gibt es gemeinsame Anstrengungen, um Kräfte für einen gemeinsamen Kernel oder bestimmte Module zu konzentrieren?

Es gibt keine gemeinsamen Anstrengungen, um Kräfte für einen gemeinsamen Kernel zu konzentrieren, da es wichtige Lizenz-, philosophische oder Ansatzprobleme gibt.

Wenn es echte gemeinsame Bestrebungen wie OpenZFS gibt , geht es in den meisten Fällen eher um Treiber und Konzepte, die voneinander abgeleitet oder inspiriert wurden.

Ouki
quelle
Glib-Verallgemeinerungen über die BSDs sind normalerweise falsch. Beachten Sie hier zum Beispiel, dass DragonFly BSD existiert, weil es keine Verallgemeinerung ist, die man auf die BSD-Welt anwenden kann, wenn man konservativ ist .
JdeBP
5

Teilantwort zu einigen Punkten

Die vielen Möglichkeiten werden oft als schlecht empfunden, wenn man sich von außen mit Open-Source-Entwicklung befasst. Man denke jedoch, dass es in der Natur viele Arten (oft) einer Tierart gibt, etwa Pinguine. Es sind 17 . Jede ist auf bestimmte Anforderungen spezialisiert, auch bei Open Source-Projekten (normalerweise). Natürliche Selektion sorgt dafür, dass die mit der Zeit weniger geeignete Open-Source-Quelle ausgesondert wird.

Gibt es gemeinsame Anstrengungen, um Kräfte für einen gemeinsamen Kernel oder bestimmte Module zu konzentrieren, oder wäre das überhaupt sinnlos?

Wäre irgendwie sinnlos, es ist manchmal eine doppelte Anstrengung, aber die Leute, die an diesen Komponenten arbeiten, tun es auch nicht im luftleeren Raum. Sie schauen sich um, was andere tun, und wenn es einen Ansatz oder Algorithmus gibt, übernehmen sie ihn, wenn dies sinnvoll ist.

Ich kann nicht mit den Strukturunterschieden in Bezug auf Ihre anderen Kugeln sprechen, dachte aber, ich würde mindestens zwei davon ansprechen.

slm
quelle
Mit Spezialisierung haben Sie da sicher einen Punkt. Andererseits würde ich auch wetten, dass die DNA der Pinguine zu einem sehr hohen Prozentsatz genau gleich ist (wie bei Menschenaffen und Menschen) und sich nur in winzigen Bereichen unterscheidet. Die Natur ist ziemlich gut darin, redundante Anstrengungen zu vermeiden, unterscheidet sich jedoch nur dann, wenn und wo dies erforderlich ist. Milliarden von natürlichen Iterationen (Reproduktion) entscheiden dann (Auswahl), welches der Muster am besten an die gegebenen Umgebungsbedingungen angepasst ist. (Es wird philosophisch;)
Binäranomalie
@binaryanomaly - das ist das Problem mit Analogien 8-). Ich würde es wahrscheinlich nicht auf dieses Niveau bringen, da die Korrelation von Programmiersprachen / Code schwieriger ist, mit DNA zu korrelieren.
slm
Schöne Antwort und ein guter Vergleich mit Pinguinen. Zu oft vergessen wir, dass Doppelarbeit nicht immer schlecht ist und dass ein Zweig eines Projekts nicht immer das Ende ist. Es ist wirklich eher ein evolutionärer Prozess, der stattfinden muss und neue Ideen hervorbringen oder kläglich scheitern kann.
Raphael Ahrens