Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: bscreator am 17. September 2005, 14:43

Titel: RAM schreiben und löschen
Beitrag von: bscreator am 17. September 2005, 14:43
Hi Leute,
mein OS nimmt LANGSAM Gestalt an, kratzt aber immer noch im Real-Mode an der Oberfläche (Und passt noch sehr lange auf ne Floppy).

Ich hab ne seperate Datei "INTREG.ASM" geschrieben. Die Aufgabe dieser Datei ist es, die selbstgeschriebenen Interrupts in der IVT zu registrieren. Die Datei hab ich jetzt mit dem INCLUDE-Befehl in den Sourcecode eingebunden.
Das ist allerdings eine schlechte Lösung weil
a) dieser Code nur einmal ausgeführt wird
b) dieser Code nach Ausführen unnötig im Speicher bleibt

FRAGE:
Wie kann ich den Code dieser Datei in den RAM schreiben und, nach Ausführung des Codes, wieder aus dem RAM ENTFERNEN ?


Thanks,
bscreator
Titel: RAM schreiben und löschen
Beitrag von: maumo am 17. September 2005, 20:24
hast du einen memory manager?
wenn ja, wo ist dein problem???
wenn nein -> bau dir einen (ist extrem wichtig!)
Titel: RAM schreiben und löschen
Beitrag von: bscreator am 18. September 2005, 18:46
Kannst Du mir einige einfache Tutorials zum Thema "Memory Manger erstellen" empfehlen ?
Titel: RAM schreiben und löschen
Beitrag von: SSJ7Gohan am 18. September 2005, 20:04
Im Realmode besteht das Memory Management wohl nur daraus, eine solche Struktur in den Speicher zu schreiben:

struct MEMORY {
unsigned short size;
struct MEMORY *next;
}

Und so dann halt malloc() und free() zu implementieren, um die strukturen zu füllen und zu löschen.
Titel: RAM schreiben und löschen
Beitrag von: Roshl am 19. September 2005, 17:38
Im Protected mode sieht die Struktur fürs Userlevel malloc genauso aus.
Allerdings ist es Blödsinn size und next zu speichern. Weil beides das selbe ist eigentlich denn offset(struct)+sizeof(struct)+size=next ums mal so auszudrücken. ich hab das als doppelt verkette liste gemacht, ist schneller wenn man einen Block freigeben will.
Titel: RAM schreiben und löschen
Beitrag von: DDR-RAM am 19. September 2005, 17:42
also UserLevel malloc funktioniert doch mitm Heap oder nicht? ^^
Titel: RAM schreiben und löschen
Beitrag von: SSJ7Gohan am 19. September 2005, 17:46
Im Protected Mode muss man aber noch Pages in den Prozess mappen, falls man Paging benutzt. Für das Userlevel ist die Implementierung auch nich gleich, da die Pages ja nicht von alleine gemappt werden, sondern der Prozess sie irgentwie anfragen muss.

Es ist sinnvoll next zu speichern, da evt. auch Speicher zwischen zwei Strukturen freigegeben werden kann.
Titel: RAM schreiben und löschen
Beitrag von: Roshl am 19. September 2005, 17:52
Im Userlevel weiss man nix von Pages, für den ist der Speicher linear. Der Prozess sagte nur "Zu wenig Speicher" und bekommt vom Kernel was hinten ran (oder eben nicht).
Den Heap musst du aber irgendwie einteilen. Sei es über Tabellen oder so eine verkette Liste. Es gibt verschiedene Varianten. Das schöne am OS-Dev vieles kann, nichts muss. Wenn ich will kann ich auch eine Zufallsfunktion schreiben die entscheidet ob die allokation erfolgreich ist oder nicht. Macht absolut keinen Sinn, aber es geht. *grins*