为什么Windows 7无法安装在基于ARM处理器的系统上?


12

今天,我在读一些新闻(1234有关Microsoft Windows 8),看到的新功能之一是,它可以运行在ARM处理器为基础的系统。这使我想知道为什么当前版本的Windows(Seven)无法完成它的原因。

要在基于ARM处理器的系统上安装Windows 7,对Windows 7的实际限制是什么?它与内核版本,驱动程序,体系结构甚至是这些因素的混合有关吗?

在不知不觉中,我可以在ARM上安装Linux,所以我什至不能在ARM的VMWare虚拟机下安装Windows 7?


1
请注意,Windows 8计划在ARM上运行。windows8news.com/2011/01/05/...
JSBձոգչ

1
可以将Windows 7安装在ARM操作系统中运行的虚拟机中。您只需要找到一个既可以在ARM上运行又可以运行x86 guest虚拟机的虚拟机程序。
突破

Answers:


30

为了使二进制文件能够在ARM处理器上运行,它们必须专门针对该处理器进行编译或在仿真器中运行。

由于Linux系统是开源的,因此人们可以为ARM系统专门编译它们,并重写任何x86特定的代码。由于Windows的源代码是封闭的,因此除非Microsoft发布ARM版本,否则无法对其进行重新编译和运行。

迁移到ARM系统还存在其他问题,但这可能是最大的问题。

据我所知,VMware不会模拟x86。我认为qemu也许可以,但是我以前没有将它用于ARM仿真x86,只是x86仿真ARM。如果有效,将会对性能造成重大影响。

尽管需要针对要在其上运行的体系结构编译任何程序,但通常需要针对特定​​体系结构对操作系统进行更多的自定义。操作系统负责诸如调度和任务切换之类的事情,它们在很深的层次上与处理器一起工作。


8
请注意,您可以通过删除单词“ ARM”来概括第一句话,并且仍然具有真实的语句-因为规则二进制文件始终必须针对其所运行的体系结构进行编译,否则必须具有仿真器或解释器层
Shinrai 2011年

4
@jhulst我已经使用qemu在PowerPC上模拟x86,是的,它的运行速度非常慢。
Cajunluke 2011年

假设VPC(MS购买了)通过动态重新编译在PPC上做了x86。当然,这是很久以前的事了,我从来没有亲自尝试过。QEMU除了其可移植性IMO外,还很恐怖。它做得很好(例如不需要内核钩子),但是效率低下。
Journeyman Geek

QEMU端口ARM主机平台看起来不是很主流,我无法找到任何其他人。
RedGrittyBrick 2011年

设备驱动程序也将是一个问题,特别是对于仅限于ARM系统的任何独特的东西。
Carf 2011年

8

一个简单的答案是“ MS尚未释放端口”(尽管Windows 8应该被移植到ARM),只是造成当时没有任何商业意义。如果您想了解MS是否可以...

好的,从历史上看,NT系列已经在多种处理器上运行-NT在Alpha,PPC和MIPS上运行,并且为Clipper和SPARC体系结构计划了端口。这是可能的,因为Windows NT提取了代码的硬件相关部分(HAL),并重写了该部分,然后重新编译了其他所有代码(尽管从理论上讲,基于.NET的软件与硬件无关)。

与Linux不同的是,如果我记得正确的话,每个体系结构都有单独的内核分支,那么据说HAL仅针对硬件,其余的则很常见-我相信,一旦为所讨论的ARM平台创建了HAL,它就应该相对这很简单,并且与为各种硬件进行编码没有什么不同,特别是如果系统是常规的,例如使用PCI-E和其他行业标准的接口。

假设Microsoft发布了Windows 7的ARM端口,则任何未解释的软件或在诸如JVM,LLVM或CLR之类的VM上运行的任何软件都需要重新编译或在翻译层(如Rosetta旧的68K兼容性)上运行在较旧的Mac上,它知道x86特定的代码(并透明地运行该代码),并且具有足够的处理器功能来进行翻译。


.NET软件几乎可以使用Mono在任何主要体系结构上运行,Mono是适用于在大多数主要操作系统下运行的.NET程序的开源编译器/运行时。当然,这与原始问题并不直接相关。
Carf 2011年

好吧,不。它与“需要重新编译软件”的部分有关。我确实相信CLR可能独立于平台,和/或.net代码在安装时已优化/编译。不幸的是,我完全忘了单声道,它是那些在后台安静运行的东西之一; p
Journeyman Geek

@CarlF的警告是您不能使用P / Invoke访问任何win32二进制文件。需要这样做的那一刻,您就会失去跨平台支持。与.Net框架的发展相比,这不再是一个问题。但是,如果您的应用需要与任何第三方系统紧密连接,则本机代码会变得相当普遍。
Dan在Firelight摆弄2011年

2

您不能在与编译二进制文件的体系结构不同的处理器上运行二进制文件。

您无法在ARM上运行AMD64 Linux,就像无法在i386(32位)处理器上运行AMD64 Linux。您唯一的选择是模拟整个处理器(请参阅qemu),然后尽力而为。

VMware / VirtualBox不是处理器仿真器,因此您也很不走运。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.