[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Verständnisfrage über Linux-Kernel



Andreas Juch wrote:
> Am Mittwoch, den 08.10.2008, 22:23 +0200 schrieb Sergej Heimann:
[...] 
>> Grund für die Frage ist, dass ich irgendwie keinen großen
>> Unterschied zwischen monolithischen und Hybridkernel sehe.
> 
> Schau dir mal an wie der GNU Hurd funktioniert, dann verstehst du den
> Unterschied wahrscheinlich. Der Hybridkernel ist eigentlich ein
> Microkernel bei dem einige wichtige Funktionen im Microkernel liegen,
> oder anders gesagt ein Monolithischer Kernel bei dem unwichtige Dinge
> aus dem Kernelspace ausgelagert werden :-)
> 
> Der Microkernel ist zwar vielleicht die elegantere Lösung, aber schon
> Andrew Tannenbaum ist mit seinem "Linux is obsolete"-Statement aus
> heutiger Sicht ziemlich weit daneben gelegen.

Mmh, ja, aus pragmatischer Sicht finde ich das auch. Der Linux-Kernel
funktioniert einfach und zumindest für mich funktioniert er gut. Es
stellt sich mir aber die Frage, wie lange das noch gut geht. Ich bin was
den Linux-Kernel angeht fast unbewandert, aber aktuelle Dinge wie etwa
die Entfernung des Big-Kernel-Lock zeigen doch ziemlich gut, welche
Probleme man sich mit diesem riesigen, komplexen Gebilde einhandeln
kann.

Es ist ja eben nicht so, dass man klar definierte und vor allem
abgetrennte Bereiche hat, in denen man sich bewegt. Der ganze Kernel
ist ein einziges riesiges Programm und die Entwicklung an einem der
sogenannten Subsysteme bedeutet eigentlich, dass man höllisch aufpassen
muss, keinen Programmierfehler zu begehen, weil man damit u.U. den
ganzen Kernel abstürzen lässt.

Anderes aktuelles Beispiel: Der kaputte Netzwerkkartentreiber e1000e,
der unter bestimmten Umständen die Hardware beschädigen kann. Man
vermutet, dass der Fehler nicht im Treiber selbst liegt, sondern
irgendwo anders. Und umgangen wurde er ja anscheinend auch irgendwie.
Aber wo der Fehler nun wirklich steckt, weiß keiner. (Oder gibt es da
etwas neues?)

Ich bin mir ziemlich sicher, dass das mit einem Micro-Kernel, bei dem
die einzelnen Subsysteme hübsch Message-Passing betreiben, nicht
passiert wäre. Verteilte Programmierung mittels Message-Passing ist
nunmal einfach weniger Fehleranfällig und leichter zu Debuggen und
_viel_ einfacher zu programmieren.

Ich sehe aber natürlich auch das Problem, einen neuen Kernel von Grund
auf zu entwickeln. Linux funktioniert gut, aber es ist da schon schwer,
für aktuelle Hardware Treiber zu bekommen. Bei den aktuellen Projekten
zu Micro-Kernel scheint das Ganze lediglich aus akademischer Sicher
interessant zu sein.

Es gab mal einen schönen Vortrag über einen Micro-Kernel von einem
holländischen Wissen- schaftler (nicht Tanenbaum), gehalten auf
irgendeinem Linux-Kongress. Der Mann hatte es wahrlich nicht einfach,
sich vor den Linux-Jüngern zu behaupten. Ich finde den Link jetzt aber
auf die Schnelle nicht.

Attachment: pgpb5U5sDZKJB.pgp
Description: PGP signature


Reply to: