Autor Thema: Vorgehensweise der Implementationen  (Gelesen 14647 mal)

woigl

  • Beiträge: 93
    • Profil anzeigen
    • http://www.nogos.org
Gespeichert
« am: 21. August 2005, 08:07 »
Nun mein C-Kernel laeuft mal soweit ganz gut...

In welcher Reihenfolge wuerdet ihr nun die Dinge wie Multithreading, Keyboard, Harddisk Driver usw. implementieren?

Bzw. was ist ueberhaupt mal als Basis sinnvoll...

Sollte man sich an den Posix Standard halten? Wenn ja wo bekommt man eine schoene Uebersicht darueber?

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #1 am: 21. August 2005, 10:14 »
Erstmal: Soll dein Kernel Monolitisch, Micro, Hybrid oder Exo werden?

Zu Posix: Wenn du noch ein weiteres (so-gut-wie)-Unix produzieren willst, ja, musst du praktisch sogar, ansonsten würde ich doch von diesem Standard abraten. Wobei etwas wie Cygwin nicht ganz unpraktisch wäre, aber ich würde mir nicht von dem Posix-Standard mein Design ruinieren lassen.
*post*

woigl

  • Beiträge: 93
    • Profil anzeigen
    • http://www.nogos.org
Gespeichert
« Antwort #2 am: 21. August 2005, 11:01 »
Also irgendwie hast du vollkommen Recht - die Frage ist nur wie sieht es dann mit der Portierung anderer Anwendungen auf mein System aus?

Ebenfalls stellt sich dann auch noch die Frage ob ich auch einen eigenen Compiler bauen muß, da ja der GCC unter GLIBC läuft... oder?

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #3 am: 21. August 2005, 11:11 »
Tja, ich frage mich auch warum es beim gcc so problematisch ist ihn unter auch nur unter Cygwin, DJGPP oder MinGW zu bauen.
Für einen C-Compiler sollte man doch eigentlich mit C99-Standard Funktionen auskommen - und dann könnte man den auch mit jeder beliebigen C99-kompatiblen C Bibliothek bauen.
*post*

woigl

  • Beiträge: 93
    • Profil anzeigen
    • http://www.nogos.org
Gespeichert
« Antwort #4 am: 21. August 2005, 11:23 »
Zitat von: Legend
Tja, ich frage mich auch warum es beim gcc so problematisch ist ihn unter auch nur unter Cygwin, DJGPP oder MinGW zu bauen.
Für einen C-Compiler sollte man doch eigentlich mit C99-Standard Funktionen auskommen - und dann könnte man den auch mit jeder beliebigen C99-kompatiblen C Bibliothek bauen.


sollte man... ...Also C99 ist der Ansi-C Standard - gibts da wo eine Page wo man die ganzen zu implementierenden Befehle für diesen Standard einsehen kann?

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 21. August 2005, 17:18 »
Um Prozesse, Treiber usw. vernünftig verwalten zu können, brauchst du erstmal ein Memory Management.

Es gibt Systeme, die das Memory Management ausserhalb des Kernels in einem eigenen Prozess verwalten, das halte ich aber nich für sinnvoll, da du überhaupt erst Speicher brauchst, um die Prozesse darein laden zu können.

Das Prozess Management/den sheduler würde ich auch in den Kernel integrieren, es nur zusätzlichen Aufwand erzeugt, den scheduler als eigenen Prozess zu implementieren.

Was du danach machst hängt von deinem OS ab. Ich würde es für sinnvoll halten, erstmal einen Treiber für das Bootlaufwerk zu schreiben, und dann andere Treiber für Keyboard, Maus, wenn du willst auch Grafik usw. zu basteln.

Das ganze ist aber nur ein Vorschlag, du kannst dein OS auch komplett anders strukturieren.

woigl

  • Beiträge: 93
    • Profil anzeigen
    • http://www.nogos.org
Gespeichert
« Antwort #6 am: 21. August 2005, 17:22 »
Ja Grafik und so sollte auch mal kommen, aber daran denke ich noch nicht!!

Was genau versteh man unter Memory Management, was beinhaltet das alles, gibts da ein Tutorial??

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 21. August 2005, 17:30 »
Naja, mit Memory Management meine ich Funktionen, um dynamisch Speicher zu allocaten, sowie die das Paging zu verwalten.

Wie du das einbaust, ist eigentlich ganz dir überlassen, du kannst die komplette malloc() Funktion in den Kernel einbauen, oder nur systemcalls bereitstellen, um Pages zu allocieren und zu mappen.

woigl

  • Beiträge: 93
    • Profil anzeigen
    • http://www.nogos.org
Gespeichert
« Antwort #8 am: 21. August 2005, 17:51 »
Zitat von: SSJ7Gohan
Naja, mit Memory Management meine ich Funktionen, um dynamisch Speicher zu allocaten, sowie die das Paging zu verwalten.

Wie du das einbaust, ist eigentlich ganz dir überlassen, du kannst die komplette malloc() Funktion in den Kernel einbauen, oder nur systemcalls bereitstellen, um Pages zu allocieren und zu mappen.


ja ich dachte schon den malloc lt. Ansi C zu implementieren - aber trotzdem auch die Systemcalls bereitstellen - oder ist das nicht gu?

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #9 am: 21. August 2005, 18:26 »
Du wirst sowieso zwei malloc's haben. Eines für den Kernel und eines noch mal in deiner C Lib. Warum? Der Kernel kann den Anwendungen nur auf 4kb genau Speicher geben, daher wirst du das selber nochmal unterteilen müssen.
*post*

woigl

  • Beiträge: 93
    • Profil anzeigen
    • http://www.nogos.org
Gespeichert
« Antwort #10 am: 21. August 2005, 19:02 »
Zitat von: Legend
Du wirst sowieso zwei malloc's haben. Eines für den Kernel und eines noch mal in deiner C Lib. Warum? Der Kernel kann den Anwendungen nur auf 4kb genau Speicher geben, daher wirst du das selber nochmal unterteilen müssen.


Okay ich denke das versteh ich mal soweit - also ist die C Lib sogesehen unabhaengig zum Kernel...

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #11 am: 21. August 2005, 21:21 »
Nun ja, sie baut auf dem Interface vom Kernel auf. Muss aber trotzdem noch etwas tun! Also sie ist nicht nur ein Wrapper.
*post*

 

Einloggen