Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: nooooooooos am 28. January 2006, 11:23
-
Hallo
1.)Ich weiss, dass solche Theards nicht gern gesehen werden. Aber ich kann einfach nirgends etwas zur Speicherbelgung des gesamten Speichers im PM und nur im PM finden. Denn alles was ich gefunden habe, wiederspricht sich wieder irgendwo.
Hat irgendjemand gute Links...???
2.)Wie kann ich ermitteln, wie gross der Speicher ist??
Danke schonmal
Nooooooooos
-
1.a) Also, und wo liegen die Speicherbereiche von der Grafik, des APIC der (dem,der) ACPI ?????
1.b) Und, ausser diesen 3 Dingen muss ich überhaupt rein garnichts beachten????
2.) Wie kann ich ermitteln, wie gross der Speicher ist??
Gruss
Noooooooos
-
1.a) Ich muss also in den unteren 2GB nur auf den GrafikBuffer (0xB8000) achten. Ist das so richtig???
1.b) Ich benutz Paging, darum muss ich ja Plätze für die Pages finden. Solange ich den V86 nicht benutz oder nicht in den RealMode zurückschalten will, ist es doch Schnurzegal, was ich mit dem BIOS anstelle.
Gruss Noooooooos
-
Hi,
im PM hat man immernoch alles genauso im Speicher rumliegen wie im RM, also ich wüsste auch nicht, wieso sich durch einschalten eines Schutzmechanismusses die Speicherbelegung ändern sollte. Also muss man von den gleichen Teilen des Speichers die Finger lassen! Bei allem was über der 1MB Grenze liegt wirds dann richtig interessant. Um sich ein ungefähres Bild davon zu verschaffen, sollte man sich die BIOS Memory Map besorgen (GRUB lädt sie dir, ansonsten ist es ein BIOS Call). Da steht dann genau drin, welchen Speicher man verwenden darf. Alles andere ist unsicher, weil es Speicherlöcher geben kann und alle Geräte IRGENDWO im Speicher anzutreffen sind (selbst die Addresse des APIC kann man umschießen). Wo dann die Geräte genau sind, kannst du bei PCI Karten aus deren Konfigurationsregistern auslesen.
hf
-
A) Aber wenn ich das BIOS eigentlich nicht mehr brauchen will, kann ich doch diese Daten überschreiben???
B) Welcher BIOS Call wäre denn das??
C) Und auf die Daten des BIOS kann ich mich 1000 Promillig verlassen??
Gruss
Nooooooooos
-
A) wenn du im Sommer keine Heizung brauchst, reißt du sie dann auch aus der Wand raus?
B) schau einfach mal hier (e820 ist der richtige): http://www.mega-tokyo.com/osfaq2/index.php/How%20do%20I%20determine%20the%20amount%20of%20RAM%3F
C) wenn Linux das kann, dann kannst du das auch ;-)
-
Soweit ich weiß, sind die oberen 20 MB der 4 GB für Memory Mapped Devices reserviert.
APIC kann man genauso wie Grafikkartenspeicher über MSRs und Grafikarten/VGA/was-auch-immer Register programmieren.
-
Also sollte nichts passieren, wenn ich über 1MB und unter 2GB bleibe????
Geht das so???
-
Auf manchen Multiprozessorsystem kann es durchaus sein, dass der APIC an einer anderen Stelle ist. Die normale Addresse trifft nur auf einige Standardkonfigurationen zu, wobei aber fast kein System diesen Standardkonfigurationen entspricht. Standardkonfigurationen sind für Systeme, die IMMER 2 Prozessoren haben, also wo das Motherboard garkeine andere Prozessorenanzahl zuläst. Das ist bei keinem mir bekannten Desktop Prozessor/Motherboard so.
Und warum sollte man nur die häufigen Fälle beachten, wenn man mit ein wenig Mehraufwand ein OS hat, das den Intel Spezifikationen entspricht?
-
Wenn hier schon einer zum osfaq linkt, dann kann er doch gleich alle relevanten sachen mit reinbringen:
Startseite der Wiki: http://www.mega-tokyo.com/osfaq2/
speziel zu Speicher: http://www.mega-tokyo.com/osfaq2/index.php/How%20do%20I%20determine%20the%20amount%20of%20RAM%3F
Da gibts z. B. sowas:
start end size region/exception description
Low Memory (the first MiB)
00000000 - 000003FF 400 RAM Real-Mode IVT (Interrupt Vector Table)
00000400 - 000004FF 100 RAM BDA (BIOS data area)
00000500 - 0009FBFF ? 9F700 RAM/free for use Conventional memory (<= 9F700 Byte)
00007C00 - 00007DFF 200 RAM Operating System BootSector
0009FC00 - 0009FFFF 400 RAM EBDA (Extended BIOS data area)
000A0000 - 000FFFFF 60000 various ROM Area (384 KiB)
Standard usage of the ROM Area:
000A0000 - 000BFFFF 20000 video RAM VGA Mem (128 KiB)
000A0000 - 000AFFFF 10000 video RAM VGA framebuffer (64 KiB)
000B0000 - 000B7FFF 8000 video RAM text monochrom (32 KiB)
000B8000 - 000BFFFF 8000 video RAM text color (32 KiB)
000C0000 - 000C7FFF 8000 ROM Video BIOS* (32 KiB is typical size)
000F0000 - 000FFFFF 10000 ROM Motherboard BIOS* (64 KiB is typical size)
High Memory (everything after the first MiB)
00100000 - FEBFFFFF FEB00000 RAM?/free for use? Extended memory
01000000 - 010FFFFF 100000 ? ISA 15-16MB (only with ISA bus?)
FEC00000 - FFFFFFFF 1400000 various PnP NVRAM?, LAPIC, ...
Und nicht vergessen die a20 ein zu schalten!
-
Braucht mann denn das A20 auch im PM???
-
Türlich braucht man die, zumindest muss es angeschaltet sein.
Wenn hier schon einer zum osfaq linkt, dann kann er doch gleich alle relevanten sachen mit reinbringen
Tja, ich dachte im Internetzeitalter sollte schon jeder selbst in der Lage sein Links zu folgen und die wichtigsten Infos auf Seiten zu finden, davon abgesehen dass jeder das OSFAQ kennen müsste/sollte ^^
-
Braucht mann denn das A20 auch im PM???
http://www.mega-tokyo.com/osfaq2/index.php/Why%20cant%20I%20access%20all%20my%20memory%3F
^^
-
Also, wenn ich jetzt diese Map vom Bios geladen habe, wie lese ich jetzt daraus, wo ich welchen Speicher benutzen darf???
Und oder, das 1. MB ist sowiso vom Bios belegt???
Gruss
Noooooooos
-
Lies die Tabelle, die ich oben gepostet habe.
Beim ersten MB ist nur der Bereich von 00000500 bis 0009FBFF frei benuzbar. Dieser Bereich kann unter Umständen etwas kleiner sein auch wenn der PC mehr als 1 MB Speicher hat!
Alles über 1 MB kann/muss über die genannten BIOS Funktionen ermittelt werden! Wie diese zu benuzen sind kannst Du im INet nachschlagen.
-
Unter welchen Umständen ist der Freie Bereich im 1. MB etwas kleiner und wie überprüft man solche Umstände???
Gruss
Nooooooos
-
Kann es sein, dass brainsware.org die einzige Domain ist, die bei deinem Internetzugang freigeschaltet ist?
Kurze Antwort: int 12h un dann in AX, oder direkt aus der Speicheradresse dw 0x413.
Mehr dazu z.B. hier: http://www.mega-tokyo.com/osfaq2/index.php/How%20do%20I%20determine%20the%20amount%20of%20RAM%3F
Und jetzt lies doch mal selber! plz :roll:
[edit]Warum bei manchen Systemen weniger als 640 KiB im unterem Speicherbereich zur Verfügung stehen kann ich dier leider nicht sagen.[/edit]
-
Sorry, aber ich kann nicht so gut Englisch (vor allem nicht technisch). Und gute deutsche Infos, findet man praktisch nur auf brainsware.org.
Kann mir mal kurz jemand in ein paar Sätzen erklären, wie diese Tabelle inetwa aufgebaut ist????
Gruss
Nooooooooos