| Hardware Probleme Hardware, Probleme, Fehler & Lösungen. |
Diskussion: Speicheradressierung von 32 Bit CPU's im Forum Hardware Probleme, in der Kategorie PC Foren; Anzeige Hallo erstmal, ich habe da eine Frage zur Speicheradressierung. Ein Normaler 32 Bit Prozessor kann maximal ca. 4GB RAM ...
![]() |
| | #1 (permalink) |
| Registriert seit: 04.08.03 ![]() Likes: 0 | Anzeige Hallo erstmal, ich habe da eine Frage zur Speicheradressierung. Ein Normaler 32 Bit Prozessor kann maximal ca. 4GB RAM addressieren (2 ^ 32) . Die Register der CPU sind aber nur 16 Bit gross. Damit man eben mehr Adressieren kann, verwendet man die Segment : Offset Darstellung. Diese wird errechnet indem man die 16 Bit der Segmentaddresse mit 16 Multipliziert und dann mit der Offsetaddress addiert. Nun zu meiner Frage: Wie kann denn jetzt der Prozessor diese 4GB RAM ansprechen wenn über die Segment : Offset-Darstellung nur (65535 * 16 +65535 = 1114095 Bytes) ca. 1 MByte addresiert werden können ??????? Das sind doch eindeutig zu wenig !!! Wäre nett, wenn mir das mal jemand genau erklären könnte. |
| | |
| | #2 (permalink) | |||||
| Zitat:
Zitat:
![]() Zitat:
Zitat:
![]() Zitat:
![]() Greets, Ziri | ||||||
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Registriert seit: 25.10.03 ![]() Likes: 0 | hi ! Also... im 32 Bit Protected Modus teilt man den Arbeitsspeicher in Segmente .. das macht man mit Deskriptoren (Lat:describere:beschreiben). Das Auswählen eines Segments macht man mit einem 16 Bit Selektor. Dann wird ein 32 Bit Offset gebraucht um im selektierten Segment weiter zu addresieren. Ich glaub an dieser Stelle hat sich dein Problem gelöst |
| | |
| | #4 (permalink) |
| Du redest jetzt aber von der MMU. Das Segmentregister kann nur das OS selbst bedienen, jeder Task hat seinen virtuellen Adressraum, der eben 4GB groß ist (32bit Adressregister). Die physikalische Adressierung des Speicher ist dann _nochmal_ anders So ist das heute eben, Speicher ist komplett virtualisiert.Greets, Ziri | |
| | |
| | #5 (permalink) |
| Themenstarter Registriert seit: 04.08.03 ![]() Likes: 0 | Wow, erstmal danke für die schnellen Antworten 1. Also haben die 32 Bit CPu's auch wirklich 32 Bit (hat mich schon gewundert warum die sonst 32 Bit CPu's heisen ) und werden im Protected Mode voll beansbrucht. Aber im REal Mode wir nur mit 16 Bit gearbeitet.soll das heißen das man mit den .Com nur 1MB RAM zur verfügung hat wenn man sie für reine Dos umgebungen schreiben will??? 2. Irgendwie kann man doch mit hilfe eines Commanshell befehls den Real Mode aktivieren oder ??? |
| | |
| | #6 (permalink) | ||
| Zitat:
Zitat:
Greets, Ziri | |||
| | |
| | #7 (permalink) | |||
| Themenstarter Registriert seit: 04.08.03 ![]() Likes: 0 | Zitat:
)nochmal danke das ihr mir das erklärt habt. Aber zu guter letzt noch eine Frage: Zitat:
| |||
| | |
| | #8 (permalink) |
| Registriert seit: 22.01.03 ![]() Likes: 0 | Hat man bezüglich der .COM Dateien nicht nur 64 KByte Speicher zur Verfügung? Man darf ja in .COM Dateien immer nur ein Segment verwenden, was eben diese 64 Kbyte wären. |
| | |
| | #9 (permalink) |
| Du machst dir deine Vorstellung etwas zu einfach Jeder Task bekommt seinen virtuellen Adressraum, die MMU "mappt" die virtuellen Adressen auf physikalische. Sollte die virtuelle Adresse auf Daten zeigen, die sich zur Zeit gar nicht im Hauptspeicher befinden, gibt es eine "page fault" exception, die der Pager des Betriebssystems abfängt und dann entsprechend versucht, die Speicherseite mit den Daten einzulagern (aus dem swap, dazu muss dann wohl eine andere Seite ausgelagert werden).Jetzt denke nicht, dass jeder Task 4GB belegen kann, nur weil sein Adressraum so groß ist. Wenn man Speicher belegen will, muss man den beim Betriebssystem anfordern, und man bekommt nur welchen zugeteilt, solange das Betriebssystem das für sinnvoll hält (freies RAM oder genug Seiten, die ausgelagert werden können, um freies RAM zu schaffen). Unter Windows NT sind schon mal die oberen 2GB des virtuellen Adressraums für das Betriebssystem reserviert, die bekommt kein Task jemals zugewiesen. Wahrscheinlich denkt sich MS "2GB should be enough for everyone" *fg* Greets, Ziri edit: Mnemonix, das kann sein, ich hab ehrlichgesagt nie .COM-binaries erstellt mein TurboPASCAL Compiler hat mir immer .EXE-binaries gemacht, da war die Einschränkung nur, dass der Code selbst in ein 64kb-Segment passen musste. Aber ich weiß nicht, in wie weit das wirklich Architektur-bedingt ist, ich glaube eher das sind Einschränkungen von MS-DOS. | |
| | |
| | #10 (permalink) | ||
| Themenstarter Registriert seit: 04.08.03 ![]() Likes: 0 | Zitat:
) ) Modell Tiny für .Com Dateien:Das kleinste Modell, bei dem sich Code, Daten und Stack ein einziges Segment, das Codesegment, teilen. Die Größe des Programmes ist damit auf 64 KByte beschränkt. Alle im Programm verwendeten Adressen sind near?Adressen. Zitat:
| ||
| | |
| | #11 (permalink) |
| Registriert seit: 22.01.03 ![]() Likes: 0 | Hier findest du eine ziemlich gute Beschreibung des Protected Modes mit Addressierung etc.: http://www.fh-zwickau.de/doc/prmo/pm...text/index.htm |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| AMD Engeneering CPU's | ron_artest | Hardware Probleme | 2 | 12.04.07 11:56 |
| 64 Bit CPU's - Frage dazu | Bleeding666 | Hardware Probleme | 6 | 17.12.03 19:25 |
| Lackstrich-Tuning für CPU's??? | DecKarD | Hardware Probleme | 5 | 10.12.03 15:55 |