Autor Thema: Paging und Multitasking  (Gelesen 4941 mal)

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
« am: 11. December 2004, 23:41 »
Hiho,

ich hab bei mir jetzt Paging und Multitasking (die höllische Kombination ;) ) soweit am laufen. Nur zwei Probleme gibt es noch...

1. Userprozesse laufen nur, wenn der KernelCode (1mb-4mb) in den Addressraum gemappt ist, woran kann das liegen? Was wird alles durch Paging beeinflußt? GDT? IDT? Scheduler? usw...

2. Wenn Userprozesse nicht cs=8 und ds=16 bekommen, krieg ich immer die "Fehlermeldung" CPL != DPL. Woran kann das liegen?

MfG GhostCoder
A man, a legend!

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #1 am: 12. December 2004, 00:44 »
Alloa.

Soweit ich weiß müssen GDT/IDT für jeden Prozess sichtbar sein. Sprich du musst diesen Teil des Kernels in jeden Adressraum der Userprozesse mappen.

Und das mit dem DP Problem kann sein, das du den Selektor falsch lädst.

Im Selektor wird nicht nur die "Adresse" des Deskriptors angegeben, sondern auch die DPL die "erwartet" wird, wenn ich das richtig in erinnerung habe.
----------------------
Redakteur bei LowLevel

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 12. December 2004, 13:29 »
Hiho,

das mit der gdt/idt hab ich schon probiert, bringts nichts. Aber, muss der Scheduler auch reingemappt werden? Oder zeigt der Eintrag in der IDT auf ne physikalische Addresse?

MfG GhostCoder
A man, a legend!

 

Einloggen