Hi,
ich bin gerade dabei Multitasking in meinem OS zu integrieren. Aber irgenwie habe ich das nicht so richtig verstanden. Ich möchte als Test einfach nur drei verschiedene Tasks verwenden. Diese sollen halt gleichzeitig bzw. nebeneinander (halt Multitasking) laufen. Aber ich verstehe das mit dem IRQ0, Tss, usw. nicht. Also ich habe drei TS-Deskritoren in der GDT. Diese zeigen auf ein TSS-Segement. Dann habe ich eine Tabelle von 3*6 Byte. Dort steht die Task-ID, TSS-Deskritprnummer in der GDT, und der Status des Task. Aber weiter komme ich nicht. Mit ltr muss ich ja den aktuellen Task laden. Als parameter muss ich ein Selektor angeben der auf einen TS-Deskriptor zeigt der auf ein TSS-Segment zeigt. In diesem TSS-Segment steht der aktuelle CS. Aber auf was muss ich IP setzten? Auf der adresse unter dem ltr Befehl? DS und ES habe ich auf das aktuelle Datensegment gesetzt. Dann setzte ich die Adresse für den IRQ0. Dort muss doch dann der Code stehen der die Task wechselt oder? Mit jump muss ich dann auf ein TS-Deskriptor springen. Aber wie komme ich dann nach der ausführen das Task zurück unter dem jump? Ich muss dann ja ein EOI senden (mov al,20h out 20h,al). Also ich verstehe das nicht so ganz. Im IRQ0 Muss Code stehen der den Task-Wechsel ausführt oder nicht? Aber wie komme ich nach dem jump wieder zurück. Und wie lange wird der Task auf dem jump zeigt dann ausgeführt? Ich grübbele schon so lange. Ich verstehe das nicht. Hoffentlich kann einer von euch mir helfen. Bitte.
Danke!!!