it-swarm.com.de

Kann ein 32-Bit-Betriebssystem in einem 64-Bit-Prozessor ausgeführt werden?

Was ist der Unterschied zwischen 32-Bit-Betriebssystemen und 64-Bit-Betriebssystemen? Kann ein 32-Bit-Betriebssystem in einem 64-Bit-Prozessor ausgeführt werden?

23
Prabhu

Ihre Frage ist architekturspezifisch. x64 ist im Wesentlichen eine Erweiterung der x86-Architektur. Es unterstützt einen 64-Bit-Adressraum. Es enthält einige neue Anweisungen und neue Register.

Sie können 32-Bit-x86-Windows auf einem x64-Computer ausführen. Beachten Sie, dass dies auf Itanium 64-Bit-Systemen nicht möglich ist.

32
Mehrdad Afshari

Auf einem 64-Bit-Prozessor können sowohl 32- als auch 64-Bit-Betriebssysteme ausgeführt werden (mindestens ein x64-Prozessor). Ein 32-Bit-Prozessor kann nativ nur 32 ausführen.

Der Unterschied ist hauptsächlich über die Größe eines Zeigers/einer Referenz. Auf 64-Bit-Computern können Sie auf eine Adresse in einem 64-Bit-Adressbereich verweisen (wodurch Sie 2 ^ 64 Byte Speicher erhalten). Auf 32 Bit können Sie nur 2 ^ 32 Bytes (= 4 GB) adressieren. Wenn Sie sich die aktuellen Computer ansehen, ist es offensichtlich, warum die Welt auf 64-Bit umsteigt: 32-Bit kann nicht mehr alle RAM problemlos adressieren.

Auf x64 (AMD/Intel) haben Sie zusätzliche Vorteile von 64 Bit. Die CPU verfügt über mehr Register und ermöglicht so einen effizienteren Code.

Auf anderen Architekturen sind die Unterschiede zwischen 64 und 32 Bit weniger offensichtlich. Zum Beispiel war der Nintendo 64 (daran erinnert?) Eine 64-Bit-Maschine, aber der größte Teil des Codes war 32-Bit. In diesem Fall dienten 64 Bit eher als Marketingtrick.

14
Lemmy

Die aktuell akzeptierte Antwort ist im Allgemeinen richtig, aber nicht spezifisch. Es gibt wirklich keine einzige Sache, die als "32-Bit-CPU" oder "64-Bit-CPU" bezeichnet wird - das ist eine Beschreibung, die sich nur auf einen kleinen Teil der Architektur der CPU bezieht, insbesondere auf die Zahl von Adressauswahlleitungen zwischen der CPU und dem Speicher, dh dem sogenannten Adressraum , der für Speicheroperationen zur Verfügung steht.

In den Tagen früher, als die CPU die Drähte zwischen einem Prozessor und dem Speicher zusammensetzte und wickelte, hätte man entweder 32 oder (theoretisch, weil es zu der Zeit nicht existierte) 32 verwenden müssen. 64 Drähte zwischen der CPU und dem Speichercontroller, mit denen angegeben wird, auf welche Speicheradresse Sie zugreifen möchten. Nehmen wir zum Beispiel an, wir haben eine 2-Bit-Speicherarchitektur: Das Senden von 00 würde die Adresse 0 auswählen, 01 würde die Adresse 1 auswählen, 10 würde die Adresse 2 auswählen und 11 würde die Adresse 3 auswählen. Dieses 2-Bit gibt uns 2 ^ 2 Bytes von RAM (4 Bytes).

Wenn Sie eine 32-Bit-CPU verwenden und 32 weitere Drähte zwischen der CPU und dem Speichercontroller hinzufügen, um auf magische Weise mehr Speicher zu unterstützen, verfügen Sie jetzt über eine "64-Bit-CPU", die 32-Bit ausführen kann Code oder 64-Bit-Code. Was bedeutet das und wie passiert das? Nun, nehmen wir unsere 2-Bit-CPU aus dem vorherigen Teil dieser Antwort und fügen einen weiteren Draht hinzu, der in eine 3-Bit-CPU umgewandelt wird und uns von 4 Byte auf 2 ^ 3 oder 8 Byte RAM bringt.

Der vorhandene "2-Byte" -Code wird ausgeführt und stellt die Werte der letzten 2 Drähte wie oben angegeben ein (00-11). Wir verbinden die zusätzliche Verbindung standardmäßig mit Null. Wenn also der 2-Byte-Code ausgeführt wird, wenn 00 ausgewählt wird, wird 000 ausgewählt und wenn 11 ausgewählt wird, wird 011 ausgewählt. Einfach.

Nun möchte ein Programmierer "nativen" 3-Byte-Code schreiben und schreibt seine Software, um den zusätzlichen Adressraum zu nutzen. Sie teilt der CPU mit, dass sie weiß, was sie tut, und dass sie die neuen, zusätzlichen Kabel manuell kontrollieren wird. Ihre Software kennt die zusätzliche (n) Leitung (en) und sendet (n) 000-111 korrekt aus, sodass sie uneingeschränkt auf den von dieser neuen CPU-Architektur unterstützten Speicherbereich zugreifen kann.

Aber so muss es nicht sein. In der Tat ist das normalerweise nicht , wie die Dinge passieren. Als 64-Bit-CPUs zum ersten Mal eingeführt wurden (und es gab viele), gingen alle mit völlig neuen Architekturen/Designs einher. Sie haben nicht nur zusätzliche 32 Drähte angeschlossen und gesagt: "Hier, das ist eine 64-Bit-CPU, die Sie im 32-Bit- oder 64-Bit-Modus verwenden können." Es erfordert nur die Programmierung in dieser völlig neuen Maschinensprache, verhält sich auf diese völlig neue Weise, löst eine Unmenge verschiedener Probleme weitaus eleganter als die alten x86/i386-32-Bit-CPUs und ist eine native 64-Bit-Architektur . "

Das war die Geschichte des Intel Itanium, der heute als "Itanic" bekannt ist, weil er massiv gesunken ist. Es sollte die neue 64-Bit-Ära einläuten, und es war etwas zu sehen. Anweisungen mit variabler Länge, riesige Caches, 64-Bit-Adressraum, jede Menge Register, super aufregend, super cool und super schwer, alle davon zu überzeugen, 20 Jahre alten Code neu zu kompilieren oder neu zu schreiben. Dies war damals, als AMD und Intel tatsächlich miteinander konkurrierten, und AMD hatte die geniale Idee zu sagen: "Vergessen wir all das, um alle Probleme der Welt zu lösen, und fügen Sie dem i386 einfach 32 weitere Drähte hinzu und machen Sie einen 32-Bit-kompatiblen 64-Bit-Computer." bit CPU "und die x86_64 CPU Architektur war geboren.

Wenn Sie sich die Kernelnamen und -quellen für die wichtigsten Betriebssysteme (Linux, Windows, BSDs usw.) ansehen, werden Sie feststellen, dass sie mit Verweisen auf AMD64-CPUs und AMD64-Architektur übersät sind. AMD hat eine erfolgreiche Strategie entwickelt, mit der jeder auf die 64-Bit-Welt umsteigen und gleichzeitig die Kompatibilität mit 32-Bit-Anwendungen aufrechterhalten kann, sodass ein 32-Bit-Betriebssystem auf 64-Bit-Hardware oder sogar 32-Bit-Anwendungen ausgeführt werden kann könnte auf einem 64-Bit-Betriebssystem auf 64-Bit-Hardware ausgeführt werden. Intel folgte Suite eher früher als später mit ihrer "Intel EM64T" -Architektur (die im Wesentlichen mit AMD64 identisch war) und x86_64 setzte sich durch, während der Itanic und andere wie MIPS64 und ALPHA64 auf dem Desktop/Server-Markt nicht mehr zu sehen waren.

aMD64 aka x86_64-CPUs sind so konzipiert, dass sie sowohl mit dem 32-Bit- als auch mit dem 64-Bit-Kernel und -Code kompatibel sind, aber die meisten 64-Bit-CPUs sind eindeutig nicht abwärtskompatibel Weg. Eine 32-Bit-CPU kann auf höchstens 4 GB Arbeitsspeicher zugreifen, während eine 64-Bit-CPU auf beeindruckende 16 GB (16 × 1024 ^ 6 Byte) oder 4 Milliarden mal so viele zugreifen kann viel Speicher wie 4GiB).

3