WOW64によってレジストリも2種類あり
![]() | ![]() | |
|---|---|---|
| WOW64では環境変数やレジストリをリダイレクトして32bit環境に変更する | ||
64bit版Windowsでアプリケーションが動作する際には、Windowsシステムフォルダー(¥Windows¥System32)にあるアプリケーションやDLLにアクセスする。このWindowsシステムフォルダーにあるのは、64bitのプログラムだ(64bitプログラムがあるのに「System32」なのは互換性維持のため)。
先に述べたように、WOW64上で32bitプログラムを動かした場合、64bitのDLLは呼び出せない。そのためWOW64では、32bitプログラムに対してWindowsシステムフォルダーを「¥Windows¥SysWOW64」に切り替える。このSysWOW64フォルダーに、32bit版のアプリケーションやDLLが保存されている。
またレジストリにも、WOW64上で動かす32bitプログラムのために、「HKEY_LOCAL_MACHINE¥Software¥Wow6432Node」という項目が用意されている。32bitプログラムが使用するレジストリは、この項目以下に作られる。もちろん、WOW64環境用の32bit用レジストリエディター(¥Windows¥SysWOW64¥Regedit.exe)も用意されている。
なお、アプリケーションをインストールする際には自動でチェックされ、64bitアプリケーションは「¥Program Files」に、32bitプログラムは「¥Program Files(x86)」にインストールされる。
.NETアプリケーションはシームレスに
C++などで作成した一般的な32bitアプリケーションは、先に説明したようにWOW64でエミュレーションされる。ところで、マイクロソフトの「.NET Framework」で作成した.NET対応アプリケーションはどうなるのだろうか?
![]() | .NETアプリケーションは、64bit環境では64bit版の.NET Frameworkが使用される |
|---|
.NET FrameworkはJavaのように、プログラムを中間言語に変換して、インタプリターが逐次実行する仕組みをとる。64bit Windowsでは、64bit版の.NET Frameworkが用意されるため、.NET対応アプリケーションは自動的に64bit環境で動作する。.NET Frameworkは32bitか64bitといった違いも吸収してくれるわけだ。
64bit版だけの機能も搭載
主流になるのも遠くない
WOW64は64bit Windows環境の上に32bit Windows環境を用意する互換機能だ。そのため、64bitと32bitのプログラムは事実上分断されている。しかし、x86 CPUのIntel64/AMD64機能自体は、64bit/32bitプログラムの混在が可能である。例えばMac OS Xでは、64bit OS上で32bitのデバイスドライバーが使えている。そのため、「WOW64のコンセプトに問題があるのでは」とも言われる。
OS開発の経緯や優先順位など、いろいろな事情はあるだろう。しかし、16bitから32bitへのOSとアプリケーションの進化の過程を見てきたマイクロソフトは、「早晩すべてのソフトが64bit化する」と考えているのではないか。
32bitと64bitの混在を許せば、多くのアプリケーションが64bit化されても、カーネルやデバイスドライバーの一部などに、32bitプログラムが澱のように残ってしまう。そうなると、32bitプログラムが性能面でのボトルネックになったり、トラブルの原因となる可能性もある。そう考えて、WOW64によって32bitプログラムと64bitプログラムの実行環境を分け、将来的にフル64bit環境をWindowsで実現しようとしているのでは、と筆者は考える。
実際に、64bit版Windows 7付属のアプリケーションは、メモ帳やペイントなど、ほとんどが64bit化されている。また、2010年にリリース予定の「Office 2010」では64bit版もリリースされる予定だ。
また、64bit版Windows7とWindows Server 2008 R2には、Vista/Windows Server 2008までと異なり、カーネルにマルチスレッドを効率的に動かす機能「UMS」(User Mode Scheduler)が追加されている。32bit版Windows 7にはない機能である。
UMSは2010年にリリースされる開発ツール「Visual Studio 2010」(VS2010)でサポートされる。今後VS2010で開発したソフトが出てくれば、64bit版Windows 7では、より効率いいスレッド管理が行なえるようになる。こうなると、マルチコアCPUでの64bit版Windows 7のパフォーマンスは、さらに向上していくだろう。
Windows Server 2008 R2が64bit版しかリリースされなかったように、次世代のWindows 8もまた、64bit版しかリリースされないことも考えられる。将来、「Windows 7は64bitアプリケーション時代への幕開けとなった」と記憶されるかもしれない。
この連載の記事
- 第27回 次期Windows Live「Wave4」はこうなる
- 第26回 メモリー使用量と性能を改善する7のカーネル改良
- 第25回 DirectXで進化したInternet Explorer 9を試してみた
- 第24回 MinWinとVirtual DLLで変わるWindowsカーネル
- 第23回 なぜWindows 7のカーネルはVistaより軽量化できたのか?
- 第22回 周辺機器を使いやすくするDevice Stageの利点と問題点
- 第21回 Windowsの画面表示を変えるDirect2DとDirectWrite
- 第20回 GPGPUをWindowsでサポートする「DirectCompute」
- 第19回 SSDサポートにさらなる一歩を踏み出したWindows 7
- 第17回 パブリックベータが開始された「Office 2010」
- この連載の一覧へ

















