Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、Linuxカーネル2.6解読室の第2章までを公開中。
プロセスは各々独立した空間を持っているが、その独立した空間一つは、メモリ管理構造体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例外を利用して, 動的に仮想的に割り当てたオブジェクトから、物理メモリへのデータの読み込みを行っている。
(NIS)HirokazuTakahashi
2000年12月09日 (土) 23時55分06秒 JST1
[PageInfo]
LastUpdate: 2008-08-27 14:18:08, ModifiedBy: hiromichi-m
[Permissions]
view:all, edit:login users, delete/config:members