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