DOS Funktionsweise
-
Hi
Ich bin echt ratlos und zwar verstehe ich irgendie die funktionsweise von DOS nicht
egal ob FreeDOS MSDOS ... is eh im prinzip alles ähnlichDOS ist ja vom system her ein SingeTask System also man kann nur ein Programm ausführen is oder anders gesagt es ist kein Multitask system
Was ich jetzt nicht ganz verstehe ist wie das mit Treibern ausssieht bzw mit DOS ansich der Kernel muß ja trotzdem abgearbeitet werden bzw Funktionen von ihm
den er stellt ja mit Himem.sys oder EMM386.exe die speicherverwaltung dar bzw mit keyboard.sys die tastatureingaben....
Auf was ich hinauswill ist kann man in DOS jetzt multithreading betreiben oder wie funktioniert sowasAngenommen ich würde einen OpenGL treiber für DOS schreiben wär sowas überhaupt nutzbar oder geht das aufgrund des Betriebssystem konzeptes nicht
Ich wäre über alles was mit DOS zu tun hat sehr dankbar links buchempfehlungen und dergleichen sind willkommene dinge also nur her damit
mfg sepp
-
sepp2 schrieb:
Was ich jetzt nicht ganz verstehe ist wie das mit Treibern ausssieht bzw mit DOS ansich der Kernel muß ja trotzdem abgearbeitet werden bzw Funktionen von ihm
den er stellt ja mit Himem.sys oder EMM386.exe die speicherverwaltung dar bzw mit keyboard.sys die tastatureingaben....
Auf was ich hinauswill ist kann man in DOS jetzt multithreading betreiben oder wie funktioniert sowasErstmal solltest du wissen, dass DOS an sich gar kein richtiges Treiberkonzept hat. Ein Treiber ist in DOS praktisch ein TSR-Programm (nach Beendigung speicherresident), das einige Interruptfunktionen installiert.
Weiter gibt es in DOS idR. erstmal auch gar keine Schutzmechanismen, ueber die sich ueberhaupt verschiedene Prozesse definieren liessen: Alles liegt einfach so ungeschuetzt im Speicher. Du hast theoretisch immer auf alles Zugriff.Das mit den Treibern... sagen wir mal, das funktioniert mit einem sehr eingeschraenkten Multi-Thread-System.
Was aktive Hardware (Soundkarte, Grafikkarte, Tastatur, Maus, usw.) betrifft, bietet die x86-CPU von Hardware-Seite die Moeglichkeit, sog. Interrupts einzurichten. Das ist einfach gesagt eine Moeglichkeit, den aktuellen Programmablauf automatisiert zu unterbrechen, um von dieser Hardware generierte Ereignisse zu bearbeiten, und anschliessend wieder in das aktuelle Programm zurueck zu kehren.
Diese Behandlungsroutinen koennte man im Grunde als Ereignis-getriggerte Threads betrachten - wobei die intern natuerlich kaum einem Standard unterliegen und "DOS" weis von diesen "Threads" im Grunde nur, das im Speicher irgendein Programm liegt, das Platz verbraucht.Im DOS-Kernel selbst gibt es praktisch nichts, was irgendwelche regelmaessige Abarbeitung in "Prozessform" noetig haette.
Die Hauptaufgaben des DOS-Kernel bestehen in der Datenverwaltung.
Also Dateien, Datei-Handles, Laden von Programmen und Funktionen zur Speicherverwaltung, etc.
Das passiert alles theoretisch im Prozess und "Thread" des aktuell laufenden Programms, wenn eine entsprechende Funktion aufgerufen wird (zB. zum Speicher reservieren, oder Oeffnen von Dateien). Diese wird dann theoretisch genau wie jede andere Funktion in diesem Programm auch behandelt.Also zusammengefasst: Ein Treiber ist in DOS im Grunde einfach ein TSR-Programm mit irgendeiner fuer dieses Programm/Treiber spezifischen Funktions- u. ggf. Hardwareschnittstelle mit ggf. von der Hardware getriggerten Threads.
Der DOS-Kernel selbst kommt ohne jegliche eigene Prozesse oder Threads aus.sepp2 schrieb:
Angenommen ich würde einen OpenGL treiber für DOS schreiben wär sowas überhaupt nutzbar oder geht das aufgrund des Betriebssystem konzeptes nicht
Koenntest du tun, waere nutzbar. Muesstest dir dazu eben nur irgendeine - idealerweise ueber Interrupts zugaengliche - Schnittstelle ueberlegen.
Weiters sollte dir klar sein, dass auf der anderen Seite deines Treibers sofort die nackte Hardware steht, mit der du direkt kommunizieren musst.