プログラミングメモ - プロセス空間は2GBの話

2008/12/05

こちらの話から。

プロセス空間が2Gを超えると落ちるって問題があって、おそらくはポインタの型が32bitであることに起因するんだろうけど、このことについて理解している人が結構少ない。しかも、結構プログラム書いている人であっても。

最初に触ったOSが32bitOSで、32bitOSの支配が10年以上も続いてきたから、NEARポインタとFARポインタの違いとかわからないんだろうな。。。といってもオイラも最初にプログラムしたのはWindows98だけど。

2^32 = 4,294,967,296 だから,32 bit のポインタは4GBまでアドレッシングできるんだけどなぁ……。

おそらく,Windows/Pocket PC の話だと思うので,それを前提にすると,プロセス空間が2GBに制限されるってのは,ポインタの幅の話ではなくて OS の制限だったりします。4GBのうち2GBはユーザ領域で,残りの2GBはカーネル空間。いくらポインタが2GBより大きな場所を指せるといっても,庶民であるユーザアプリがカーネル様のプロセス空間をいぢることはできません。

で,このユーザプロセス空間は,ある程度いぢれる。

3 GB のユーザー モード プロセス空間のサポートを有効にするには、/3gb パラメータを boot.ini ファイルに追加してコンピュータを再起動する必要があります。これにより、/3gb パラメータが有効になります。このパラメータを設定すると、ユーザー アプリケーションのスレッドから 3 GB のプロセス アドレス空間に対処できるようになります。残りの 1 GB のプロセス アドレス空間はオペレーティング システム用に予約されます。

あまりやらん方がいいらしいけれど。それだけ。

Site Navigation
SNS Accounts (@aian)

普段はここら辺に住んでいます.