Possiamo installare un programma a 64 bit su un sistema operativo a 32 bit?

La maggior parte delle altre risposte sono corrette nel dire che non è possibile installare ed eseguire un programma a 64 bit su un sistema operativo a 32 bit, ma che è generalmente possibile installare ed eseguire programmi a 32 bit su un sistema operativo a 64 bit.

Tuttavia, la maggior parte delle risposte sembra dare per scontato che eseguire 32-over-64 sia semplice e facile.

Per quanto riguarda l'installazione di un sistema operativo a 32 bit su una CPU Intel a 64 bit, questo è possibile perché queste CPU sono retrocompatibili e la "modalità" a 64 bit è effettivamente attivata dal software, in qualche momento durante le prime fasi del processo di avvio.

Un sistema operativo a 32 bit ovviamente non lo farà e la CPU rimarrà in modalità a 32 bit ed eseguirà felicemente il sistema operativo a 32 bit, che potrebbe non accorgersi mai di essere in esecuzione su un processore con capacità a 64 bit.

Le applicazioni a 32 bit gireranno in cima al sistema operativo a 32 bit installato su una CPU con capacità a 64 bit senza problemi, soprattutto perché la CPU con capacità a 64 bit lasciata in modalità a 32 bit si comporta come una CPU a 32 bit a tutti gli effetti.

D'altra parte, l'esecuzione di applicazioni a 32-bit su una versione a 64-bit del sistema operativo Windows non era certamente concessa né facile all'inizio!

L'esecuzione di binari a 32-bit su una versione a 64-bit del sistema operativo Windows è resa possibile solo grazie a un ENORME investimento da parte di Microsoft (in particolare il team del kernel) per assicurarsi che le applicazioni a 32-bit si carichino ed eseguano su Windows a 64-bit come farebbero su una versione a 32-bit del SO.

Guardate la vostra cartella WindowsSysWow64 e considerate che ogni file lì dentro è una versione speciale a 32 bit del corrispondente componente di sistema a 64 bit, progettato per emulare la funzione, o tradurre / inoltrare / ritradurre le chiamate di funzione ai sottostanti servizi di sistema della piattaforma nativa a 64 bit.

Senza tutto questo, eseguire un'applicazione a 32 bit su Windows 64 non sarebbe "molto facile" ma semplicemente impossibile.

Ho trovato una spiegazione decente sul web: The 'Program Files (x86)' e 'SysWOW64' folders explained

Per espandere un po', ho fatto parte del team di compatibilità delle applicazioni per la versione ARM64 di Windows[1] , recentemente annunciata, che, oltre alle applicazioni native ARM64, esegue anche applicazioni ARM a 32 bit e Intel x86 a 32 bit sulle CPU ARM64.

Eseguire applicazioni Intel a 32-bit su una versione ARM a 64-bit di Windows non è molto diverso dall'eseguire applicazioni ARM a 32-bit su un sistema operativo ARM a 64-bit, o per quella materia applicazioni Intel a 32-bit su una versione Intel a 64-bit del sistema operativo.

Certo, il set di istruzioni è diverso e questo ha richiesto alcuni passaggi aggiuntivi (nel caso ARM, la traduzione binaria e la compilazione just-in-time da x86 ad ARM) ma, a parte questo passaggio piuttosto meccanico, il problema di eseguire roba a 32 bit su Windows 64 è esattamente lo stesso.

Con l'aiuto del nostro team di data science, abbiamo identificato le applicazioni e i giochi più popolari, che coprono la stragrande maggioranza degli utenti Windows in tutto il mondo, e li abbiamo effettivamente installati e testati tutti. Si tratta di diverse centinaia di applicazioni e migliaia di ore di test automatici e manuali.

Nel corso di diversi mesi, migliaia di bug sono stati archiviati e centinaia di problemi sono stati risolti nei livelli di emulazione per garantire un'esperienza fluida per gli utenti finali. In alcune occasioni, abbiamo contattato gli editori e lavorato con loro per assicurare la compatibilità.

Così, nel mondo Windows, le applicazioni a 32-bit su un sistema operativo a 64-bit, cross-architettura o no, non accade gratuitamente o per caso, è il risultato di un sacco di duro lavoro da parte di molte persone in molti team di Windows, da quelli del setup che installano le vostre applicazioni a quelli del kernel che forniscono i servizi di base del sistema operativo e praticamente tutti gli altri, e tonnellate e tonnellate di codice speciale per emulare l'ambiente che l'applicazione a 32-bit si aspetta e di cui ha bisogno per poter funzionare.

Footnotes

[1] Microsoft launches Windows 10 on ARM, with HP and ASUS promising 20+ hours of battery life