OrangeGardenRoom

技術系のメモ

Windows:32bitアプリケーションを、64bitOSで動かす場合のメモリ

ちょっとIllustratorでそういう話があって調べてみた。

原因はメモリじゃないかもしれないけど……。

下記いろんな情報まとめたけど、理解ついでに書いてるので間違えてる可能性があります。

 

 

まず結論は、1プロセス毎に4GBの仮想アドレス空間を割り当てられる

つまり、1プロセス毎に最大4GBのメモリ利用可能、のよう。

64bitOSにしっかりメモリが乗ってれば、ページアウトすることなく、

1つのアプリケーション(たとえばIllustrator)が4GB丸々使えるようだ。

 

 

32bitOSだと、システム全体で4GBの仮想アドレス空間にしか無く、

デバイスなどのシステム予約領域や、VRAMとして割り当てで割かれるため、

おおよそ1GB前後4GBから減って3GB前後しかアプリケーションで使えない。

 

————————————————————————————————-

 

ついでに64bitOS上で32bitアプリケーションを動かす機構

 

Wikipedia – WOW64

http://ja.wikipedia.org/wiki/WOW64

 

WindowsVista以降、64bitのOSで32bitアプリケーションを動かす場合、

WOW64(Windows32 on Windows64)というのを使ってエミュレーションしている。

簡単に言えば、32bitアプリケーションを、あたかも64bitアプリケーションみたいに動かす。

 

32bitの命令コード(CPUに出す指示)を64bitの命令コードに変換する作業も行われるが、

これら2つの命令コードには互換性がある為、変換は最小限に済む。

32bitOS上と64bitOS上で32bitアプリケーションの動作はほぼ同じ速度で動作する。

むしろ、64bitOSではハードウェアの動作性能が上がる為、32bitOS上で32bitアプリ

ケーションを利用するよりも、速度が速い可能性がある。

 

————————————————————————————————-

 

このWOW64が、アプリケーションごとに4GBの仮想アドレス空間を割り当てる。

そして、OSが、このWOW64で作った仮想アドレス空間複数と、64bitアプリケーション

が作るすごいでかい仮想アドレス空間複数を、物理アドレス空間(実メモリ)へ割り当てる。

 

なので、WOW64がエミュレーションを行っているが、32bitアプリケーション全てを

まとめて4GBのアドレス空間内で処理しているわけではなく、1つ1つのアプリケーション

に対して4GBのアドレス空間を与えてくれる為、メモリ16GB合っても、32bitアプリケーション

で4GBで、残り12GBが64bitアプリとシステム領域、ということにはならない。

 

なんか色々あれこれ散らばってるけどこんな感じで。

 

x64で本格化する64ビットWindowsの時代(2)

http://itpro.nikkeibp.co.jp/article/COLUMN/20051118/224885/

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です