it-swarm.com.de

Warum unterstützt ein 32-Bit-Betriebssystem 4 GB RAM?

Lesen Sie einfach einige Notizen in einem Vortrag über Betriebssysteme und es heißt:

Ein Programm sieht Speicher als ein Array von Bytes, das von Adresse 0 bis 2 ^ 32-1 (0 bis 4 GB-1) reicht.

Warum 4 GB?

27
Blankman

Weil 32 Bits Zahlen bis zu 2 darstellen können32 - 1 = 4294967295 = 4 GiB - 1 und daher bis zu 2 adressieren32 einzelne Bytes, die dann 4 GiB wären.

Es gibt jedoch Möglichkeiten, dies zu umgehen. Zum Beispiel kann mit PAE sogar ein 32-Bit-Betriebssystem mehr Speicher unterstützen. In der Vergangenheit wurde dies jedoch meistens auf Servern verwendet. Außerdem unterstützen die Windows-SKUs, die keine Server sind, dies nicht. Inzwischen ist das alles fraglich, da 64-Bit-CPUs, Betriebssysteme und Treiberunterstützung alltäglich sind.

56
Joey

Weil jedes Byte Speicher eine Adresse haben muss. In einem 32-Bit-Betriebssystem ist eine Adresse 32 Bit lang. somit gibt es 2 ^ 32 mögliche Adressen, was bedeutet, dass 2 ^ 32 Bytes = 4 GB sind.

24
mipadi

Jeder sagt 2 ^ 32 = 4GiB, was richtig ist. Nur für den Fall, wie wir dorthin gekommen sind:

Eine 32-Bit-Maschine verwendet 32 ​​Bit, um den Speicher zu adressieren. Jedes Bit hat den Wert 0 oder 1. Wenn Sie 1 Bit haben, haben Sie zwei mögliche Adressen: 0 oder 1. Ein Zwei-Bit-System (Wort beiseite) hat vier mögliche Adressen: 00 = 0, 01 = 1, 10 = 2, 11 = 3. 2 ^ 2 = 4. Drei Bits haben 8 mögliche Adressen: 000 = 0, 001 = 1, 010 = 2, 011 = 3, 100 = 4, 101 = 5, 110 = 6 und 111 = 7 . 

Jedes Bit verdoppelt den potenziellen Adressraum, weshalb 2 ^ n Ihnen angibt, wie viele Adressen Sie für eine bestimmte Anzahl von Bits verwenden. 2 ^ 1 = 2, 2 ^ 2 = 2 * 2 = 4, 2 ^ 3 = 2 * 2 * 2 = 8 usw.

Wenn Sie 32 Bit erreicht haben, sind Sie bei 4 GBiB.

21
Chris Arguin

4 GB = 2 ^ 32 Bytes.

11
ceejayoz
2 ^ 32 = 4 * 1024 * 1024 * 1024

Das ist in Bytes die Definition von 4 GB. Mit anderen Worten, ein 32-Bit-Register als Speicherzeiger kann 4 GB Speicher und nicht mehr adressieren.

9
David M

Wenn Sie ein 4-Bit-System haben, bedeutet dies, dass die Adresse für jedes Byte 4 Binärziffern ist . Die Wahrscheinlichkeit aller Ihrer Adressen wird von 0000 bis 1111 reichen, was 2^4 = 16 ist (2, da entweder 0 oder 1), mit vier Bits ist es möglich, 16 verschiedene Werte für Nullen und Einsen zu erstellen. Wenn Sie 16 verschiedene Adr. jedes repräsentiert eine byte, dann können Sie maximal 16 bytes

4-Bit-System sieht folgendermaßen aus:

 enter image description here

Bei einem 32-Bit-System ist Ihr Maximum 2^32 = 4294967292 bytes

7
Mina Gabriel

Eigentlich ist es nicht so einfach wie 2 ^ 32 = 4294967296 Bytes. Sie sehen im x86-geschützten Modus bei aktiviertem Paging (dh, was Sie bei einem modernen Betriebssystem erhalten), dass Sie Speicherplätze nicht direkt adressieren, obwohl der Paging-Übersetzungsmechanismus für Clientanwendungen transparent ist.

Von einer logischen 32-Bit-Speicheradresse bei Verwendung von 4K-Seiten:

  • die Bits 22-31 beziehen sich auf ein Seitenverzeichnis
  • die Bits 12-21 beziehen sich auf eine Seitentabelle
  • bits 11-0 beziehen sich auf einen Offset in der 4096-Byte-Seite

Wie Sie sehen, haben Sie 2 ^ 10 (1024) Seitenverzeichnisse, in jedem Seitenverzeichnis haben Sie 2 ^ 10 Seitentabellen und jede Seite ist 2 ^ 12 (4096) Bytes lang, also 2 ^ 32 = 4294967296 Bytes. Die Breite des Speicherbusses entspricht praktisch der Word-Länge der CPU, muss aber nicht unbedingt so sein. Tatsächlich unterstützen modernere x86-CPUs PAE, wodurch die Adressierung von mehr als 4 GB (oder GiB) auch im 32-Bit-Modus möglich ist.

5
Tamas Czinege

Weil ist die Anzahl der verschiedenen Speicheradressen (in Bytes), die in einem Word gespeichert werden können.

Tatsächlich ist dies jedoch nicht immer der Fall (in den meisten Fällen ist dies nicht der Fall), das Betriebssystem kann mehr physischen Speicher als diesen verarbeiten (mit PAE) und die Anwendungen können weniger als 4 GB virtuellen Speicher verwenden (weil sie Teil dieses virtuellen Speichers sind) Speicher wird dem Betriebssystem zugeordnet (1 GB unter Linux und 2 GB unter Windows).

Ein anderes Szenario, in dem dies nicht zutrifft, ist, wenn der Speicher von Wörtern statt von Bytes adressiert wurde, dann wäre der gesamte adressierbare Speicher beispielsweise 16 GB.

2
fortran
  1. 32 Bit s kann Zahlen darstellen 0..2^32 = 0..4,294,967,296
  2. 32 Bit s kann bis zu 2 ^ 32 B ytes adressieren (unter der Annahme von Blöcken mit Byte-Größe)
  3. 2 ^ 32 B ytes ist die maximale Größe

2 ^ 32 B = 4,194,304 KiB = 4,194 MiB = 4 GiB =

1
Maryan

Hauptsächlich aufgrund des 32-Bit-Betriebssystems, das nur 2 ^ 32-1-Adressen unterstützt. 

Wenn die CPU im FSB mehr als 32 Adresszeilen hat, kann das 32-Bit-Betriebssystem einen Paging-Mechanismus verwenden, um auf mehr als 4 GB zuzugreifen. (Zum Beispiel Windows 2000 Advanced Server/Data Center-Editionen auf PAE-unterstützten Intel/AMD-Chips)

1
Indy9000

4 GB = 2 ^ 32 Bytes. Denken Sie jedoch daran, dass die maximal 4 GB von einem 32-Bit-Betriebssystem zugewiesen werden. In der Realität sieht das Betriebssystem weniger, z. nach VRAM-Zuteilung.

0
waqasahmed

Wie bereits von anderen Benutzern angegeben, verwenden 32-Bit-Windows-Betriebssysteme 32-Bit-Wörter zum Speichern von Speicheradressen.

Tatsächlich verwenden die meisten 32-Bit Chips heutzutage die 36-Bit-Adressierung, wobei das Physical Address Extension (PAE) -Modell von Intel verwendet wird. Einige Betriebssysteme unterstützen dies direkt (z. B. Linux).

Wie Raymond Chen darauf hinweist, kann in Windows eine 32-Bit-Anwendung mehr als 4 GB Arbeitsspeicher zuweisen, und Sie benötigen dafür kein 64-Bit-Windows . Oder sogar PAE.

64-Bit-Chips unterstützen nicht den gesamten 64-Bit-Speicherplatz. Ich glaube, dass sie derzeit auf 42-Bit-Speicherplatz beschränkt sind ... der von PAE verwendete 36-Bit-Speicherplatz plus die oberen 8-Bit-Adressen.

0
Powerlord