現在、多くのPCは64bit OS(Windows 11, macOS, Linuxなど)を搭載しています。しかし、驚くことに32bitアプリもそのまま動作することが多いです。
では、なぜ64bit OS上で32bitアプリが動くのでしょうか?
本記事では、その仕組みを詳しく解説します。
1. 32bitアプリはそのままでは動かない?
64bit OSと32bitアプリは、アーキテクチャが異なるため、基本的にはそのままでは動作しません。
具体的には、以下のような問題が発生します。
① 64bit CPUはデフォルトで64bit命令を実行
32bitアプリは32bit命令を使用しているため、そのままでは実行できません。
② 64bit OSは64bitのメモリアドレスを使用
32bitアプリは最大4GB(2^32)のメモリ空間しか扱えませんが、64bit OSは16EB(エクサバイト, 2^64)のメモリ空間を使用します。
→ 32bitアプリが使えるメモリ空間を適切に管理する必要がある。
③ 64bitカーネルと32bitアプリの違い
OSのコア部分(カーネル)は64bitで動作しているため、32bitアプリのシステムコール(OSへの命令)がそのままでは実行できません。
2. 64bit OS上で32bitアプリを動作させる仕組み
上記の問題を解決するために、各OSでは以下のような仕組みを用意しています。
(1) WoW64(Windowsの場合)
Windowsでは、WoW64(Windows on Windows 64) という仕組みを使って32bitアプリを動作させます。
🔹 WoW64の主な役割
✅ CPUの動作モードを切り替えて32bit命令を実行できるようにする
✅ 32bitアプリ専用のレジストリやファイルを管理する
✅ 32bitアプリのシステムコールを64bitカーネルに変換する
WoW64は、Windowsのシステムフォルダ内に専用のライブラリを持っています。
- 64bitのライブラリは
C:\Windows\System32
に - 32bit用のライブラリは
C:\Windows\SysWOW64
に格納されています
「SysWOW64」というフォルダ名が紛らわしいですが、これは32bitアプリ用のフォルダです。
💡 例:32bitアプリがファイルを開く場合
- 32bitアプリは
C:\Windows\System32
を参照しようとする - WoW64が自動的に*
C:\Windows\SysWOW64
にリダイレクト - 32bitライブラリを使用して正しく動作
(2) IA-32 EL(Linuxの場合)
Linuxでは、IA-32 EL(IA-32 Execution Layer)やマルチライブラリを使用します。
🔹 Linuxで32bitアプリを動作させる方法
✅ CPUの互換モードを利用(Intel/AMDのx86-64アーキテクチャ)
✅ 32bit用のライブラリをインストール(lib32
など)
✅ カーネルがシステムコールを適切に変換する
💡 例:Ubuntuで32bitアプリを動かす場合
- 32bitライブラリをインストール
- 実行時に必要な32bitバージョンの共有ライブラリをロードする
(3) Rosetta 2(macOSの場合)
macOSでは、Intel版の32bitアプリがM1/M2などのARM Macで動作しない問題がありました。
しかし、AppleはRosetta 2 というエミュレーション技術を用意し、IntelアプリをARMアーキテクチャで動かせるようにしています。
3. 64bit OSで32bitアプリを動作させるメリット・デメリット
✅ メリット
✅ 古いアプリを動かせる
✅ 32bit環境の互換性を維持できる
✅ エミュレーションではなく、ネイティブ実行なので高速
❌ デメリット
❌ 完全な互換性があるわけではない(一部の32bitアプリは動作しない)
❌ 32bitドライバは動作しない(WoW64ではドライバはサポートされない)
❌ 64bit OSでも32bitアプリは最大4GBまでしかメモリを使用できない
特にWindows 11 64bit版では、32bitドライバは動作しないため、古いハードウェアを利用する場合は注意が必要です。
4. まとめ
OS | 32bitアプリの動作方法 |
---|---|
Windows | WoW64(32bitシステムコール変換 + ライブラリリダイレクト) |
Linux | IA-32 EL(マルチライブラリ + システムコール変換) |
macOS | Rosetta 2(エミュレーション技術) |
現在ではほとんどのアプリが64bit化していますが、企業の専用ツールや古いゲームなどはまだ32bit版が多く存在します。
今後、32bitのサポートは徐々に縮小されていきますが、WoW64のような技術のおかげでしばらくは動作可能です。
💡 もし古い32bitアプリが動かない場合は?
✅ WoW64が有効になっているか確認(Windowsの「Windowsの機能」から)
✅ 32bit用ライブラリをインストール(Linux)
✅ 仮想マシンやエミュレーションを使う(VirtualBox, VMware, Wine など)
64bit OSを使う上で、32bitアプリの互換性問題を理解し、適切な対応をすることが大切です!