Frage

Ich bin mit 32-Bit-RHEL 4.4 auf AMD64 basierte Hardware. Hier ist die Ausgabe von uname -a

$ uname -a
Linux zulu 2.6.9-42.0.10.ELsmp #1 SMP Fri Feb 16 17:17:21 EST 2007 i686 athlon i386 GNU/Linux

Ich habe 8gigs Speicher auf diesem System installiert, O 32 Bits seine Ich würde davon ausgehen, dass mein System nicht in der Lage sein, um die Verwendung des vollen 8 GB Speichers zu machen. Aber wenn ich laufe oben , ich sehe die folgende -

Mem:   8309168k total,  8292028k used,    17140k free,     7096k buffers

So oben der Lage ist, alle 8 GB Speicher anzuzeigen.

Wenn ich 32 Bit WinXP in derselben Maschine installieren, Task-Manager zeigt nur 3 GB als zur Verfügung.

Meine Frage ist - wie ist 32-Bit-OS Lage 8 GB Speicher zu sehen? Bedeutet dies, dass meine Anwendungen in der Lage sein wird, größere Adressraum zu benutzen? Und warum ist der Unterschied zwischen 32-Bit-Linux und 32-Bit WinXP?

Danke!

War es hilfreich?

Lösung

Ihr Linux-System unterstützt Physical Address Extension .

Andere Tipps

Es gibt verschiedene ‚Ebene‘ des Gedächtnisses. Was unmöglich ist, unabhängig von den OS, ist mehr als 4 GB in einem Prozess zu adressieren, da Ihre Zeiger zu klein für mehr als das -, dass die grundlegende Beschränkung von 32 Bit w.r.t Speichern ist. Auf Linux und Windows und die meisten ‚traditionellen‘ OSs Ich würde vermuten, die 32-Bit virtuellen Adressraum in einen Teil für den Kernel und ein Teil für den Prozess aufgespalten wird, so erhalten Sie weniger als 4 GB adressierbaren Inhalt für jeden Prozess.

Aber dennoch könnte das Betriebssystem mehr als 4 GB verwenden - zum Beispiel 2-3 verarbeitet jeder raubend 2 GB Speicher. Auch 32 Bit CPU kann mehr als 4 GB Speicher adressieren (auf Hardware-Ebene), sondern in dem virtuellen Adressraum, Sie sind immer begrenzt durch Ihre 32-Bit-Zeiger.

Die alte neue Sache hat eine gute Erklärung für die Unterschiede zwischen den physikalischen Adressraum, virtuellen Adressraum und co: http://blogs.msdn.com/oldnewthing/archive/2004/08/18/216492.aspx

Das Verfahren ermöglicht diese "PAE" (Physical Address Extension) genannt wird. Ihre CPU ist in der Lage 36bit-Adressen intern zu verwenden, und Ihr Betriebssystem unterstützt. Leider Windows XP verwendet nur PAE, um die NX-Bit-Unterstützung (No eXecution Bit, eine Ausnahme verursacht auftreten, wenn die Prozessor-Code von einer Seite mit diesem Bit markiert auszuführen versucht). 32-Bit-Linux-Kernel Unterstützung PAE.

Newer i386-kompatiblen CPUs können mehr als 4 GB unter Verwendung PAE-Modus adressieren. Windows XP begrenzt künstlich den Adressraum zu 4 GB, da zu viele schlecht geschriebene Hardware-Treiber sind, die alle DMA übernehmen wird, wird mit 4 GB Speicher durchgeführt werden. So etwa 1 GB der 4 GB Adressraum wird auf Hardware abgebildet, der Rest auf physischen RAM. Windows-Server-Editionen haben diese Einschränkung nicht. Linux-Kernel, die PAE nicht unterstützen Speicher entweder begrenzen. Beide unterstützen bis zu 32 GB, wenn ich mich richtig erinnere.

Ihre Anwendung wird irgendwo zwischen 2-3 GB Adressraum begrenzt, je nach Betriebssystem-Optionen. Eine Anwendung kann effektiv nutzen mehr physischen RAM als die durch Teile des Speichers Windowing in und aus diesem Adressraum, Adresse Windowing-Erweiterungen verwenden oder Memory-Mapped-Dateien, zum Beispiel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top