Autor Thema: Treiber gleich Prozess?  (Gelesen 6762 mal)

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« 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.
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 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.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 18. January 2013, 11:43 »
Und wenn du sie als Module (Libraries) baust, hast du einen modularen Kernel.
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 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. ;)
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #4 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:

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #5 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).
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #6 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.

 

Einloggen