521
OS-Design / Frage zu meinem Kerneldesign
« am: 02. December 2008, 23:17 »
Nabend zusammen,
ich habe mir mal Gedanken über meinen Kernel gemacht.
Mein Kernel soll wirklich nur das Nötiggste machen.
- GDT/IDT/ISR/IRQ/PIC/PIT initialisieren
- den Scheduler bereitstellen
- Methoden für den Speicher (memset, etc)
Der Rest soll über Treiber gemacht werden:
- Dateisystem , Paging und alles was sonst noch an Treibern fehlt
Diese Treiber sollen erst nachgeladen werden (sprich nicht mitkompilieren).
Wie kann ich die denn zur Laufzeit laden?
Nun zu meinen Fragen:
Ist dieser Aufbau überhaupt sinnvoll?
Bei dem Scheduler habe ich ein paar Verständnisfragen:
- Was brauch ich denn alles an Strukturen?
Ich habe mir gedacht, dass ich einerseits einen Prioritätsparameter habe, dann habe ich noch einen counter der die Rechenzeit mit zählt und dann die Strukturen für die Register und den Stack.
Wie rette ich den gesamten Prozessor in die Strukturen?
Mein Programm wird doch über einen Interrupt unterbrochen, wenn ich nun die Behandlungsroutine aufrufe steht in meinem PC doch schon eine andere Befehlsadresse. Wo bekomme ich die alte her, damit ich sie speichern kann?
Wenn mein Scheduler arbeitet muss ich doch ein paar Interrupts maskieren, oder?
Dachte jetzt mal an den PIT und Software-Interrupts.
Wie mache ich das?
Das war es erst einmal an Fragen.
Da kommen bestimmt noch mehr.
gruß,
rizor
ich habe mir mal Gedanken über meinen Kernel gemacht.
Mein Kernel soll wirklich nur das Nötiggste machen.
- GDT/IDT/ISR/IRQ/PIC/PIT initialisieren
- den Scheduler bereitstellen
- Methoden für den Speicher (memset, etc)
Der Rest soll über Treiber gemacht werden:
- Dateisystem , Paging und alles was sonst noch an Treibern fehlt
Diese Treiber sollen erst nachgeladen werden (sprich nicht mitkompilieren).
Wie kann ich die denn zur Laufzeit laden?
Nun zu meinen Fragen:
Ist dieser Aufbau überhaupt sinnvoll?
Bei dem Scheduler habe ich ein paar Verständnisfragen:
- Was brauch ich denn alles an Strukturen?
Ich habe mir gedacht, dass ich einerseits einen Prioritätsparameter habe, dann habe ich noch einen counter der die Rechenzeit mit zählt und dann die Strukturen für die Register und den Stack.
Wie rette ich den gesamten Prozessor in die Strukturen?
Mein Programm wird doch über einen Interrupt unterbrochen, wenn ich nun die Behandlungsroutine aufrufe steht in meinem PC doch schon eine andere Befehlsadresse. Wo bekomme ich die alte her, damit ich sie speichern kann?
Wenn mein Scheduler arbeitet muss ich doch ein paar Interrupts maskieren, oder?
Dachte jetzt mal an den PIT und Software-Interrupts.
Wie mache ich das?
Das war es erst einmal an Fragen.
Da kommen bestimmt noch mehr.
gruß,
rizor