Autor Thema: Frage zum Exokernel  (Gelesen 8342 mal)

X-Mind

  • Gast
Gespeichert
« am: 31. December 2009, 17:05 »
Ich hätte da mal eine frage zum exokernel.

Wie macht der Exokernel das eigendlich mit den libs??
Werden die mit in den kernel gelinkt oder werden die nachgeladen???

und wo liegen da dann die treiber??

Ich habe mal gehört das beim Exokernel die HAL in den Bibliotheken liegt,
aber im wiki steht das er keine HAL hat.

Was ist jetzt richtig???

und noch eine Frage:

Ist das nicht ein bischen riskant, wenn man NORMALE!?!?! Userspace-Programme direkt auf die HW zugreifen lässt??

MfG X-Mind
« Letzte Änderung: 01. January 2010, 14:17 von X-Mind »

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #1 am: 31. December 2009, 18:44 »
Zitat von: X-Mind
Ist das nicht ein bischen riskant, wenn man NORMALE!?!?! Userspace-Programme direkt auf die HW zugreifen lässt??
Nein, weil man ja reglementieren kann, welche Programme Zugriff erhalten und welche nicht. Und ob ich jetzt bestimmten Userspace-Programmen solchen Zugriff erteile oder ob die einfach im Kernel laufen und keine explizite Erlaubnis brauchen, ist sicherheitstechnisch gesehen eher kein Unterschied.

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 31. December 2009, 19:27 »
Hallo,


Und ob ich jetzt bestimmten Userspace-Programmen solchen Zugriff erteile oder ob die einfach im Kernel laufen und keine explizite Erlaubnis brauchen, ist sicherheitstechnisch gesehen eher kein Unterschied.
Nunja, wenn man einem User-Space-Prozess Zugriff auf eine bestimmte-Hardware-Komponente erlaubt dann gilt das eben nur für diese eine Komponente und nichts anderes (das lässt sich über die prozess-spezifische Page-Table recht flexibel realisieren). Wenn Code mit Kernel-Privilegien läuft dann hat er vollen Zugriff auf alles, jede Hardware und jeden (Kernel-)Speicherbereich. Dieser deutlich bessere Schutz (jedem Prozess nur genau das zu erlauben was er wirklich benötigt und nicht mehr) gegen SW-Fehler ist ja gerade einer der Gründe für einen Micro-Kernel und gegen einen Monolithen.

Der Exo-Kernel geht da gegenüber einem klassischem Micro-Kernel in der Hinsicht weiter das im Kernel nur noch die Schutzmechanismen selber drin sind aber deren Verwaltung ein spezieller User-Space-Prozess macht. Also z.B. eine Exception wird zwar im Kernel geworfen (die CPU wechselt bei einer Exception immer in den Kernel-Mode) aber wird dann von dem speziellem User-Mode-Prozess (welcher die Exception per IPC o.ä. gemeldet bekommt) verarbeitet. Dafür benötigt der Kernel eine recht spezielle/umfangreiche API über die jedes Detail der Schutzmechanismen ganz exakt gemanagt werden kann. Der Exo-Kernel und die speziellen User-Space-Prozesse die jene Dinge regeln die bei einem Micro-Kernel der Kernel selber macht sind eine Einheit die exakt zusammen passen muss.

Ich persönlich sehe in einem Exo-Kernel gegenüber einem schlanken Micro-Kernel keine Vorteile, aber rein theoretisch ist es besser so wenig Code wie möglich im Kernel-Space zu haben. Andererseits wirkt sich ein Fehler in den speziellen User-Mode-Prozessen von denen der Exo-Kernel exzessiv abhängig ist (fast) genau so aus wie wenn der fehlerhafte Code direkt im Kernel-Space währe. Dafür wird die eh schon wenige Funktionalität eines Micro-Kernel über mehrere Programme verteilt und ist eventuell schwerer zu warten/debuggen.

Die Frage Micro vs. Exo ist IMHO eher akademischer Natur. :-D


Wie macht der Exokernel das eigendlich mit den libs??
Werden die mit in den kernel gelinkt oder werden die nachgeladen???
Ich verstehe absolut nicht was Du meinst. Könntest Du das bitte etwas klarer formulieren?


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

X-Mind

  • Gast
Gespeichert
« Antwort #3 am: 31. December 2009, 21:55 »
Zitat
Zitat
Wie macht der Exokernel das eigendlich mit den libs??
Werden die mit in den kernel gelinkt oder werden die nachgeladen???
Ich verstehe absolut nicht was Du meinst. Könntest Du das bitte etwas klarer formulieren?

Ich meinte damit ob die Libs beim Linken in den kernel Integriert werden oder
Ob die von der Festplatte, Diskette, oder von was auch immer geladen werden.
« Letzte Änderung: 31. December 2009, 21:57 von X-Mind »

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 31. December 2009, 22:10 »
Hallo,


Ich meinte damit ob die Libs beim Linken in den kernel Integriert werden oder Ob die von der Festplatte, Diskette, oder von was auch immer geladen werden.
Was meinst Du mit "die Libs"?


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

X-Mind

  • Gast
Gespeichert
« Antwort #5 am: 31. December 2009, 22:38 »
Libs = Mehrzahl von Lib
Lib = Bibliothek

Ach ja, Wie könnte man ein Exokernel implementieren??

@erik.vikinger

Ich glaube du verwechselst den Exokernel mit dem nanokernel.

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #6 am: 31. December 2009, 22:48 »
Ich glaube nicht, dass er das verwechselt, zumindest entsprechen seine Aussagen meinem Verständnis zum Exokernel.

Zitat von: X-Mind
Libs = Mehrzahl von Lib
Lib = Bibliothek
Ich glaube, das war schon ziemlich klar, die Frage ist (zumindest für mich) nur: Welche Libs denn?

Programm Noob

  • Gast
Gespeichert
« Antwort #7 am: 01. January 2010, 02:26 »
Ich glaube er meint die Hal , weil er irgendwo was gelesen hat, wo stand, das die HAL in Bibliotheken sei.

@X-Mind lieg ich da mit richtig oder total falsch??

Programm Noob

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 01. January 2010, 09:24 »
Hallo,


@erik.vikinger
Ich glaube du verwechselst den Exokernel mit dem nanokernel.
Naja, wie ich schon schrieb, die Unterschiede sind eher akademischer Natur. Beide versuchen extrem wenig bzw. noch weniger Code im eigentlichen Kernel zu haben, das ist zwar ein sinnvoller Ansatz aber wie weit man den treiben muss ist zum überwiegenden Teil Geschmacksfrage. Hier im Forum geht es, zumindest hab ich das so verstanden, eher um die Praxis und da spielt es keine so große Rolle was für einen genauen Gattungsnamen Dein Kernel nun hat. Da gibt es eh keine starren Regeln und die Übergänge sind sehr fließend.


Libs = Mehrzahl von Lib
Lib = Bibliothek
Wenn Du nun noch schreiben könntest welche Libs (also welche Funktionalität diese bietet) und von wem diese zu welchem Zweck wie benutzt werden sollen dann könntest Du eventuell sogar eine brauchbare Antwort erhalten.

Ach ja, Wie könnte man ein Exokernel implementieren??
Hier das selbe. Wenn Du eine bessere Antwort als "Den Code schreibst Du am besten mit einem Text-Editor und lässt ihn mit Compiler und Linker zu ner Binär-Datei umwandeln." möchtest dann musst Du Deine Frage etwas genauer/verständlicher formulieren.


Grüße und Willkommen in 2010
Erik
Reality is that which, when you stop believing in it, doesn't go away.

X-Mind

  • Gast
Gespeichert
« Antwort #9 am: 01. January 2010, 15:28 »
Ok, Ich habe da was verwechselt.

Ich habe immer gedacht das der Exokernel Durch die Bibliotheken
Programme von verschiedenen Plattformen ausführen kann, und nicht das er wirklich ALLES was nur geht aus dem Kernel auslagert.


 

Einloggen