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

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

Author: random, 2009-07-20

4 answers

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

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

 35
Author: mmx,
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
2009-07-20 09:42:36

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

Der Unterschied ist meistens über die Größe eines Zeigers / Referenz. Auf 64-Bit-Computern können Sie auf eine Adresse in einem 64-Bit-Adressbereich verweisen (wodurch Sie 2^64 Byte Speicher erhalten). Bei 32 bit kann man nur 2^32 bytes (=4 GB). Wenn Sie sich nun aktuelle Computer ansehen, ist es offensichtlich, warum sich die Welt auf 64 Bit bewegt: 32 Bit kann nicht einfach den gesamten RAM adressieren Mehr.

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

Bei anderen Architekturen sind die Unterschiede zwischen 64 und 32 Bit weniger offensichtlich. Zum Beispiel der Nintendo 64 (erinnern Sie sich daran?) war eine 64-Bit-Maschine, aber der größte Teil seines Codes war 32 Bit. In diesem Fall diente 64 Bit also eher als Marketingtrick.

 19
Author: terdon,
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-03-25 02:58:17

Die aktuell akzeptierte Antwort ist im Allgemeinen korrekt,aber nicht speziell. Es gibt wirklich keine einzige Sache, die eine "32-Bit-CPU" oder eine "64-Bit-CPU"genannt wird - das ist eine Beschreibung, die sich nur auf einen kleinen Teil der Architektur der CPU bezieht. Insbesondere verweist es auf die Anzahl der Adressauswahlzeilen zwischen der CPU und dem Speicher, d. H. den sogenannten Adressraum, der für Speicheroperationen verfügbar ist.

In den Tagen von früher, als die CPU, wenn die Menschen verwendet, um sich zu setzen und weben (wickeln) Sie die Drähte zwischen einem Prozessor und dem Speicher, Sie müssten entweder 32 oder (theoretisch, weil es zu der Zeit nicht existierte) 64 Drähte zwischen der CPU und dem Speichercontroller verwenden, die verwendet werden würden, um anzugeben, welche Speicheradresse Sie zugreifen wollten. Angenommen, wir haben eine 2-Bit-Speicherarchitektur: 1 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 gibt uns 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, damit Sie auf magische Weise mehr Speicher unterstützen können, haben Sie jetzt eine "64-Bit-CPU", die 32-Bit-Code oder 64-Bit-Code ausführen kann. Was bedeutet das und wie passiert das? Nun, nehmen wir unsere 2-Bit-CPU aus dem früheren Teil dieser Antwort und fügen einen weiteren Draht hinzu, der sie in eine 3-Bit-CPU verwandelt und uns von 4 Bytes auf 2^3 oder 8 Bytes RAM bringt.

Vorhandener" 2-Byte " - Code wird ausgeführt, einstellen der Werte der letzten 2 Drähte wie oben angegeben (00-11). Wir verdrahten die zusätzliche Verbindung standardmäßig auf Null, also wenn der 2-Byte-Code ausgeführt wird, wenn er 00 auswählt, wählt er tatsächlich 000 und wenn er 11 auswählt, wählt er tatsächlich 011 aus. Einfach.

Jetzt möchte eine Programmiererin "nativen" 3-Byte-Code schreiben und schreibt ihre Software, um den zusätzlichen Adressraum zu nutzen. Sie sagt der CPU, dass sie weiß, was sie tut und dass sie die manuelle Kontrolle über die neue, zusätzliche Drähte. Ihre Software kennt die zusätzlichen Kabel und sendet 000-111 korrekt aus, sodass sie vollen Zugriff auf den von dieser neuen CPU-Architektur unterstützten Speicherbereich hat.

Aber so muss es nicht passieren. 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 sie alle mit völlig neuen Architekturen/Designs. Sie haben nicht nur an zusätzlichen 32-Drähten geknüpft und gesagt: "Hier gehts, das ist eine 64-Bit-CPU sie können im 32-Bit-oder 64-Bit-Modus verwenden", sondern sie sagten: "Dies ist unsere neue CPU und es dauert nur die Programmierung in dieser völlig neuen Maschinensprache, verhält sich auf diese völlig neue Weise, löst eine Bazillion verschiedene Probleme viel eleganter als die alten x86/i386 32-Bit-CPUs jemals tat, und es ist eine native 64-Bit-Architektur. Spaß."

Das war die Geschichte der Intel Itanium, die heute als "Itanic" bekannt ist, weil sie massiv gesunken ist. Es sollte in der neuen Herold 64-bit-ära, und es war etwas zu sehen. Anweisungen variabler Länge, riesige Caches, 64-Bit-Adressraum, Tonnen von Registern, super aufregend, super cool und super schwer, alle davon zu überzeugen, 20 Jahre Legacy-Code für neu zu kompilieren oder neu zu schreiben. Dies war zurück, als AMD und Intel tatsächlich konkurrierten, und AMD hatte die brillante Idee zu sagen: "Vergessen wir all dies' Lösen Sie alle Probleme der Welt 'und fügen Sie einfach 32 weitere Drähte zum i386 hinzu und machen Sie eine 32-Bit-kompatible 64-Bit-CPU" und die x86_64 CPU-Architektur wurde geboren.

Wenn Sie sich die Kernel-Namen und-Quellen für wichtige Betriebssysteme (Linux, Windows, BSDs usw.) ansehen, finden Sie sie mit Verweisen auf AMD64-CPUs und AMD64-Architektur übersät. AMD hat eine erfolgreiche Strategie entwickelt, um alle dazu zu bringen, in die 64-Bit-Welt zu wechseln und gleichzeitig die Kompatibilität mit 32-Bit-Anwendungen aufrechtzuerhalten, sodass ein 32-Bit-Betriebssystem auf 64-Bit-Hardware oder sogar 32-Bit-Anwendungen ausgeführt werden kann ein 64-Bit-Betriebssystem auf 64-Bit Hardware. Intel folgte eher früher als später der Suite mit ihrer" Intel EM64T " - Architektur (die im Grunde identisch mit AMD64 war) und x86_64 gewann, während die Itanic und andere wie MIPS64 und ALPHA64 auf dem Desktop/Server-Markt nicht mehr 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, aber die meisten 64-Bit-CPUs sind entschieden nicht abwärtskompatibel auf die gleiche Weise. Eine 32-bit CPU kann auf höchstens 4GiB von speicher, während eine 64-Bit-CPU auf beeindruckende 16 EiBs zugreifen kann (16 × 1024^6 Bytes oder 4 Milliarden mal so viel Speicher wie 4GiB).

 3
Author: Mahmoud Al-Qudsi,
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-10-03 02:08:32

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

 -1
Author: CsTamas,
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
2009-07-20 09:45:06