このページの本文へ

前へ 1 2 3 次へ

あなたの知らないWindows 第18回

32bitアプリを64bit Windows 7で動かす「WOW64」

2009年12月03日 12時00分更新

文● 山本雅史

  • この記事をはてなブックマークに追加
  • 本文印刷

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アプリケーションは、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アプリケーション時代への幕開けとなった」と記憶されるかもしれない。

前へ 1 2 3 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン