Kann man die 25-jährige Entwicklung des Linux-Kernels qualifizieren oder in Laienbegriffen abstrahieren? [geschlossen]

12

Der Linux-Kernel ist fast 25 Jahre alt . Wenn ich mir die Kurzversion über die Entwicklungsgeschichte des Linux-Kernels seit 1991 (Anfangsdatum) und insbesondere seit 1994 (1.0.0) bis heute einfallen lassen müsste, könnte ich das nicht. Das Beste , was ich tun konnte , kurz jeden einzelnen Kernel Release Notes lesen , wäre folgendes zu schaffen , die die allgemeine Funktionen dieser Version 3.11 (Anmerkungen und Links weggelassen) an den Kernel bis Version hinzugefügt:

  • Version 1.0 des Linux-Kernels wurde am 14. März 1994 veröffentlicht. Diese Version des Linux-Kernels unterstützte nur i386-basierte Computersysteme mit einem Prozessor. Die Portabilität wurde zu einem Problem, und so wurde die Version 1.2 (veröffentlicht am 7. März 1995) für Computersysteme mit Prozessoren, die auf den Architekturen Alpha, SPARC und MIPS basierten, unterstützt.
  • Version 2.0 wurde am 9. Juni 1996 veröffentlicht. Es gab 41 Veröffentlichungen in der Serie. Das Hauptmerkmal von 2.0 war die SMP-Unterstützung (dh die Unterstützung mehrerer Prozessoren in einem einzigen System) und die Unterstützung mehrerer Prozessortypen.
  • Mit Version 2.2 (veröffentlicht am 26. Januar 1999) wurde der globale Spinlock entfernt und die SMP-Unterstützung verbessert. Außerdem wurden die m68k- und PowerPC-Architekturen sowie neue Dateisysteme (einschließlich Nur-Lese-Unterstützung für Microsoft NTFS) unterstützt.
  • Die am 4. Januar 2001 veröffentlichte Version 2.4.0 enthielt Unterstützung für ISA Plug-and-Play-, USB- und PC-Karten. Außerdem wurde der PA-RISC-Prozessor von Hewlett-Packard unterstützt. Die Entwicklung für 2.4.x hat sich dahingehend geändert, dass im Laufe der Serie weitere Funktionen zur Verfügung gestellt wurden, darunter: Unterstützung für Bluetooth, Logical Volume Manager (LVM) Version 1, RAID-Unterstützung, InterMezzo- und ext3-Dateisysteme.
  • Die Version 2.6.0 wurde am 18. Dezember 2003 veröffentlicht. Die Entwicklung für 2.6.x wurde weiter dahingehend geändert, dass während der gesamten Laufzeit der Serie neue Funktionen hinzugefügt wurden. Zu den Änderungen, die in der 2.6-Reihe vorgenommen wurden, gehören: Integration von µClinux in die Mainline-Kernel-Quellen, PAE-Unterstützung, Unterstützung für mehrere neue CPU-Linien, Integration von ALSA in die Mainline-Kernel-Quellen, Unterstützung für bis zu 2 32 Benutzer ( ab 2 16 ), Unterstützung für bis zu 2 29 Prozess-IDs (nur 64-Bit, 32-Bit-Bögen weiterhin auf 2 15 begrenzt), die Anzahl der Gerätetypen und die Anzahl der Geräte für jeden Typ erheblich erhöht, die 64-Bit-Unterstützung verbessert, Dateisysteme mit einer Dateigröße von bis zu 16 Terabyte unterstützt, In-Kernel-Preemption und die native POSIX-Thread-Bibliothek unterstützt (NPTL), Linux-Integration im Benutzermodus in die Hauptkernquellen, SELinux-Integration in die Hauptkernquellen, InfiniBand-Unterstützung und vieles mehr. Bemerkenswert ist auch das Hinzufügen mehrerer Dateisysteme in den Releases 2.6.x: FUSE, JFS, XFS, ext4 und mehr. Details zum Verlauf der 2.6-Kernel-Serie finden Sie in den ChangeLog-Dateien im Quellcode-Veröffentlichungsbereich der 2.6-Kernel-Serie von kernel.org.
  • Die Version 3.0 wurde am 22. Juli 2011 veröffentlicht. Torvalds gab bekannt, dass die große Änderung "NICHTS. Absolut nichts" war. Am 30. Mai 2011 gab Torvalds bekannt: "... lassen Sie uns sicherstellen, dass wir mit der nächsten Veröffentlichung nicht nur eine brandneue, sondern auch einen guten Kernel haben." Nach dem erwarteten 6-7-wöchigen Entwicklungsprozess würde es gegen 20-jähriges Jubiläum von Linux veröffentlicht.
  • Im Dezember 2012 beschloss Torvalds, die Komplexität des Kernels zu reduzieren, indem die Unterstützung für i386-Prozessoren gestrichen wurde. Damit ist die 3.7-Kernelserie die letzte, die den ursprünglichen Prozessor noch unterstützt. Dieselbe einheitliche Serienunterstützung für den ARM-Prozessor.
  • Die am 2. September 2013 veröffentlichte Version 3.11 enthält viele neue Funktionen wie das neue O_TMPFILE-Flag für open (2), um temporäre Dateischwachstellen, experimentelles dynamisches AMD Radeon-Power-Management, Netzwerk-Polling mit geringer Latenz und zswap (komprimierter Swap-Cache) zu reduzieren.

Ich könnte auch hinzufügen , dass seit vielen Jahren die Linux Foundation hat die Berichterstattung über die Kernel - Entwicklung. Dies sind die Highlights der Kernel-Entwicklung 2012-2013:

  • Fast 92.000 Änderungssätze wurden aus 3.738 einzelnen Entwicklern zusammengeführt, die 536 Unternehmen repräsentieren (von denen wir wissen).
  • Eine Vielzahl wichtiger neuer Funktionen wurde in die Hauptlinie integriert. Dazu gehören der vollständige tickless-Betrieb, Benutzer-Namespaces, KVM- und Xen-Virtualisierung für ARM, die Verfolgung der Auslastung pro Entität im Scheduler, der Checkpoint / Neustart des Benutzerbereichs, die Unterstützung der 64-Bit-ARM-Architektur, das F2FS-Flash-orientierte Dateisystem sowie zahlreiche Verbesserungen des Netzwerks Bei den Latenz- und Bufferbloat-Problemen sorgen zwei unabhängige Subsysteme für schnelles Caching für Blockspeichergeräte und vieles mehr.
  • Der langjährige Streit um Android-spezifische Kernelfunktionen ist vollständig in den Hintergrund getreten. Die viel diskutierte "Wakelocks" -Funktion wurde leise durch eine andere Hauptlösung ersetzt, die in den neuesten Android-Geräten verwendet wird.
  • Die Verwendung automatisierter Tools zum Auffinden von Fehlern in Entwicklungskernen hat in diesem Zeitraum erheblich zugenommen. Tools wie der "Trinity" -Fuzz-Tester und das Zero-Day-Build-and-Boot-System finden eine große Anzahl von Fehlern in Pre-Release-Kerneln, verkürzen den Entwicklungszyklus und ermöglichen es der Community, qualitativ hochwertigere Releases bereitzustellen.
  • Die Beiträge aus der Mobilfunk- und Embedded-Branche nehmen weiter zu. Linaro, Samsung und TI trugen zum Beispiel zusammen 4,4% zu den Änderungen in der Vorgängerversion dieses Dokuments bei. Für den Zeitraum bis 3.10 trugen sie fast 11% aller Veränderungen bei.
  • Das Kernel-Projekt nahm zum ersten Mal am Outreach-Programm für Frauen teil und führte zu 41 Bewerbungen für 7 freie Stellen. Während des Bewerbungsprozesses wurden 374 Patches an den Kernel übermittelt, und über 1/3 dieser Patches wurden in der 3.10-Kernel-Version akzeptiert. Der interne Prozess ist jetzt im Gange, aber die Ergebnisse davon werden erst in zukünftigen Kernel-Releases sichtbar.

Darüber hinaus ist es nicht sehr schwierig zu quantifizieren, was mit dem Kernel passiert, da wir Metriken haben, die über die einzelnen Commits hinausgehen . Zum Beispiel wissen wir, dass der 1.0.0-Kernel im Jahr 1994 176.250 Codezeilen hatte; und wir wissen, dass ein moderner Kernel wie 3.10 15 803 499 Codezeilen hat. Beträchtlich mehr. Die Häufigkeit der Kernelfreigaben hat zugenommen (63 Tage für 3.10), ebenso die Änderungsrate (9 Commits pro Stunde oder mehr, während wir sprechen). So zitieren Sie die Linux Foundation:

Die Fähigkeit, diese Änderungsrate über Jahre hinweg aufrechtzuerhalten, ist in früheren öffentlichen Softwareprojekten beispiellos.

Aber das alles bringt meiner Meinung nach wenig Einsicht. Deshalb würde ich fragen:

  1. Kann man das Viertel Jahrhundert Evolution summarisch werden qualifiziert über die lineare Addition aller aufgelisteten Features , die diese Kernel im Laufe der Zeit bilden?
  2. Und gibt dies Aufschluss darüber, worum es im Linux-Kernel geht oder wohin es geht? Nach 25 Jahren Entwicklung lassen sich hieraus sicherlich einige Schlussfolgerungen ziehen?

Suche nach einer abstrakten Antwort in Laienbegriffen, die alles sagt, ohne alles zu sagen.


quelle
"Unterstützung für bis zu 229 Prozess-IDs" ist mir irgendwie auf die Nerven gegangen, also habe ich das gegoogelt und der einzige Hinweis ist anscheinend die ursprüngliche Quelle dieses Absatzes . Ich hatte gedacht, Prozess-IDs haben einen (vorzeichenbehafteten) 16-Bit-Bereich, dh ~ 16.000, aber es kann tatsächlich viel mehr sein . Es sind sicher nicht wenige hundert.
Goldlöckchen
3
Diese Frage ist zu weit gefasst, weil der Wikipedia-Artikel zu diesem Thema gesucht wird.
Gilles 'SO- hör auf böse zu sein'
Haben Sie vor, hier eine Arbeit zu schreiben? Das ist in Ordnung, aber es wäre hilfreich, wenn Sie genau wissen, was Sie tun möchten. Ich nehme an, es ist nicht nur eine gute Zusammenfassung für den nächsten Abend in der örtlichen Wasserstelle;)
Goldlöckchen
1
Ich erinnere mich vage, dass es mindestens ein paar Leute gibt, die Dissertationen darüber oder ähnliches schreiben wollen. Ich vermute, Sie werden wissenschaftliche Literatur zu diesem Thema finden ... Abgesehen davon, dass Sie auf vorhandene Veröffentlichungen verweisen, scheint es, dass Ihre Fragen monatelange Nachforschungen erfordern würden, um zu beantworten.
Derobert
Auf Ihre Frage müssen Sie uns vielleicht etwas über die Begriffe des Laien erzählen, um hier eine gute Antwort zu erhalten. Ansonsten poste dies auf lkml und erhalte ihr Feedback zu deiner Chronologie. Wenn Sie etwas Wichtiges verpasst haben, werden Sie darüber informiert.
Bananguin

Antworten:

11

Du fragst:

Kann diese Entwicklung eines Vierteljahrhunderts zusammengefasst über die lineare Addition aller aufgelisteten Merkmale, aus denen sich dieser Kernel im Laufe der Zeit zusammensetzt, hinaus qualifiziert werden? Und gibt dies Aufschluss darüber, worum es im Linux-Kernel geht oder wohin es geht?

Ich bezweifle, dass solche Fragen klar definierte Antworten haben. Ich denke jedoch, dass es nicht schwer ist, die Kräfte zu verstehen, die die Entwicklung des Linux-Kernels vorantreiben.

Erstens werden Computer immer wichtiger. Chomsky bemerkt irgendwo, dass sie für jede industrialisierte Wirtschaft von zentraler Bedeutung sind. Ein Computer ist nichts ohne ein Betriebssystem, weshalb Betriebssysteme wichtig sind.

In den 80er und 90er Jahren waren proprietäre Betriebssysteme auf dem Vormarsch. Dies war in gewisser Weise ein unnatürlicher Zustand. Microsofts Windows war für eine Zeit dominant und ist es in gewisser Weise immer noch, aber es hielt seine Position nur, indem es Netzwerkeffekte ausnutzte.

Mit dem Aufkommen des Internets wurde es möglich, ein Community-Betriebssystem zu entwickeln. Ein solches Betriebssystem wäre jedoch nur dann sinnvoll, wenn es nicht proprietär sein könnte. Die BSD-Betriebssystemfamilie war nicht in dieser Kategorie. Daher der Aufstieg des Linux-Kernels als Kern eines Community-Betriebssystems, das nicht proprietärisiert werden konnte.

Beachten Sie, dass viele große Computerhersteller hinter dem Linux-Kernel stecken. Warum? Die Freiheit ist dem Einzelnen wichtig. Gemeinschaften sorgen sich um Freiheit. Unternehmen interessieren sich nur für den Gewinn und die damit verbundenen Strategien. Ich glaube, dass viele Computerfirmen mit der Vorstellung eines "standardisierten" Betriebssystems Frieden geschlossen haben, wenn Sie so wollen, mit "gleichen Wettbewerbsbedingungen". Sie betrachteten das Beispiel von Microsoft, das viel Geld mit der Inhaberschaft eines Betriebssystems verdient, aber nicht jeder kann Microsoft sein, und einen einzigen Anbieter in einer solchen Machtposition zu haben, ist, gelinde gesagt, schon deshalb problematisch, weil es gibt sie ein unfairer Vorteil aus der Sicht der anderen Unternehmen.

Ich denke, da die meisten Unternehmen nicht in der Lage sind, Microsoft zu werden, und vielleicht auch nicht wollen, haben sie sich entschieden, ein "Commodity" -Betriebssystem zu unterstützen. Wiederum gleiche Wettbewerbsbedingungen. Somit kann jeder dieses Betriebssystem für beliebige Zwecke verwenden, und niemand in der Gruppe ist gegenüber anderen im Vorteil. Eine andere Sichtweise ist, dass die Tatsache, dass ein so grundlegendes Betriebssystem proprietär geworden ist, eine schwerwiegende Störung der Grundsätze des freien Marktes darstellt. Im Allgemeinen sind Unternehmen nicht besonders für freie Märkte, wenn sie auf der Gewinnerseite stehen können, aber wenn sie es nicht können, dann sind sie es.

Aus dieser Dynamik lassen sich die meisten Eigenschaften des Linux-Kernels ableiten. Zum Beispiel ist die modulare und formbare Natur eines Unix-ähnlichen Betriebssystems gut für ein Betriebssystem geeignet, das als "Ware" ausgelegt ist. Zum Teil ist die schnelle Entwicklung des Kernel-Projekts auch darauf zurückzuführen, dass versucht wird, all diese vielen Unternehmensanforderungen zu erfüllen, um das zu sein, was sie benötigen. Während viel Aktivität auf Hardware-Support / Treiber konzentriert ist, gibt es auch viel Aktivität außerhalb dieses Bereichs. ständige Weiterentwicklung neuer Funktionen sowie Pflege und Verbesserung bestehender Funktionen.

Natürlich sollten wir nicht den Wunsch der Community, gemeinhin als Freie-Software-Community oder manchmal auch als FOSS (Freie und Open-Source-Software) bezeichnet, außer Acht lassen, ein freies Betriebssystem für normale Menschen zu haben, das nicht von Unternehmen kontrolliert wird. Schließlich werden Projekte wie Debian und Fedora von Freiwilligen geleitet, die an diese Werte glauben. Ich denke jedoch, dass die Rolle der Unternehmen auch nicht unterschätzt werden sollte.

Faheem Mitha
quelle
1
+1 Um das Problem der gesellschaftspolitischen Kräfte anzusprechen, die Linux in Kombination mit GNU im Mainstream verwirrend gemacht haben. Ich denke, das ist ein sehr wichtiger Aspekt der Ursprünge, der, obwohl er als "nicht-technisches Problem" erscheinen mag, tatsächlich ein bestimmendes Merkmal der praktischen Entwicklung des Betriebssystems darstellt - siehe insbesondere die Schriften von Eric S. Raymond - und ein wesentlicher Teil der Dynamik seiner Übernahme durch eine breite Palette von Hardwareherstellern und als historisch vorherrschende Plattform des Internets.
Goldlöckchen
^ Beachten Sie, dass viele Leute einen Linux-Kernel in ihrem Haus haben und es deswegen nicht einmal wissen (Ihr Router, Ihre DVR-Box usw.)
Goldlöckchen
Ich empfehle Ihre Antwort für die rechtzeitige Lokalisierung des Kernels und die Berücksichtigung der vorherrschenden Dynamik - der Evolution des Computing. die Geschäftsattraktivität; die Marktkräfte; das Internet; Computerfreiheit; Lizenzierung; und wie sich all das auf die Implementierung im Kernel auswirkt, mit einem Ausblick auf Linux als Ganzes. Ich muss in Ihrer Erklärung über einen "unnatürlichen Zustand" lesen, dass uns möglicherweise die historische Perspektive fehlt, um dies richtig einzuschätzen - und das ist wichtig. Obwohl ich mich wirklich auf den Kernel als solchen konzentriert habe, werde ich mehr über Ihre obigen Punkte und Kommentare nachdenken. Vielen Dank!
1
@goldilocks: Ganz zu schweigen von Ihren Android-Handys.
Slebetman