空間モデル

プロセスは各々独立した空間を持っているが、その独立した空間一つは、メモリ管理構造体mm_struct一つによって管理されている。

つまり、一つのプロセスは、一つのメモリ管理構造体mm_structを所有している.*1

仮想空間管理構造体vm_area_structは一続きの連続した仮想空間を管理する構造体である. プロセス空間のうち, 有効な空間は非連続な複数領域であり、それぞれの領域に対して仮想空間管理構造体vm_area_structが割り当てられる。メモリ管理構造体mm_structのmmapメンバには複数の仮想空間管理構造体vm_area_structがリンクされることになる. このvm_area_structの総計がこのプロセスが利用できる有効な空間である.*2

また、メモリ管理mm_struct構造体は, PGD, PTE 領域を管理している. PGDとPTEは, 上記プロセスの仮想空間アドレスを物理メモリアドレスに変換するテーブルである. 実際の変換処理はCPUが自動的に行う. (Intel CPUの場合)

Linuxでは仮想的にPTEに物理メモリメモリ以外のものを割り当てることもできる. これらのページへのアクセスがあるとき発生するCPU例外を利用して, 動的に仮想的に割り当てたオブジェクトから、物理メモリへのデータの読み込みを行っている。

img60.gif

(NIS)HirokazuTakahashi
2000年06月11日 (日) 22時29分57秒 JST
1


  1. *1スレッドの場合は複数のスレッドで一つのmm_structを共有する
  2. *2/proc/pid/mapsにより、この仮想空間割付け情報を参照することができる