Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: GhostCoder am 11. December 2004, 23:41

Titel: Paging und Multitasking
Beitrag von: GhostCoder 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
Titel: Paging und Multitasking
Beitrag von: TeeJay 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.
Titel: Paging und Multitasking
Beitrag von: GhostCoder 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