Avatar von MetaCircularEvaluator
  • MetaCircularEvaluator

mehr als 1000 Beiträge seit 20.03.2015

Re: Userspace-Helferlein - auch für Fuse nutzbar?

7eggert schrieb am 16.08.2018 17:26:

MetaCircularEvaluator schrieb am 15.08.2018 04:20:

7eggert schrieb am 13.08.2018 20:46:

MetaCircularEvaluator schrieb am 01.08.2018 21:14:

D.h. Kernel "Module" sind ohne direkten Zugriff auf die interne Kernel-Infrastruktur zu nichts zu gebrauchen. Wirklich modularisiert mit fest definierten echten Schnittstellen zwischen den Komponenten ist da garnix! Linux ist halt wie jeder monolithische Kernel in Wirklichkeit eine einzige gigantische Code-Spagetti.

Da ich bereits Kernel-Module bearbeitet habe kann ich sagen: Nö.

Es gibt fest definiert Schnittstellen IM Kernel? Habe ich was verpasst? Wann hat Linus hierzu seine Meinung geändert?

Die Schnittstelle ist fest, bis sie Jemand ändert und dann im ganzen Kernel alle Nutzer anpaßt.

Sprich: Es gibt kein stabiles API…

Anpassungen an einer Stelle ziehen Anpassungen überall anders nach sich. Das ist genau das was man mit einer definierten public API verhindern will!

Das oben beschriebene nennt man hingegen "Spagetti Code".

Und überhaupt: Wie kann ein Kernel Modul ohne die Kernel Infrastruktur arbeiten? Hat man etwa Infrastruktur Services in Komponenten ausgelagert, die man auch so laufen lassen könnte?

Wie kann ein Nutzer-Programm ohne Kernel-Infrastruktur arbeiten?

Man ruft das Benötigte auf.

Ah so. Man kann also einfach so von außen Kernel Interna aufrufen. Ja, ne, ist klar.

Das wäre ja noch gruseliger als alles was ich mir vorstellen kann.

Das trifft aber garantiert sowieso nicht zu… Die sind ja nicht vollkommen gaga, und machen ALLES von außen erreichbar.

Kernel Module brauchen die interne Kernel Infra um zu funktionieren. Die ist aus dem Userspace nicht erreichbar! Nur die "public API" a.k.a. Syscalls sind es.

Linux ist ein Monolith. Damit per Definition eine "Code Spaghetti".

Wenn schon die Begriffe unklar sind …

Gut, dann erkläre ich mal den Begriff: Eine "Code Spaghetti" hat man, wenn alles mit allem Interagiert. Das hat nichts damit zu tun wie der Code AUSSIEHT. Man kann z.B. auch wundervoll übelsten Spaghetti Code fabrizieren, indem man alles "schön modular OOP" programmiert (das ist sogar meist der Standard!)

Kaum jemand ist der Lage "loose coupling" zu implementieren. In einer Sprache in der es nicht mal Sprach-Mittel dafür gibt, ist das nochmal eine Nummer aufwendiger (auch wenn es natürlich theoretisch geht). Wenn alles ein einziger gigantischer Prozess ist, mit einem einzigen gigantischen globalen State, innerhalb dessen alles alles beeinflussen kann, ist das der Inbegriff von "Code Spaghetti". Ob die "Code Spaghetti" jetzt in einer einzigen Datei in einer einzigen Funktion, oder in Tausenden Dateien, in Zehntausenden Funktionen implementiert ist, spielt keine Rolle. Semantisch ist das exakt das gleiche. Schaut (!) höchstens nach außen unterschiedlich aus.

Ich würde es natürlich begrüßen, wenn bei denen endlich die Vernunft einkehrt, und man den Kernel modularisiert, mit echten Schnittstellen zwischen den Komponenten, und die Module dann im User Space laufen lässt. So wie ein modernes OS halt aussehen sollte. Aber sogar wenn der Wille da wäre (zweifelhaft!) würde das wahrscheinlich Jahre, oder sogar Jahrzehnte dauern. Bis dahin gibt es aber Fuchsia. Nur das Fuchsia keine wirklich freie Software ist. Alles BEH!

Herr Tanenbaum, Sie sind enttarnt!°-)

Der hat Fuchsia entwickelt? Wäre mir neu.

Linux war schon zu W9x-Zeiten effektiv modularer aufgebaut, als eben jenes. Der SCSI-Kontroller ist z.B. unter beiden Systemen regelmäßig abgestürzt, unter W9x mit dem Rest des Systems zusammen.

Bist Du trollig? Win9x ist ein System ohne echten Speicherschutz, ein DOS Aufsatz! Du willst jetzt bitte nicht allen ernstes DOS mit Linux vergleichen?

Von sauberer Mircro-Kernel Architektur kann bei Win9x erst recht nicht gesprochen werden. Oder, Moment: Die haben bestimmt diese spezielle Micro-Kernel MS DOS Version unter der Haube genutzt, die bis heute geheim gehalten wird… ;-)

Bewerten
- +
Anzeige