Warum kann Windows 7 nicht auf einem ARM-Prozessor-System installiert werden?

12

Heute habe ich einige Neuigkeiten ( 1 , 2 , 3 , 4 ) über Microsoft Windows 8 gelesen und festgestellt, dass eine der neuen Funktionen darin besteht, dass es über ein ARM-Prozessor- basiertes System ausgeführt werden kann. Ich frage mich daher, warum dies mit der aktuellen Release-Version von Windows (Seven) nicht möglich ist.

Welche tatsächlichen Einschränkungen bestehen für Windows 7, wenn Sie es auf einem ARM-Prozessor-basierten System installieren? Es hätte mit Kernel-Version, Treibern, Architektur oder sogar einer Mischung dieser Faktoren zu tun?

Bis ich weiß, dass ich Linux auf einem ARM installieren kann, also nicht einmal Windows Seven unter einer virtuellen VMWare-Maschine auf einem ARM installieren kann?

Diogo
quelle
1
Beachten Sie, dass Windows 8 auf ARM ausgeführt werden soll. windows8news.com/2011/01/05/…
JSB ձոգչ
1
Sie können Windows 7 auf einer virtuellen Maschine installieren, die unter einem ARM-Betriebssystem ausgeführt wird. Sie müssen lediglich ein Programm für eine virtuelle Maschine finden, das sowohl auf ARM als auch auf einem x86-Gast ausgeführt werden kann.
Durchbruch

Antworten:

30

Damit Binärdateien auf einem ARM-Prozessor ausgeführt werden können, müssen sie speziell für diesen Prozessor kompiliert oder in einem Emulator ausgeführt werden.

Da Linux-Systeme Open Source sind, können Benutzer sie speziell für ARM-Systeme kompilieren und jeden x86-spezifischen Code neu schreiben. Da die Quelle für Windows geschlossen ist, kann sie nicht erneut kompiliert und ausgeführt werden, es sei denn, Microsoft veröffentlicht eine ARM-Version.

Es gibt andere Probleme beim Umstieg auf ARM-Systeme, aber dies ist wahrscheinlich das größte.

Soweit ich weiß, emuliert VMware kein x86. Ich denke, qemu kann das, aber ich habe es vorher nicht für die x86-Emulation von ARM verwendet, sondern nur für die x86-Emulation von ARM. Es wird einen erheblichen Leistungseinbruch geben, wenn es funktioniert.

Während jedes Programm für die Architektur kompiliert werden muss, auf der es ausgeführt werden soll, muss ein Betriebssystem häufig viel stärker an die spezifische Architektur angepasst werden. Betriebssysteme sind für Dinge wie Zeitplanung und Taskwechsel verantwortlich, die auf sehr tiefen Ebenen mit dem Prozessor zusammenarbeiten.

jhulst
quelle
8
Beachten Sie, dass Sie den ersten Satz verallgemeinern können, indem Sie das Wort "ARM" entfernen und trotzdem eine echte Aussage machen - in der Regel müssen Binärdateien immer entweder für die Architektur kompiliert werden, auf der sie ausgeführt werden, oder Sie müssen eine Emulator- oder Interpreter-Ebene haben .
Shinrai
4
@jhulst Ich habe qemu verwendet, um x86 auf PowerPC zu emulieren, und ja, es ist unglaublich langsam.
Cajunluke
Angeblich hat VPC (das MS gekauft hat) x86 auf PPC mit dynamischer Neukompilierung vernünftig gemacht. Zugegeben, das war vor Ewigkeiten und ich habe es selbst nie ausprobiert. QEMU ist schrecklich, abgesehen von seiner Portabilität IMO. Es macht einige Dinge SEHR gut (wie das Nicht-Benötigen von Kernel-Hooks), aber es ist ineffizient.
Geselle Geek
Dieser QEMU-Port zur ARM-Host-Plattform sieht nicht sehr mainstream aus und ich konnte keine anderen finden.
RedGrittyBrick
Gerätetreiber wären ebenfalls ein Problem, insbesondere für alle einzigartigen Dinge, die auf ARM-Systeme beschränkt sind.
CarlF
8

Die einfache Antwort lautet: "MS hat keinen Port freigegeben" (obwohl Windows 8 auf ARM portiert werden soll), da dies zu diesem Zeitpunkt keinen geschäftlichen Sinn ergab. Wenn Sie in gehen möchten, wenn MS könnte ...

Nun, in der Vergangenheit lief die NT-Familie auf einer Reihe von Prozessoren - NT lief auf Alpha, PPC und MIPS, und es gab geplante Ports für die Clipper- und SPARC-Architekturen. Dies ist möglich, weil Windows NT die hardwareabhängigen Teile des Codes (die HAL ) abstrahiert und nur diesen Abschnitt neu schreibt und alles andere neu kompiliert (obwohl .NET- basierte Software theoretisch angeblich hardwareunabhängig ist).

Im Gegensatz zu Linux, das, wenn ich mich recht erinnere, für jede Architektur separate Kernel-Zweige hat, ist angeblich NUR die HAL hardwarespezifisch, und der Rest ist normal. Ich glaube, dass eine HAL für die fragliche ARM-Plattform relativ sein sollte trivial und unterscheidet sich nicht von der Codierung für verschiedene Hardware-Bits, insbesondere wenn das System ansonsten konventionell war, z. B. unter Verwendung von PCI-E und anderen Schnittstellen nach Industriestandard.

Angenommen, Microsoft hat einen ARM-Port von Windows 7 veröffentlicht, und jede Software, die nicht interpretiert wird oder auf einer VM wie JVM, LLVM oder CLR ausgeführt wird, muss neu kompiliert oder auf einer Übersetzungsebene wie Rosetta oder der alten 68K-Kompatibilität ausgeführt werden Schicht auf älteren Macs , die x86-spezifischen Code kennt (und das in der Emulation transparent ausführt ), und es gibt genügend Prozessorleistung für die Übersetzung.

Geselle Geek
quelle
.NET-Software kann mit Mono, einem Open Source-Compiler / einer Open Source-Laufzeit für .NET-Programme, die unter den meisten gängigen Betriebssystemen ausgeführt werden, auf nahezu jeder wichtigen Architektur ausgeführt werden. Dies ist natürlich nicht direkt relevant für die ursprüngliche Frage.
CarlF
Nun, nein. Es ist relevant für den Teil, in dem 'Software neu kompiliert werden müsste'. Ich glaube, CLR ist möglicherweise plattformunabhängig und / oder .net-Code wird bei der Installation optimiert / kompiliert. Ich habe Mono leider total vergessen, es ist eines der Dinge, die im Hintergrund leise funktionieren: p
Journeyman Geek
@CarlF Die Einschränkung ist, dass Sie P / Invoke nicht verwenden können, um auf Win32-Binärdateien zuzugreifen. In dem Moment, in dem Sie dies tun müssen, verlieren Sie Ihre plattformübergreifende Unterstützung. Dies ist weniger ein Problem als es war, als das .Net-Framework gewachsen ist; Wenn Ihre App jedoch eine enge Verbindung mit Systemen von Drittanbietern herstellen muss, ist systemeigener Code häufig anzutreffen.
Dan ist Fiddling von Firelight
2

Sie können keine Binärdateien auf Prozessoren ausführen, die eine andere Architektur als die Architektur haben, zu der die Binärdateien kompiliert wurden.

Sie können unter ARM kein AMD64-Linux ausführen, genauso wie Sie auf einem i386-Prozessor (32-Bit) kein AMD64-Linux ausführen können. Sie haben nur die Möglichkeit, einen ganzen Prozessor zu emulieren (siehe qemu ) und dann Ihr Bestes zu geben.

VMware / VirtualBox sind keine Prozessoremulatoren, daher haben Sie dort auch Pech.

Akira
quelle