Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: OsDevNewbie am 17. January 2013, 22:36

Titel: Treiber gleich Prozess?
Beitrag von: OsDevNewbie am 17. January 2013, 22:36
Hallo,
ich frage mich ob ein man ein Treiber als einen eigenen Prozess betrachten soll oder als eine Art Library? Also mit Letzterem meine ich so etwas ähnliches wie ein Kernel.
Titel: Re: Treiber gleich Prozess?
Beitrag von: kevin am 17. January 2013, 23:56
Wenn deine Treiber als eigene Prozesse laufen, hast du einen Mikrokernel; wenn sie in den Kernel eingebaut sein, einen Monolithen.
Titel: Re: Treiber gleich Prozess?
Beitrag von: rizor am 18. January 2013, 11:43
Und wenn du sie als Module (Libraries) baust, hast du einen modularen Kernel.
Titel: Re: Treiber gleich Prozess?
Beitrag von: kevin am 18. January 2013, 11:57
Nur wenn man die Module dynamisch zur Laufzeit laden und entladen kann, oder? Statisch gelinkte Libs sind ja langweilig.

Und ein Monolith ist es dann trotzdem noch. ;)
Titel: Re: Treiber gleich Prozess?
Beitrag von: XanClic am 18. January 2013, 19:06
In der Tat ist das eine sehr gute Frage, weil du in den zwei Sätzen die drei Hauptkernelarten beschrieben hast:

ich frage mich ob ein man ein Treiber als einen eigenen Prozess betrachten soll
Das sind Microkernel (jeder Treiber ist ein Prozess).

oder als eine Art Library
Das sind Exokernel (jeder Prozess erhält vollen Hardwarezugriff und die Bibliothek enthält Funktionen, um den Zugriff zu abstrahieren – diese Funktionen sind also die Treiber).

Also mit Letzterem meine ich so etwas ähnliches wie ein Kernel.
Das sind Monolithen (die Treiber sind im Kernel und jeder Prozess ruft über Syscalls die Treiber auf, um den Hardwarezugriff durchzuführen).


Zumindest habe ich das bisher so verstanden. Gerade bei Exokerneln erhält man ja selten konsistente Beschreibungen, was das eigentlich sein soll. :wink:
Titel: Re: Treiber gleich Prozess?
Beitrag von: OsDevNewbie am 19. January 2013, 00:39
Welche Kernelart (Monolith oder Mikro) ist den eigentlich performanter? Welche Art sollte man bei welcher Anwendung auswählen?
Könnte man denn beim Mikrokernel nicht auch einfach die Treiber als "spezieller Prozess" starten, der im Kernelmode läuft? Somit müsste die Kommunikation zwischen Kernel und Treiber nicht über Syscalls laufen sondern der Treiber könnte direkt Kernelfunktionen aufrufen wie beim Monolith (sozusagen eine Mixtur aus Monolith und Mikrokernel :-D).
Titel: Re: Treiber gleich Prozess?
Beitrag von: Svenska am 19. January 2013, 00:49
Das sind dann Hybridkernel.
Einen "Königsweg" für den besten Kerneltyp gibt es bisher nicht.
Monolithen sind i.d.R. performanter als Mikrokernel.
Windows ist hybrid, Linux ein modularisierter Monolith, *BSD größtenteils monolithisch, Echtzeitsysteme (RTOS) i.d.R. Mikrokernel.