WOW64の詳細
64bit Windowsでは、ソフトのデータタイプが32bitから64bitに拡張されている。そのため、Intel64/AMD64の「64bit Mode」で直接32bitプログラムを実行すると、CPU側では64bitレジスターがそのまま利用されてしまい、32bitプログラムではデータがおかしくなり、動作しなくなる。
WOW64では32bitプログラムで作られたアプリケーションを検出すると、CPUを32bitプログラムが動く「Compatibility Mode」に変更する。これにより、64bit CPUでも、問題なく32bitプログラムが動作するようになっている。さらにWOW64は、各32bitプログラムごとに、4GBの仮想メモリー空間が割り当てられる(古い32bitプログラムでは、2GBまでの仮想メモリー空間しか利用できない場合もある)。
なお、32bitプログラムもソースコードを修正して64bit化すれば、64bitネイティブの環境で動かせる。マイクロソフトでもアプリケーションの64bit化を支援していて、移行のためのツールやドキュメントなどを開発者向けに提供している。
なぜ64bit版Windowsでは、
32bitドライバーが使えないのか?
WOW64自体は、OSのユーザーモードで動作している。一方で、カーネルモードで動くOSカーネル自体は、完全に64bit化されている。そのため、カーネルモードで動作するプログラム、例えばデバイスドライバー類はWOW64を利用できない。そのため、32bit版デバイスドライバーは、64bit Windowsでは使用できない。64bit版が新たに必要になる。
またWOW64は、32bitプログラムと64bitプログラムを、ひとつのプロセス内で混在させて実行できない。そのため、64bitプログラムで呼び出せるDLLは64bit DLLだけだし、32bitのDLLは呼び出せない。もちろん32bitプログラムからの64bit DLL呼び出しもできない。
この影響がわかりやすく現われているのはInternet Explorer(IE)だ。64bit版Windowsには、64bit版のIEと32bit版のIEがそれぞれ別に用意されている。これは、IE用のプラグインのほとんどが32bit版であるため、64bit版IEでは動作しないからだ。そのため64bit版IEでは、32bitプラグインに依存したウェブページを表示できない。
この問題に対処するため、既存のプラグインが動作する32bit版IEも用意されているわけだ。例えば、アドビの「Flash Player 10」は、32bit版しか用意されていない。そのため、Flashが使用されたウェブページを見るには、32bit版IEが必要となる。
現在は64bit環境への移行が始まったばかりということもあり、64bit版プラグインはほとんどない。しかし、将来的にはデスクトップ環境も64bit版Windowsへと移行していくだろうから、いずれは64bit版Windowsが主流になれば、多くのプラグインが64bit化されると思われる。
ちなみに、2010年第1四半期にリリースされる予定の「Flash Player 10.1」は32bit版のままだ。そのため64bit版Windows 7では、32bit版IE環境で動作させることになる。アドビシステムズでは、64bit版のFlash Playerを開発する計画を進めているというが、64bit版のFlash Playerが登場するのは、おそらく次世代のFlash Playerからとなるのではないだろうか。
この連載の記事
-
第50回
PC
次期IE「Internet Explorer 10」プレビュー版が公開 -
第49回
PC
RTM版も登場 Windows Home Server 2011の変更点とは -
第48回
PC
5秒で起動するSplashtop OSを自作パソコンで試す -
第47回
PC
ベンチで検証 Internet Explorer 9 RCの互換性と性能 -
第46回
PC
正式版の直前となるInternet Explorer 9 RC版が登場 -
第45回
PC
Silverlightをさらに進化させる「Silverlight 5」 -
第44回
PC
「Windows on ARM」が持つ意味と課題は何か? -
第43回
PC
GPUを利用できる仮想化ソフト XenClient 実践編 -
第42回
PC
複数のWindowsを使い分ける仮想化ソフト XenClient -
第41回
PC
3秒で起動しWindowsと共存するOS「Splashtop OS」 -
第40回
PC
最新版「PP7」に見るIE9の性能と互換性の高さ - この連載の一覧へ