problem im ram :)
-
hi leutz,
also ich habe folgendes problem:
mein bootloader lädt meinen kernel von der diskette an die adresse 1000:0000
der kernel ist etwa 10kb groß. Nun würde ich gerne den Bereich 1010:0000 - 1010:FFFF fürs MemoryManagement verwenden und fülle diesen erstmal komplett mit 0 aber mittendrin hängt sich der rechner dann auf. Das würde aber doch nur passieren wenn ich meinen kernel der sich etwas weiter vorne befindet überschreibe. Wo liegt also das Problem?Danke schonmal
MFG Marcel
-
Hi.
Wenn dein Kernel 10KB gross ist, dann belegt es im RM einen Speicherbereich von 1000:0000 bis 1000:2800 oder 1280:0000.
(1KB=1024Byte*10=10240Byte (==2800h))
Folglich ueberschreibst Du anscheinend doch dein Kernel?
-
Denk immer an die Segmentberechnung: lineare Adresse = 16 * segment + offset.
Deine Routine löscht also von 1010:0000 - 1010:FFFF, also in linear dann von 10100 - 200FF.
Dein Kernel liegt (wie Nobuo shcön gerechnet hat ;)) von 1000:0000 - 1000:2800, also linear von 10000 - 12800. Sprich du überschreibst ab dem 0x100ten byte dienen Kernel.