Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

SysWOW64(シスワウシックスティフォー)とは | 意味や読み方など丁寧でわかりやすい用語解説

SysWOW64(シスワウシックスティフォー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

シスワウロクジュウヨン (シックスティーフォー)

英語表記

SysWOW64 (シスワウロクジュウヨン)

用語解説

SysWOW64(シスワイオーダブルシックスティーフォー)とは、64ビット版のWindowsオペレーティングシステム上で、32ビット版のWindowsアプリケーションを動作させるための互換性レイヤーの総称である。その名称は「System」と「Windows-on-Windows 64」を組み合わせたものであり、「WOW64」という技術がその中心にある。システムエンジニアを目指す上で、現代のWindows環境で32ビットアプリケーションがどのように動作しているかを理解することは非常に重要である。

かつて、パーソナルコンピュータのOSは主に32ビットアーキテクチャで構築されていた。しかし、より多くのメモリを扱えるようにしたり、CPUの処理能力を向上させたりするために、OSは32ビットから64ビットへと進化していった。ここで問題となるのが、古い32ビットアプリケーションとの互換性である。64ビット版OSは、32ビット版のアプリケーションが前提とするメモリ構造やシステムコール(OSの機能を利用するための呼び出し)とは異なるため、そのままでは32ビットアプリケーションを動作させることができない。たとえば、32ビットアプリケーションは最大4GBの仮想メモリしかアドレスできないが、64ビットアプリケーションはそれ以上のメモリ空間を利用できる。また、データ型やポインタのサイズも異なる。このような根本的な違いを吸収し、32ビットアプリケーションが問題なく動作するようにするための架け橋こそが、SysWOW64が提供するWOW64サブシステムなのである。これにより、ユーザーは過去に開発された膨大な数の32ビットアプリケーション資産を、最新の64ビット版Windows環境でも活用し続けることが可能となっている。

WOW64サブシステムは、64ビット版Windowsのカーネル上で動作するエミュレーション層として機能する。このサブシステムは、32ビットアプリケーションがOSに対して発行する様々な要求を捕捉し、それを64ビット版OSが理解できる形式に変換して渡す。具体的な機能としては、以下の点が挙げられる。

第一に、システムコールの変換である。32ビットアプリケーションがOSの機能(ファイルを開く、メモリを確保する、プロセスを起動するなど)を呼び出す際、32ビットの形式でシステムコールを発行する。WOW64サブシステムは、この32ビットシステムコールをインターセプトし、対応する64ビットシステムコールに変換してから、64ビット版Windowsカーネルに渡す。カーネルは変換された64ビットシステムコールを処理し、その結果を再びWOW64サブシステムが32ビットアプリケーションが理解できる形式に戻して返す。これにより、32ビットアプリケーションは自身が32ビットOS上で動作しているかのように振る舞うことができる。

第二に、メモリ管理である。WOW64は、32ビットアプリケーション向けに、伝統的な最大4GBの仮想アドレス空間を提供する。これにより、32ビットアプリケーションは64ビットOSの広大なメモリ空間の一部を利用しつつ、自身のメモリモデルの範囲内で動作することができる。

第三に、レジストリのリダイレクトである。Windowsのレジストリは、システムやアプリケーションの設定情報が保存される重要なデータベースである。64ビット版Windowsでは、64ビットアプリケーションと32ビットアプリケーションの設定が混在しないように、特定のレジストリキーへのアクセスを分離している。具体的には、32ビットアプリケーションが「HKEY_LOCAL_MACHINE\Software」のような一般的なパスにアクセスしようとすると、WOW64はそれを「HKEY_LOCAL_MACHINE\Software\WOW6432Node」という32ビットアプリケーション専用のパスに自動的にリダイレクトする。これにより、32ビットアプリケーションは64ビットアプリケーションの設定を誤って上書きしたり、その逆の事態が起きたりすることを防いでいる。

第四に、ファイルシステムのリダイレクトである。Windowsのシステムフォルダ、特に「C:\Windows\System32」は、OSのコアとなるシステムファイルやDLL(ダイナミックリンクライブラリ)が格納される場所として広く知られている。しかし、64ビット版Windowsにおいて「C:\Windows\System32」フォルダに格納されているのは、実は64ビット版のシステムファイルやDLLである。ここで混乱しやすいのが、32ビットアプリケーションが「C:\Windows\System32」にアクセスしようとした場合、WOW64はこれを「C:\Windows\SysWOW64」フォルダにリダイレクトする点である。この「C:\Windows\SysWOW64」フォルダには、32ビット版のシステムファイルやDLLが格納されている。つまり、名前の見た目とは異なり、System32は64ビット版ファイル、SysWOW64は32ビット版ファイルをそれぞれ担当しているのである。これは、多くの32ビットアプリケーションがハードコードされたパスとして「System32」を期待するため、その互換性を保つためにこのような仕組みが採用されている。

これらのリダイレクト機能は、32ビットアプリケーションが64ビット環境に移植されていない場合でも、問題なく動作することを可能にする。しかし、プログラマーにとっては、自身のアプリケーションが32ビットと64ビットの両方に対応する必要がある場合、どちらのレジストリパスやファイルパスにアクセスすべきかを意識する必要がある。

WOW64サブシステムがもたらす最大の利点は、もちろん互換性である。これにより、企業や個人が長年使い続けてきた業務アプリケーションやゲームが、最新のOS環境でも動作し続けることが保証される。しかし、エミュレーション層を介するため、ネイティブの64ビットアプリケーションに比べるとわずかな性能オーバーヘッドが存在する。これは通常、一般的なアプリケーションでは体感できないレベルであるが、非常に高いパフォーマンスを要求される特定のアプリケーションでは、64ビットネイティブ版にすることでその真価を発揮できる可能性がある。

ただし、WOW64サブシステムにもいくつかの制約がある。例えば、カーネルモードで動作するドライバー(プリンタードライバーや一部のデバイスドライバーなど)は、WOW64の対象外であり、必ずOSのアーキテクチャ(64ビット版Windowsであれば64ビット版ドライバー)に合わせたものをインストールする必要がある。また、16ビットアプリケーションはWOW64では直接サポートされず、NTVDM(NT Virtual DOS Machine)といった別のサブシステムが必要となるか、そもそも動作しない場合が多い。

SysWOW64は、過去のソフトウェア資産を保護しつつ、OSの進化を円滑に進めるための重要な技術である。システムエンジニアを目指すのであれば、この仕組みがどのように動作し、どのような役割を担っているかを理解することで、OSの深い部分での互換性問題を診断したり、アプリケーションの挙動を正しく理解したりする上で役立つだろう。

関連コンテンツ