今日の勉強会の打ち上げで話題に挙がったこと。
ちゃんと理解していない人が結構いるみたいなので久々に「インサイド Microsoft Windows 第4版 上」を紐解いて書いてみる。
Windows 32bit の memory 空間 (正確には virtual address space: 仮想メモリアドレス空間) の配置は下記のようになっています。
Usage |
Start address |
End Address |
Size |
User process space |
0x00000000 |
0x7FFFFFFF |
2GB |
System space |
0x80000000 |
0xFFFFFFFF |
2GB |
<参考> Virtual Address Space
User process space とは、通常の application で利用される空間です。
それに対し、system space とは Windows kernel で利用される空間です。
本日話題に挙がっていたことですけど、Windows 32bit OS の 1 process あたりで扱える memory 空間の制限 2GB はここからくるわけです。
注意してほしいのは、これは 1 process あたりの制限であると同時に application 全体で扱える memory の制限であることです。
複数の user process が立ち上がっている(とゆうか、上がっていないことなんてありえないんですが。。。)場合には、その user process 全体で制限を受けます。
<参考> Memory Limits for Windows Releases
続く(本当に?)