Perché Windows 7 non può essere installato su un sistema basato su processore ARM?


12

Oggi stavo leggendo alcune notizie ( 1 , 2 , 3 , 4 ) su Microsoft Windows 8 e ho visto che una delle nuove funzionalità è che può funzionare su un sistema basato su processore ARM . Questo mi fa chiedere i motivi per cui non è possibile farlo con l'attuale versione di Windows (Seven).

Quali sono le attuali limitazioni a Windows 7 per essere consapevoli di installarlo su un sistema basato su processore ARM? Avrebbe a che fare con la versione del kernel, i driver, l'architettura o anche una combinazione di questi fattori?

Fino a quando non lo so, posso installare Linux su un ARM, quindi non posso nemmeno installare Windows Seven sotto la macchina virtuale VMWare su un ARM?


1
Si noti che Windows 8 dovrebbe funzionare su ARM. windows8news.com/2011/01/05/…
JSB ձոգչ

1
È possibile installare Windows 7 in una macchina virtuale in esecuzione in un sistema operativo ARM. Hai solo bisogno di trovare un programma di macchina virtuale che sia in esecuzione su ARM ed è in grado di eseguire un guest x86.
Sfondamento

Risposte:


30

Affinché i binari possano essere eseguiti su un processore ARM, devono essere compilati specificamente per quel processore o essere eseguiti in un emulatore.

Poiché i sistemi Linux sono open source, le persone possono compilarli specificamente per i sistemi ARM e riscrivere qualsiasi codice specifico x86. Poiché l'origine per Windows è chiusa, a meno che Microsoft non rilasci una versione ARM, non può essere ricompilata ed eseguita su di essa.

Ci sono altri problemi con il passaggio ai sistemi ARM, ma questo è probabilmente il più grande.

Per quanto ne so, VMware non emulerà un x86. Penso che qemu possa essere in grado di farlo, ma non l'ho mai usato per ARM che emula x86 prima, solo per emulazione x86 ARM. Ci sarà un notevole impatto sulle prestazioni se funziona.

Mentre ogni programma deve essere compilato per l'architettura su cui è progettato, un sistema operativo deve spesso essere molto più personalizzato per l'architettura specifica. I sistemi operativi sono responsabili di cose come la pianificazione e il cambio di attività, che funzionano con il processore a livelli molto profondi.


8
Nota che puoi generalizzare la prima frase rimuovendo la parola "ARM" e avere ancora una vera dichiarazione - come regola i binari devono sempre essere compilati per l'architettura su cui sono in esecuzione, oppure avere un livello di emulatore o interprete .
Shinrai,

4
@jhulst Ho usato qemu per emulare x86 su PowerPC e, sì, è incredibilmente lento.
Cajunluke,

Presumibilmente VPC (acquistato da MS) ha eseguito decentemente x86 su PPC con ricompilazione dinamica. Certo, è successo anni fa e non l'ho mai provato da solo. QEMU è orribile oltre alla sua portabilità IMO. Fa alcune cose MOLTO bene (come non aver bisogno di hook del kernel) ma è inefficiente.
Journeyman Geek

Questa porta QEMU per la piattaforma host ARM non sembra molto mainstream e non sono riuscito a trovarne altri.
RedGrittyBrick il

Anche i driver di dispositivo costituirebbero un problema, in particolare per qualsiasi cosa unica limitata ai sistemi ARM.
CarlF,

8

La semplice risposta è "MS non ha rilasciato una porta" (anche se Windows 8 dovrebbe essere portato su ARM), perché all'epoca non aveva senso. Se vuoi entrare, se MS potesse ...

Beh, storicamente, la famiglia NT ha funzionato su una serie di processori: NT funzionava su Alpha, PPC e MIPS e c'erano porte pianificate per le architetture Clipper e SPARC. Ciò è possibile perché Windows NT ha estratto le parti del codice dipendenti dall'hardware ( HAL ) e riscritto solo quella sezione e ricompilando tutto il resto dovrebbe fare il trucco (anche se in teoria il software basato su .NET è presumibilmente indipendente dall'hardware).

A differenza di Linux, che, se ricordo bene, ha rami del kernel separati per ogni architettura, presumibilmente SOLO l'HAL è specifico per l'hardware e il resto è comune - credo che una volta creato un HAL per la piattaforma ARM in questione, dovrebbe essere relativamente banale e non diverso dalla codifica per vari bit di hardware, specialmente se il sistema fosse altrimenti convenzionale, ad esempio, usando PCI-E e altre interfacce standard del settore.

Supponendo che Microsoft abbia rilasciato una porta ARM di Windows 7, qualsiasi software non interpretato o in esecuzione su una macchina virtuale di sorta come JVM, LLVM o CLR dovrebbe essere ricompilato o eseguito su un livello di traduzione, come Rosetta o la vecchia compatibilità 68K strato su Mac più vecchi , è a conoscenza del codice specifico x86 (e lo esegue in emulazione in modo trasparente) e c'è potenza del processore sufficiente per la traduzione.


Il software .NET può essere eseguito su quasi tutte le principali architetture utilizzando Mono, che è un compilatore / runtime Open Source per i programmi .NET che funziona con la maggior parte dei principali sistemi operativi. Questo non è direttamente pertinente alla domanda originale, ovviamente.
CarlF,

Beh no. È rilevante per la parte in cui "il software dovrebbe essere ricompilato". Credo che CLR sia potenzialmente indipendente dalla piattaforma e / o il codice .net sia ottimizzato / compilato al momento dell'installazione. Mi sono completamente dimenticato del mono, sfortunatamente, è una di quelle cose che funzionano tranquillamente in background; p
Journeyman Geek

L'avvertenza è che non puoi usare P / Invoke per accedere a qualsiasi binario win32. Nel momento in cui devi farlo, perdi il supporto multipiattaforma. Questo è meno un problema di quanto non fosse la crescita del framework .Net; ma se l'app deve interfacciarsi strettamente con eventuali dipendenze di sistemi di terze parti, il codice nativo diventa abbastanza comune.
Dan è Fiddling by Firelight il

2

Non è possibile eseguire binari su processori che hanno un'architettura diversa dall'architettura in cui sono stati compilati i binari.

Non è possibile eseguire un AMD64 Linux su ARM, così come non è possibile eseguire AMD64 linux su un processore i386 (32 bit). Le tue uniche opzioni sono emulare un intero processore (vedi qemu ) e poi fare del tuo meglio.

VMware / VirtualBox non sono emulatori di processori, quindi sei sfortunato anche lì.

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.