web-dev-qa-db-ja.com

Windows7をARMプロセッサベースのシステムにインストールできないのはなぜですか?

今日、私はMicrosoft Windows 8に関するいくつかのニュース( 12 、、 4 )を読んでいて、それを見ました新機能の1つは、 ARMプロセッサ ベースのシステムで実行できることです。これは、Windows(Seven)の現在のリリースバージョンではそれができない理由を不思議に思います。

ARMプロセッサベースのシステムにインストールすることを知っておくべきWindows7の実際の制限は何ですか?それはカーネルバージョン、ドライバー、アーキテクチャー、あるいはこれらの要素の混合に関係するでしょう?

私が知るまで、LinuxをARMにインストールできるので、ARMのVMWare仮想マシンにWindows Sevenをインストールすることさえできませんか?

12
Diogo

バイナリをARM=プロセッサで実行するには、それらをそのプロセッサ用にコンパイルするか、エミュレータで実行する必要があります。

Linuxシステムはオープンソースであるため、ARMシステム用にコンパイルして、x86固有のコードを書き直すことができます。Windowsのソースはクローズされているため、MicrosoftがARMバージョン、再コンパイルして実行することはできません。

ARMシステムへの移行には他にも問題がありますが、これがおそらく最大です。

私の知る限り、VMwareはx86をエミュレートしません。 qem は可能かもしれないと思いますが、ARM x86をエミュレートする前には使用していません。x86がARMをエミュレートしているだけです。動作します。

プログラムは、実行する予定のアーキテクチャ用にコンパイルする必要がありますが、オペレーティングシステムは、特定のアーキテクチャに合わせてさらにカスタマイズする必要があることがよくあります。オペレーティングシステムは、非常に深いレベルでプロセッサと連携する、スケジューリングやタスクの切り替えなどを担当します。

30
jhulst

単純な答えは「MSはポートをリリースしていません」(Windows 8はARMに移植されることになっていますが)、それは単にその時点ではビジネス上意味がないためです。あなたが入りたいのなら、MSができれば...

さて、歴史的に、NTファミリはさまざまなプロセッサで実行されてきました-NTはAlpha、PPCおよびMIPSで実行され、 Clipper および=のポートが計画されていましたSPARCアーキテクチャ。これは、Windows NTがコードのハードウェア依存部分( [〜#〜] hal [〜#〜] )を抽象化し、それだけを書き直したために可能です。セクションと他のすべてを再コンパイルすると、トリックが実行されます(理論的には 。NET ベースのソフトウェアはハードウェアに依存しないと思われます)。

Linuxとは異なり、アーキテクチャごとに個別のカーネルブランチがあることを思い出すと、おそらくHALのみがハードウェア固有であり、残りは一般的です。かつてはARMプラットフォームのHALだと思います問題が作成された場合、それは比較的些細なことであり、ハードウェアのさまざまなビットのコーディングと同じである必要があります。特に、システムが従来型である場合、たとえばPCI-Eやその他の業界標準のインターフェイスを使用する場合はそうです。

MicrosoftがWindows7のARMポートをリリースしたと仮定すると、解釈されないソフトウェア、またはJVM、LLVM、CLRなどのVM再コンパイルするか、 Rosetta古いMacの古い68K互換性レイヤー などの翻訳レイヤーで実行する必要があります。これはx86固有のコードを認識します(そしてそれをエミュレーションで透過的に実行します) )、そして翻訳のための十分なプロセッサ能力があります。

8
Journeyman Geek

バイナリがコンパイルされたアーキテクチャとは異なるアーキテクチャであるプロセッサでバイナリを実行することはできません。

I386(32ビット)プロセッサでAMD64 Linuxを実行できないのと同様に、ARMでAMD64Linuxを実行することはできません。唯一のオプションは、プロセッサ全体をエミュレートして( qem を参照)、最善を尽くすことです。

VMware/VirtualBoxはプロセッサーエミュレーターではないので、そこでもうまくいきません。

2
akira