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

135105
random

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

23
Wenn Sie von Windows sprechen (und das Win32-Tag scheint darauf hinzuweisen), dann ja, absolut - Vista und Win7 64-Bit unterstützen fast alle 32-Bit-Apps über eine Kompatibilitätsebene. Ich habe noch nichts gefunden, das dies nicht tut funktioniert unter Vista 64-Bit nicht (außer für Treiber auf Systemebene) marc_s vor 14 Jahren 0
Die Frage scheint mehr zu sein, ob Sie Windows Vista x86 auf einer Box mit 64-Bit-Prozessor installieren können, und nicht, ob x86-Apps auf Windows Vista x64 ausgeführt werden. KTC vor 14 Jahren 5

4 Antworten auf die Frage

32
Mehrdad Afshari

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 64-Bit-Systemen von Itanium nicht möglich ist.

15
terdon

Ein 64-Bit-Prozessor kann sowohl 32 als auch 64 Betriebssysteme ausführen (mindestens eine x64-Dose). Ein 32-Bit-Prozessor kann nur 32 nativ ausführen.

Der Unterschied betrifft meistens die Größe eines Zeigers / einer Referenz. Auf 64-Bit-Maschinen können Sie eine Adresse in einem 64-Bit-Adressbereich referenzieren (wodurch Sie 2 ^ 64 Byte Speicherplatz erhalten). Bei 32 Bit können Sie nur 2 ^ 32 Byte (= 4 GB) adressieren. Wenn Sie sich nun die aktuellen Computer ansehen, ist es offensichtlich, warum die Welt auf 64-Bit umgestellt wird: 32-Bit kann nicht mehr alle RAMs adressieren.

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

Bei anderen Architekturen sind die Unterschiede zwischen 64 und 32 Bit weniger offensichtlich. Zum Beispiel war der Nintendo 64 (erinnerst du dich daran?) Eine 64-Bit-Maschine, aber der größte Code war 32-Bit. In diesem Fall diente 64 Bit mehr als Marketingtrick.

3
Mahmoud Al-Qudsi

Die derzeit akzeptierte Antwort ist im Allgemeinen richtig, jedoch nicht ausdrücklich. Es gibt wirklich nicht eine einzige Sache, die als "32-Bit-CPU" oder "" 64-Bit-CPU "bezeichnet wird - dies ist eine Beschreibung, die sich nur auf einen kleinen Teil der Architektur der CPU bezieht, insbesondere auf die Nummer von Adressauswahlleitungen zwischen der CPU und dem Speicher, dh dem sogenannten Adressraum, der für Speicheroperationen verfügbar ist.

In früheren Zeiten, als die CPU, als die Leute sich hinsetzten und die Drähte zwischen einem Prozessor und dem Arbeitsspeicher weben (wickeln) mussten, hätten Sie entweder 32 oder (theoretisch, weil es zu dieser Zeit nicht vorhanden war) verwendet werden müssen. 64 Kabel zwischen der CPU und dem Speichercontroller, über die die Speicheradresse angegeben werden soll, auf die Sie zugreifen möchten. Nehmen wir beispielsweise an, wir haben eine 2-Bit-Speicherarchitektur: Senden von 00 würde Adresse 0 auswählen, 01 würde Adresse 1 auswählen, 10 würde Adresse 2 auswählen und 11 würde Adresse 3 auswählen. Dieses 2-Bit ergibt 2 ^ 2 Bytes RAM (4 Byte).

Wenn Sie eine 32-Bit-CPU verwenden und 32 weitere Kabel zwischen der CPU und dem Speichercontroller hinzufügen, sodass Sie mehr Speicher magisch unterstützen können, 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 geschieht das? Nun, nehmen wir unsere 2-Bit-CPU aus dem vorherigen Teil dieser Antwort und fügen Sie eine weitere Leitung hinzu, um daraus eine 3-Bit-CPU zu machen, die uns von 4 Bytes zu 2 ^ 3 oder 8 Bytes RAM führt.

Bestehender "2-Byte" -Code wird ausgeführt, wobei die Werte der letzten 2 Drähte wie oben angegeben (00-11) eingestellt werden. Wir werden die zusätzliche Verbindung standardmäßig auf Null setzen. Wenn also der 2-Byte-Code ausgeführt wird, wenn 00 ausgewählt wird, wird tatsächlich 000 und bei 11 11 011 gewählt. Einfach.

Jetzt 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 steuern wird. Ihre Software kennt die zusätzlichen Kabel und sendet korrekt 000-111, wodurch sie vollen Zugriff auf den Speicherbereich hat, der von dieser neuen CPU-Architektur unterstützt wird.

Aber so muss es nicht sein. Tatsächlich passieren die Dinge normalerweise nicht . Bei der Einführung von 64-Bit-CPUs (und es gab viele), wurden alle mit völlig neuen Architekturen / Designs ausgestattet. Sie haben nicht nur weitere 32 Drähte angeheftet und gesagt: "Hier geht's, dies ist eine 64-Bit-CPU, die Sie im 32-Bit- oder 64-Bit-Modus verwenden können", sondern sie sagten: "Dies ist unsere neue CPU und Es erfordert nur das Programmieren in dieser völlig neuen Maschinensprache, verhält sich auf diese völlig neue Art und Weise, löst eine Vielzahl von Problemen weitaus eleganter als die alten x86 / i386-32-Bit-CPUs, und es ist eine native 64-Bit-Architektur . "

Das war die Geschichte des Intel Itanium, der wegen seines massiven Untergangs als "Itanic" bekannt ist. Es sollte in der neuen 64-Bit-Ära angekündigt werden, und es war etwas zu sehen. Anweisungen mit variabler Länge, riesige Caches, 64-Bit-Adressraum, Tonnen von Registern, super aufregend, super cool und super schwer, jeden dazu zu überreden, 20 Jahre alten Code neu zu kompilieren oder umzuschreiben. Dies war damals, als AMD und Intel tatsächlich miteinander konkurrierten, und AMD hatte die geniale Idee zu sagen: "Vergessen wir das alles" lösen Sie alle Probleme der Welt ", fügen Sie dem i386 nur 32 weitere Kabel hinzu und erstellen Sie ein 32-Bit-kompatibles 64- Bit-CPU "und die x86_64-CPU-Architektur wurde 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 entwickelte eine erfolgreiche Strategie, um alle Benutzer dazu zu bringen, auf die 64-Bit-Welt umzusteigen und dabei die Kompatibilität mit 32-Bit-Anwendungen zu wahren, sodass ein 32-Bit-Betriebssystem auf 64-Bit-Hardware oder sogar auf 32-Bit-Anwendungen ausgeführt werden kann könnte auf einem 64-Bit-Betriebssystem auf 64-Bit-Hardware ausgeführt werden. Intel folgte eher früher als später mit seiner "Intel EM64T" -Architektur (die im Wesentlichen identisch mit AMD64 war) und x86_64 gewann, während Itanic und andere wie MIPS64 und ALPHA64 nicht mehr auf dem Desktop / Server-Markt zu sehen waren.

tl; dr amd64 aka x86_64-CPUs sind so konzipiert, dass sie sowohl mit 32- als auch mit 64-Bit-Kernel und Code kompatibel sind, die meisten 64-Bit-CPUs sind jedoch auf die gleiche Weise nicht abwärtskompatibel. Eine 32-Bit-CPU kann auf höchstens 4 GB Speicher zugreifen, während eine 64-Bit-CPU auf atemberaubende 16 EiBs (16 × 1024 ^ 6 Bytes oder 4 Milliarden Mal so viel Speicher wie 4 GB) zugreifen kann.

Sie haben ein paar sachliche Fehler: 1) Der Itanium hat keine Anweisungen mit variabler Länge eingeführt (jeder x86 hat sie); Es wurden sehr lange Wortanweisungen hinzugefügt, die gleichzeitig mit mehreren 64-Bit-Größen arbeiten konnten. 2) x86_64 schlug nicht nur auf mehr Adressleitungen ein; es fügte auch eine Reihe von zusätzlichen Registern hinzu und verbreiterte alle Register (und die ALUs, die darauf arbeiten) von 32 auf 64 Bit. Vergleichen Sie dies mit dem 8086/8088, der 4 weitere Adresszeilen und Segmentauswahlregister hinzufügte, sie aber alle auf 16 Bits beließ, wie der 8080 davor. psusi vor 8 Jahren 1
-1
CsTamas

Sowohl ein 32- als auch ein 64-Bit-Betriebssystem können auf einem 64-Bit-Prozessor ausgeführt werden, das 64-Bit-Betriebssystem kann jedoch die volle Leistung des 64-Bit-Prozessors nutzen (größere Register, mehr Anweisungen) - kurz gesagt, es kann mehr Arbeit gleichzeitig erledigen. Ein 32-Bit-Prozessor unterstützt nur 32-Bit-Windows-Betriebssysteme.

Dies ist im Allgemeinen falsch, obwohl es speziell für x64 gilt. ChrisInEdmonton vor 14 Jahren 3
Ein 32-Bit-Prozessor kann jedes Betriebssystem ausführen, das für eine solche Prozessorarchitektur ausgelegt ist. Waxhead vor 12 Jahren 1
Ein 32-Bit-x86-Betriebssystem kann offensichtlich nicht auf ARM64 ausgeführt werden, daher können 32- und 64-Bit-Betriebssysteme auf einem 64-Bit-Prozessor ausgeführt werden phuclv vor 8 Jahren 0
@ Phúc Es gibt möglicherweise 64-Bit-Prozessoren, die ihren 32-Bit-Twin nicht unterstützen. Sie verwenden jedoch falsche Logik in Ihrem Argument. SunOS 4.4.1 auf 32 Bit MicroSparc läuft auch nicht auf ARM32. Wenn Sie Ihre Logik verwenden, ist es normalerweise nicht korrekt, dass ein 32-Bit-Betriebssystem auf einem 32-Bit-Prozessor ausgeführt werden kann. Wenn ich den gesunden Menschenverstand ignoriere, kann ich behaupten, dass das 32-Bit-ARM-Betriebssystem auf Intel i386 / x64 läuft, da Android-Entwickler Android-ARM-Images auf ihren Wintel-Computern ausführen. Natürlich ist das Betriebssystem für die richtige Prozessorfamilie und natürlich läuft das Betriebssystem auf physischer Hardware und nicht auf Emulation (genug gesagt, out) Tino vor 7 Jahren 0