it-swarm-eu.dev

Un sistema operativo a 32 bit può essere eseguito in un processore a 64 bit?

Qual è la differenza tra OS a 32 bit e SO a 64 bit? Un sistema operativo a 32 bit può essere eseguito in un processore a 64 bit?

23
Prabhu

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

È possibile eseguire Windows x86 a 32 bit su un computer x64. Si noti che non è possibile farlo su sistemi Itanium a 64 bit.

32
Mehrdad Afshari

Un processore a 64 bit può eseguire sia il 32 sia il 64 OS (almeno un x64 può). Un processore a 32 bit può eseguire solo 32 in modo nativo.

La differenza è principalmente sulla dimensione di un puntatore/riferimento. Su macchine a 64 bit, è possibile fare riferimento a un indirizzo in un intervallo di indirizzi a 64 bit (fornendo quindi 2 ^ 64 byte di memoria). Su 32 bit puoi indirizzare solo 2 ^ 32 byte (= 4 GB). Ora, se si guardano i computer attuali, è ovvio perché il mondo si sta spostando a 64 bit: 32 bit non possono più indirizzare tutti i RAM più.

Su x64 (AMD/Intel) si ottengono 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 ovvie. Ad esempio il Nintendo 64 (ricordate 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ù come un trucco di marketing.

14
Lemmy

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

Nei tempi in cui la CPU quando le persone erano solite sedersi e tessere (avvolgere) i fili tra un processore e la memoria, si sarebbe dovuto usare 32 o (teoricamente, perché al momento non esisteva) 64 fili tra la CPU e il controller di memoria che verrebbero utilizzati per specificare l'indirizzo di memoria a cui 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 si prende una CPU a 32 bit e si aggiungono altri 32 cavi tra la CPU e il controller di memoria in modo da poter magicamente supportare più memoria, ora si ha una "CPU a 64 bit" in grado di eseguire 32 bit codice o codice a 64 bit. Che cosa significa e come accade? Bene, prendiamo la nostra CPU a 2 bit dalla prima parte di questa risposta e aggiungiamo un altro cavo, 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 cableremo la connessione aggiuntiva a zero, quindi in realtà quando viene eseguito il codice a 2 byte, quando seleziona 00, in realtà seleziona 000 e quando seleziona 11 in realtà seleziona 011. Facile.

Ora un programmatore vuole scrivere codice a 3 byte "nativo" e scrive il suo software per sfruttare lo spazio di indirizzi extra. Dice alla CPU che lei sa cosa sta facendo e che prenderà il controllo manuale dei nuovi cavi extra. Il suo software conosce i cavi aggiuntivi e invia correttamente 000-111, dandole pieno accesso all'intervallo di memoria supportato dalla nuova architettura della CPU.

Ma non è così che deve accadere. In realtà, questo è normale non come accadono le cose. Quando le CPU a 64 bit sono state introdotte per la prima volta (e ce ne sono state molte), tutte sono state progettate con architetture/design completamente nuovi. Non hanno solo virato 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 la programmazione in questo linguaggio macchina completamente nuovo, si comporta in questo modo completamente nuovo, risolve un mucchio di diversi problemi molto più elegantemente delle vecchie CPU x86/i386 a 32 bit, e si tratta di un'architettura nativa a 64 bit. ".

Questa era la storia di Intel Itanium, ora nota come "Itanica" per via di come affondò in maniera massiccia. Doveva annunciare nella nuova era a 64 bit, ed era qualcosa da guardare. Istruzioni di lunghezza variabile, enormi cache, spazio di indirizzamento a 64 bit, tonnellate di registri, super eccitante, super cool e super difficile da convincere tutti a ricompilare o riscrivere 20 anni di codice legacy per. Questo accadeva quando AMD e Intel erano in competizione, e AMD ebbe la brillante idea di dire "dimentichiamo tutto questo" risolviamo tutto il business dei problemi del mondo e aggiungiamo altri 32 fili all'i386 e realizziamo un 64-bit compatibile 64- bit CPU "e l'architettura CPU x86_64 è nata.

Infatti, se si guardano i nomi e le fonti del kernel per i principali sistemi operativi (Linux, Windows, BSD, ecc.), Li troverete disseminati di riferimenti alle CPU AMD64 e all'architettura AMD64. AMD ha messo a punto una strategia vincente per convincere tutti a passare al mondo a 64 bit mantenendo la compatibilità con le applicazioni a 32 bit, in modo che un sistema operativo a 32 bit potesse essere eseguito su hardware a 64 bit o persino applicazioni a 32 bit potrebbe funzionare su un sistema operativo a 64 bit su hardware a 64 bit. Intel ha seguito la suite prima piuttosto che con la loro architettura "Intel EM64T" (che era sostanzialmente identica a AMD64) e x86_64 ha vinto mentre Itanic e altri come MIPS64 e ALPHA64 non sono stati più visti 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 sono decisamente non compatibile all'indietro allo stesso modo. Una CPU a 32 bit può accedere al massimo a 4GiB di memoria, mentre una CPU a 64 bit può accedere a 16 EiB straordinari (16 × 1024 ^ 6 byte o 4 miliardi Memorizza la quantità di memoria di 4GiB).

3