Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - Peabrain

Seiten: [1]
1
Lowlevel-Coding / Re: Devices. aber wie?
« am: 23. August 2009, 09:21 »
ja, genau. aber die treiber schreiben ist nicht mein poblem, sondern wie ich das ansprechen organisieren soll. zum beispiel das laden des treibers. mache ich das über ein tss oder nur über einen gdt eintrag. dann darf das  programm ja nur relative adressirung haben. und so weiter. fragen fragen fragen. :D
2
Lowlevel-Coding / Devices. aber wie?
« am: 21. August 2009, 23:53 »
hallo leute.

ich hab da ein kleines problem. ich denke die ganze zeit darüber nach, wie ich devices in meinen kernel einbaue. vielleicht über softwareinterrupts. kann mir jemand bitte auf die sprünge helfen?

danke,
gruß.
3
hmm, das mit den tss in der gdt stimmt wohl. nur muß man ja trotzdem noch für jeden task eine struktur zur speicherung anlegen. also speicher spart man nicht.
4
aber wo liegt der vorteil im softwaremultitasking?
man verbraucht auf jedenfall den selben speicher, denn die strukturen zum speicher der tss müssen ja auch dort vorhanden sein.
desweiteren sehe ich da ein sicherheitsproblem, da die hardwareinterrupts keinen pl check machen. somit kann jeder der an den pit und die irqtable rankommt, den scheduler ändern.

oder hab ich was übersehen?
5
also ich hab die 0x200 im tss.flag zu stehen, weil er mir sonst das tss beim taskwechsel garnicht ausfüllt. vielleicht liegt auch da der fehler. den taskwechsel selbst mache ich mit dem backlink und einem iret.

also im moment funktioniert alles soweit. nur das mit den interrupts geht nicht richtig. die vektoren scheinen auch vom cr3 modifiziert zu werden. was natürlich ungünstig ist, wenn man sie von irgendwo aufruft und im cr3 register steht eine andere table drin. hmm.

alles ein wenig verwirrend. :)
6
danke erstmal für deine antwort.

ich hab mir die dokumentationen von intel nochmal genauer angesehen und festgestellt, wenn ich im tss bei eflags keine 0x200 (nt=flag nehme ich an) setze funktioniert es. na mal sehen, vielleicht sollte ich dieses flag erst setzen, wenn ich im taskmanager angekommen bin.
 ich werds mal ausprobieren.

und außerdem müssen wohl alle globalen variablen und tabellen in jeder pagedir an der gleichen adresse stehen. hmm. auch blöd.

so, jetzt muss ich mein ursprüngliches projekt erstmal wieder meinem neuen kenntnissstand anpassen.

danke nochmal,

gruß
7
Lowlevel-Coding / Verständnissproblem mit paging und prozessen
« am: 11. August 2009, 10:42 »
hallo.

ich habe da wohl ein kleines problem mit dem protected mode.
es ist toll, daß es so super dokumentationen über den protected mode gibt. jeder gibt einen einstieg bis zu dem punkt, wo es zum taskwechsel und diesem mystetiösen cr3 register geht. das haben anscheinend die wenigsten wirklich verstanden. ich gehöre blöderweise auch dazu.

deswegen frage ich hier einfach mal nach und hoffe auf hilfe.

also.
1. frage ist die adresse die ich mit lgdt lade cr3 relativ oder ist es eine absolute adresse?
2. ich habe eine gdt mit 4 werten (0, codedescriptor, datadescriptor und stackdescriptor). alle zeigen auf die adresse 0 und haben das maximale limit des speichers.
dann habe ich eine pagedir und die entsprechenden pagetables um den speicher von 0 bis 4 mb zu mappen. gut.

mein programm liegt ab 8000h.  soweit funktioniert alles.

jetzt kommt das seltsame, was ich nicht verstehe.

ich lege einen tss descriptor an und trage ihn in die gdt. ich fülle den tss aus, wobei ich das cr3 register auf eine pagedir/pagetable  setze die alles ab 0 mb auf 1 mb (wo ich mein neues programm hinkopiert habe) mapped und ip ist 0. cs,ds,es ... setze ich entsprechend der gdt. der stack liegt 4096 bytes hinter dem programm und der esp ist auf die adresse -4 gesetzt.

sobald ich den descriptor des tss anspringe, stürzt er ab. seltsamerweise wenn ich das mapping der neuen pagedir/pagetable nur bis 8000h auf 1mb mappe, klappt es. sehr seltsam. oder gibts da eine einfache erklärung?

wenn ihr code braucht einfach bescheid sagen.

danke.

gruß.

ps: gibt es eigentlich bücher über dieses thema? die meißten behandeln das paging nur nebenbei.
Seiten: [1]

Einloggen