64bit OS上で32bitアプリが動作する仕組みを解説!

現在、多くの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アプリがファイルを開く場合

  1. 32bitアプリはC:\Windows\System32 を参照しようとする
  2. WoW64が自動的に*C:\Windows\SysWOW64 にリダイレクト
  3. 32bitライブラリを使用して正しく動作

(2) IA-32 EL(Linuxの場合)

Linuxでは、IA-32 EL(IA-32 Execution Layer)やマルチライブラリを使用します。

🔹 Linuxで32bitアプリを動作させる方法
CPUの互換モードを利用(Intel/AMDx86-64アーキテクチャ
32bit用のライブラリをインストール(lib32 など)
カーネルシステムコールを適切に変換する

💡 例:Ubuntuで32bitアプリを動かす場合

  1. 32bitライブラリをインストール
    sudo apt install lib32z1
  2. 実行時に必要な32bitバージョンの共有ライブラリをロードする

(3) Rosetta 2(macOSの場合)

macOSでは、Intel版の32bitアプリがM1/M2などのARM Macで動作しない問題がありました。

しかし、AppleRosetta 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アプリの互換性問題を理解し、適切な対応をすることが大切です!