computer.program - プログラミングのお話

FotranとかcobolとかBasicとかCとかC++とかjavaとか…(以下略)

#99: Windowsのメモリ確保
Date: 2002/07/09 12:27:27 Tue Author: 沢渡 みかげ (subop)
Parent Article: #98: Windowsのメモリ確保
Child Article: #100: Windowsのメモリ確保

> 1つしか実行しなくても、1GB くらいしかメモリが確保できないのです。
> だから、1つのプロセスの上限も設定されているのかなと思っています。
> 上限というより、OSの仕様なんでしょうけど。

いやだから,1つのプロセス+カーネルで4GBしか領域が無いのかと...
プロセスを切り替えると,同じ仮想アドレスを別のプロセス用に
使用できるので,別のプロセスは他のプロセスの使用している
アドレス領域を気にせずに使えると‥‥‥

例えば,0x00000000-0x7fffffff がカーネル領域で,
0x80000000-0xffffffff がユーザー領域という構造であれば,
プロセスAは 0x80000000-0xffffffff のアドレス空間しか
使えないので,頑張っても2GBまでになります.

もう1つ別のプロセスを使えば,そのプロセスはプロセスAと
無関係に,0x80000000-0xffffffff のアドレス空間を
使用できるので,また2GB使用できることになります.
(実際の物理メモリ・仮想メモリへの割り当ては
 当然AとBで異なるので,それぞれ自分用のメモリとして使えます)

>> 386以降なら64TBまでのアドレス空間は使えるはずですが...
>> 未対応なのかも.
> スワップをもっと大きく取れば、OSとして使えるアドレス空間はもっと
> 大きくなるかもしれません。ウチのディスクのサイズの関係で、4GB以上には
> できないので。 ^^;

上のアドレス空間をセグメント方式で指定するときに,
何らかのビットを立てるとアドレス空間の上位が何ビットか
ずれて,より大きな範囲を指定できるような感じだったきが...

詳しくは「初めて読む486」とかを買うと良いかも.
アセンブラの本ですが結構良い知識がゲットできます

■ この記事のコメントを書く

■ この書き込みを削除/復活します(投稿者のみ可)
■ この書き込み近辺の一覧表示へ

【最新20記事 [一覧] [ツリー] [一括] 】 【最新の記事は 107 番です.】
【次の20記事 [一覧] [ツリー] [一括]
番から 番までの記事を
プログラミングのお話 に新しい記事を

T-Net ■ メインページ