Speicherbeschränkungen in 16 -, 32-und 64-Bit-Systemen

Die theoretischen Speichergrenzen in 16 -, 32-und 64-Bit-Maschinen sind wie folgt:

  • 16 bit = 65.536 Byte (64 Kilobyte)

  • 32 bit = 4.294.967.296 bytes (4 Gigabyte)

  • 64 bit = 18,446,744,073,709,551,616 (16 Exabyte)

Ich erinnere mich an DOS / Windows 3.11-Tage, dass 16-Bit-Speicher in Segmente unterteilt werden konnte, so dass ein 16-Bit-Computer auf eine größere Speichermenge als 64 zugreifen konnte Kilobyte.

Ich habe eine Maschine mit 16 GB Speicher und starte ein 32-Bit-Betriebssystem und ein 64-Bit-Betriebssystem. Ich kann von 64bit auf alle 16GB zugreifen, aber nur 3.21 GB in 32bit.

Meine Frage lautet also: Wenn 16-Bit - Betriebssysteme aufgrund von Speichersegmentierung mehr als 64 KB Speicherzugriff zulassen, warum folgen 32-Bit-Maschinen nicht demselben Prinzip?

Author: Cornelius Roemer, 2013-02-22

6 answers

Sie tun, das System heißt Physikalische Adresserweiterung (PAE) . Hier ist eine Liste von Windows OS ' es und ihren maximalen Speicher, jedes 32-Bit-System, das mehr als 4 GB RAM erlaubt, verwendet PAE, um auf den Speicher zuzugreifen (Zum Beispiel Windows 2003 R2 Datacenter 32 Bit ermöglicht 128 GB RAM).


In der Tat erfordert Windows 8 eine PAE-fähige CPU in ihren [[10]}Mindestanforderungen.


Um Ihre "ungefragte" Frage zu beantworten, warum Ihr 32-Bit-Betriebssystem kann nicht auf den RAM zugreifen, wenn er existiert: Lizenzierung. Sie entscheiden sich dafür, RAM für ihre 32-Bit-Betriebssysteme nicht über 4 GB zu lassen, es sei denn, Sie zahlen für eine Data-Center-Edition (deshalb verkaufen sie eine Data-Center-Edition, wenn Sie so viel RAM benötigen, können Sie es sich wahrscheinlich leisten, mehr Geld für ein Betriebssystem auszugeben).

 19
Author: Scott Chamberlain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-02-22 22:07:11

Anstatt es selbst zu erklären, lasse ich jemanden, der einen Kernel mit PAE-Unterstützung unterhalten muss, auf seine charmante Art sprechen, Linus Torvalds

Beachten Sie auch, dass die PAE-Unterstützung in Windows 32bit-Versionen für viel Geld kommt. XP kann normalerweise nicht einmal die vollen 4 GiB RAM verwenden, da MS die PAE-Funktionen nicht aktiviert hat. Ein Kernel, der eng verwandt ist, Windows 2003 Server, unterstützt PAE. Aber auch dort wird Ihre "Standard Edition" nur bis zu 4 GiB unterstützen (aber das BIOS-Speicherloch umgehen), während die teureren Editionen dann bis zu 64 GiB RAM erlauben. Das gleiche gilt für das 32-bit-Vista - .

Jedoch nicht in allen Fällen ist diese Einschränkung von Windows auferlegt. Wenn Sie einen PAE-fähigen Linux-Kernel booten, können Sie weiterhin die volle 4 GiB (oder mehr) verwenden. Nicht so, einige Hardware-Hersteller entschieden sich dafür, dies aufzuzwingen einschränkung auf BIOS-Ebene, obwohl die CPU und der Chipsatz in der Lage wären, PAE zu handhaben.


Nur eine Randnotiz: Keiner der aktuellen x86-basierten 64-Bit-Prozessoren kann sogar den gesamten Bereich des 64-Bit-Adressraums physisch adressieren (als Referenz siehe diese Frage und Antworten).

 14
Author: 0xC0000022L,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-05-23 12:41:49

8-Bit-CPUs hatten normalerweise einen 16-Bit-Adressbus. (Motorola hatte einen einheitlichen Adressbus, RAM und periphere E/A teilten sich den gleichen Adressraum, Intel entschied sich, die beiden zu teilen. Im Fall von Intel wurden die IO-Adressgrenzen der 8088 und 8086 von den 8080 und 8085 CPUs übernommen.)

Intels 8088 und 8086 hatten einen 20-Bit - Speicheradressbus (1 MB), während der 68000 von Motorola einen 24-Bit-Adressbus (16 MB) hatte. IIRC, die [80]286 sprang auf einen 24-Bit-Adressbus. Beide später erweitert zu einem 32-Bit-Adressbus mit dem [80]386 bzw. dem 68020.) Mit den Pentium-Chips wurde der Adressbus auf 64 Bit erweitert. (Ich denke, die Motorola / IBM Venture PowerPC-Chips gingen auch 64-Bit-Adressbus.)

Der unten verfügbare Speicher und bis zu dem Maximum, auf das die CPU direkt zugreifen konnte, waren nur durch die unterstützenden Hardware-Chips (Chipsatz) und das Betriebssystem begrenzt. Bill Gates war in der Vergangenheit dafür bekannt, dass niemand mehr als 640K RAM benötigte, daher entwickelte sich DOS nie direkt Zugriff auf mehr RAM. Mit HiMem.sys und EMM386, DOS erweitert wurde, um Zugriff auf weitere "Obere" Speicher, der mit EMM386 verwendet wird, um direkt Zugriff auf alle verfügbaren RAM. HiMem.sys hatte weniger Flexibilität und konnte im Grunde den zusätzlichen RAM für die Lagerung verwenden.

Speicher, der diesen Grenzwert überschreitet, erforderte eine MMU (Memory Management Unit), um den Speicher in Segmente aufzuteilen und in den adressierbaren Speicherplatz der CPU abzubilden. Es ist, wie der CoCo 3, Commodore 128 und andere 8-Bit-Computer auf mehr als 64K von zugreifen konnten ARBEITSSPEICHER.

Günstiger ist es jetzt, den virtuellen Speicher zu verwenden, um die physischen Speichergrenzen zu überschreiten, wenn auch mit den vom Betriebssystem auferlegten Grenzen.

 2
Author: William,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-06-19 07:01:42

Weil es keinen praktischen Grund dafür gibt. Physische Adresserweiterungen ermöglichen die gleiche Funktionalität und ihre Verwendung ist bei Benutzern immer noch sehr begrenzt. In den Windows 3.1-Tagen gab es Einschränkungen, die heute einfach nicht vorhanden sind.

 1
Author: OCDtech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-02-22 21:46:55

Die theoretischen Speichergrenzen in 16 -, 32-und 64-Bit-Maschinen sind wie folgt ...

Der grundlegende Fehler hier ist die Vorstellung, dass die "Bitbreite" des Prozessors, die normalerweise der Größe der Allzweckregister der Maschine entspricht, notwendigerweise der Breite der RAM-Adressen entspricht.

In x86 mit aktiviertem Paging, aber ohne PAE werden die Adressen, die Programm - und Betriebssystemcode verwenden, von Intel als "lineare Adressen" bezeichnet-wir nennen sie normalerweise "virtuelle Adressen". Sie sind 32 bit breit. Dies ermöglicht einen virtuellen Adressraum von 4 GiB.

Aber es ist mehr oder weniger Zufall, nur ein Artefakt des Formats von Seitentabelleneinträgen, dass die Größe einer physischen (RAM) Adresse ebenfalls 32 Bit beträgt.

Bei PAE beträgt letzteres 36 Bit (zunächst... (in späteren Implementierungen). Nur weil es sich beispielsweise um eine "32-Bit-Maschine" handelt, bedeutet dies nicht, dass physische Speicheradressen auf 32 Bit begrenzt sind.

Die Industrie hat eine lange Geschichte von Maschinen, deren "Bitbreite" nicht mit ihrer maximalen physischen Adressgröße übereinstimmte. Beispielsweise definiert die VAX-Architektur eine 32-Bit-Maschine, und virtuelle Adressen (die Adressen, die vom Code verwendet werden, sobald die Adressübersetzung aktiviert ist) sind in der Tat 32 Bit breit... die physischen Adressen des VAX sind jedoch nur 30 Bit breit-und die Hälfte des physischen Adressraums ist für E/A-Geräteregister reserviert, sodass der maximale RAM nur 512 MiB betrug.

Auch ohne Hardware zur Adressübersetzung ist es nicht unbedingt der Fall, dass die "Bitbreite" der Maschine die maximale RAM-Adresse definiert. Beispiel: Die CDC" Upper 3000 " - Serie waren 36-Bit-Maschinen. Glaubst du, sie könnten 64 GiB RAM adressieren? Nicht kaum! Diese Maschinen kamen Mitte der 60er Jahre heraus! Heck, konnten wir noch nicht haben die 64-GB - Festplattenspeicher in jenen Tagen. (Die CDC 6000 serie waren 60-bit maschinen. Muss ich weitermachen?)

 0
Author: Jamie Hanrahan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-10-21 00:29:45

Dies kommt von dieser Wikipedia-Seite: https://en.m.wikipedia.org/wiki/RAM_limit Wikipedia sagt, es hat mehrere Probleme, aber hier ist, was sagt

Sie sind Computer Ram-Limit basiert auf, wie viele Ram-Pins Sie Computer sind. Wenn Sie einen 16-Bit-Computer mit Windows 3.0 hätten, der 1 Megabyte RAM benötigt, hätte er 20 bis 24 RAM-Pins. Die Formel lautet 2^X, um herauszufinden, wie viel die Ram-Pins adressieren können. 16-Bit-Computer hatten bis zu 24 * RAM-Pins, die adresse 16 Megabyte RAM und 32-Bit-Computer hatten bis zu 36 * RAM-Pins, die 64 Gigabyte RAM adressieren können. Ihr durchschnittlicher 64-Bit-Computer verfügt über ungefähr 36,40 - oder 52-Ram-Pins (64 GB, 1 TB oder 4PB (Windows 10 Professional ermöglicht bis zu 2 TB Ram)) . *Die CPU könnte wahrscheinlich mehr Ram-Pins haben, wurde aber aus Gründen

Der Glaube, dass die Anzahl der Bits, die Ihre CPU bestimmt hatte, wie viel RAM sie verarbeiten konnte, war wahrscheinlich auf die Tatsache zurückzuführen, dass 32-Bit-Computer meistens mit 32 RAM-Pins, die nur 4 Gigabyte adressieren konnten. Zusätzlich zu den Einschränkungen des Betriebssystems für Verbraucher.

Ich bin mir immer noch nicht genau sicher, wie Ram-Limits funktionieren oder wie seriös die Wiki-Seite ist. Aber die Erklärung, die ich von der Wiki-Seite bekommen habe, macht Sinn. Ich hoffe, das hilft, Ihre Frage zu beantworten

 -1
Author: ZERICO2005,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-03-26 07:09:43