È possibile eseguire un sistema operativo a 32 bit in un processore a 64 bit?


25

Qual è la differenza tra sistema operativo a 32 bit e sistema operativo a 64 bit? È possibile eseguire un sistema operativo a 32 bit in un processore a 64 bit?


Se stai parlando di Windows (e il tag Win32 sembra indicarlo), allora sì, assolutamente - Vista e Win7 a 64 bit supportano quasi tutte le app a 32 bit attraverso un livello di compatibilità - Non ho ancora trovato nulla che non funziona benissimo con Vista a 64 bit (ad eccezione dei driver a livello di sistema)
marc_s

5
La domanda sembra più se è possibile installare diciamo Win Vista x86 su una scatola che ha un processore a 64 bit, piuttosto che se le app x86 funzionano su dicano Win Vista x64.
KTC,

Risposte:


34

La tua domanda è specifica per l'architettura. x64 è essenzialmente un'estensione dell'architettura x86. Supporta uno spazio di indirizzi a 64 bit. Fornisce alcune nuove istruzioni e nuovi registri.

È possibile eseguire Windows x86 a 32 bit su un computer x64. Nota che non puoi farlo su sistemi Itanium a 64 bit.


16

Un processore a 64 bit può eseguire entrambi i sistemi operativi 32 e 64 (almeno un contenitore x64). Un processore a 32 bit può eseguire solo 32 in modo nativo.

La differenza riguarda principalmente le dimensioni di un puntatore / riferimento. Su macchine a 64 bit, è possibile fare riferimento a un indirizzo in un intervallo di indirizzi a 64 bit (fornendo così 2 ^ 64 byte di memoria). Su 32 bit è possibile indirizzare solo 2 ^ 32 byte (= 4 GB). Ora se guardi i computer attuali è ovvio il motivo per cui il mondo sta passando a 64 bit: 32 bit non possono più facilmente indirizzare tutta la RAM.

Su x64 (AMD / Intel) hai ulteriori vantaggi di 64 bit. La CPU ha più registri e quindi consente un codice più efficiente.

Su altre architetture le differenze tra 64 e 32 bit sono meno evidenti. Ad esempio il Nintendo 64 (ricordi che?) Era una macchina a 64 bit ma la maggior parte del suo codice era a 32 bit. Quindi, in quel caso, 64 bit è servito più da trucco di marketing.


3

La risposta attualmente accettata è generalmente corretta, ma non specificamente. In realtà non esiste una sola cosa chiamata "CPU a 32 bit" o "" CPU a 64 bit ", ovvero una descrizione che si riferisce solo a una piccola parte dell'architettura della CPU. In particolare, fa riferimento al numero delle linee di selezione dell'indirizzo tra la CPU e la memoria, ovvero il cosiddetto spazio degli indirizzi disponibile per le operazioni di memoria.

Ai tempi in cui la CPU, quando le persone erano solite sedersi e tessere (avvolgere) i fili tra un processore e la memoria, avresti dovuto usare 32 o (teoricamente, perché non esisteva al momento) 64 fili tra la CPU e il controller di memoria che verrebbero utilizzati per specificare a quale indirizzo di memoria si desidera accedere. Ad esempio, supponiamo di avere un'architettura di memoria a 2 bit: l'invio di 00 selezionerebbe l'indirizzo 0, 01 selezionerebbe l'indirizzo 1, 10 selezionerebbe l'indirizzo 2 e 11 selezionerebbe l'indirizzo 3. Questo 2 bit ci dà 2 ^ 2 byte di RAM (4 byte).

Se prendi una CPU a 32 bit e aggiungi altri 32 fili tra la CPU e il controller di memoria in modo da poter magicamente supportare più memoria, ora hai una "CPU a 64 bit" che può eseguire a 32 bit codice o codice a 64 bit. Cosa significa e come succede? Bene, prendiamo la nostra CPU a 2 bit dalla parte precedente di questa risposta e aggiungiamo un altro filo, trasformandolo in una CPU a 3 bit, portandoci da 4 byte a 2 ^ 3 o 8 byte di RAM.

Verrà eseguito il codice "2 byte" esistente, impostando i valori degli ultimi 2 fili come indicato sopra (00-11). Per impostazione predefinita, la connessione extra verrà impostata su zero, quindi in realtà quando viene eseguito il codice a 2 byte, quando seleziona 00, seleziona effettivamente 000 e quando seleziona 11 seleziona effettivamente 011. Facile.

Ora un programmatore vuole scrivere un codice "nativo" a 3 byte e scrive il suo software per sfruttare lo spazio di indirizzi aggiuntivo. Dice alla CPU che sa cosa sta facendo e che prenderà il controllo manuale dei nuovi fili extra. Il suo software conosce i fili aggiuntivi e invia correttamente 000-111, dandole pieno accesso alla gamma di memoria supportata da questa nuova architettura CPU.

Ma non è così che deve succedere. In realtà, di solito non è così che succedono le cose. Quando furono introdotte per la prima volta le CPU a 64 bit (e ce ne furono molte), andarono tutte con architetture / progetti completamente nuovi. Non hanno solo puntato su altri 32 fili e hanno detto "ecco qua, questa è una CPU a 64 bit che puoi usare in modalità a 32 o 64 bit", ma piuttosto hanno detto "Questa è la nostra nuova CPU e ci vuole solo programmazione in questo linguaggio macchina completamente nuovo, si comporta in questo modo completamente nuovo, risolve moltissimi problemi in modo molto più elegante di quanto non abbiano mai fatto le vecchie CPU a 32 bit x86 / i386 ed è un'architettura nativa a 64 bit. ".

Questa era la storia di Intel Itanium, ora noto come "Itanic" per via della sua massiccia affondamento. Doveva annunciare la nuova era di 64 bit, ed era qualcosa da vedere. Istruzioni di lunghezza variabile, enormi cache, spazio degli indirizzi a 64 bit, tonnellate di registri, super eccitanti, super cool e super difficili per convincere tutti a ricompilare o riscrivere 20 anni di codice legacy. Questo era quando AMD e Intel erano effettivamente in competizione, e AMD aveva la brillante idea di dire "dimentichiamoci di tutto questo business 'risolvi tutti i problemi del mondo' e basta aggiungere altri 32 fili all'i386 e rendere un 64- compatibile a 32 bit bit CPU "e nacque l'architettura CPU x86_64.

Infatti, se si guardano i nomi e le fonti del kernel per i principali sistemi operativi (Linux, Windows, BSD, ecc.) Li troverete pieni di riferimenti alle CPU AMD64 e all'architettura AMD64. AMD ha escogitato una strategia vincente per convincere tutti a passare al mondo a 64 bit preservando la compatibilità con le applicazioni a 32 bit, in modo tale che un sistema operativo a 32 bit potesse funzionare su hardware a 64 bit o anche su applicazioni a 32 bit potrebbe essere eseguito su un sistema operativo a 64 bit su hardware a 64 bit. Intel ha seguito la suite prima piuttosto che poi con la loro architettura "Intel EM64T" (che era sostanzialmente identica a AMD64) e x86_64 ha vinto mentre l'Itanic e altri come MIPS64 e ALPHA64 non sono stati visti più nel mercato desktop / server.

tl; dr amd64 aka x86_64 Le CPU sono progettate per essere compatibili con kernel e codice sia a 32 che a 64 bit, ma la maggior parte delle CPU a 64 bit non sono decisamente compatibili con le versioni precedenti allo stesso modo. Una CPU a 32 bit può accedere a un massimo di 4GiB di memoria, mentre una CPU a 64 bit può accedere a 16 EiB (16 × 1024 ^ 6 byte o 4 miliardi di volte più memoria di 4GiB).


1
Hai alcuni errori concreti: 1) l'itanium non ha introdotto istruzioni di lunghezza variabile (ogni x86 le ha avute); ha aggiunto istruzioni di parole molto lunghe, che erano in grado di operare contemporaneamente su più quantità di 64 bit. 2) x86_64 non ha semplicemente schiaffeggiato su più linee di indirizzo; ha anche aggiunto un mucchio di registri extra e ampliato tutti i registri (e le ALU che operano su di essi) da 32 a 64 bit. Confrontalo con l'8086/8088, che ha aggiunto altre 4 linee di indirizzi e registri di selezione segmenti, ma li ha tenuti tutti a 16 bit, come l'8080 precedente.
psusi

-1

Sia un sistema operativo a 32 e 64 bit può essere eseguito su un processore a 64 bit, ma il sistema operativo a 64 bit può utilizzare la piena potenza del processore a 64 bit (registri più grandi, più istruzioni) - in breve, può fare più lavoro contemporaneamente. Un processore a 32 bit supporta solo sistemi operativi Windows a 32 bit.


3
Questo non è corretto in genere, sebbene sia corretto per x64 in particolare.
ChrisInEdmonton,

1
Un processore a 32 bit eseguirà qualsiasi sistema operativo progettato per funzionare su tale architettura di processore.
Waxhead,

un sistema operativo x86 a 32 bit ovviamente non può essere eseguito su ARM64, quindi 32 and 64 bit OS can run on a 64 bit processorgeneralmente non è corretto
phuclv,

@ Phúc Potrebbero esserci processori a 64 bit, che non supportano il loro gemello a 32 bit. Comunque usi la falsa logica nel tuo argomento. SunOS 4.4.1 su MicroSparc a 32 bit non funzionerà neanche su ARM32. Usando la tua logica significa, in genere non è corretto che un sistema operativo a 32 bit possa essere eseguito su un processore a 32 bit. Se ignoro il buonsenso come te, posso dire che ARM OS a 32 bit funziona su Intel i386 / x64, mentre gli sviluppatori Android eseguono immagini ARM Android sulle loro macchine Wintel. Ovviamente il sistema operativo è per la giusta famiglia di processori e ovviamente il sistema operativo funziona su hardware fisico e non su emulazione (abbastanza detto, fuori)
Tino
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.