Linux Kernel(2.6)の実装に関するメモ書き

アドレス空間の管理


プロセスの持つアドレス空間は図1のように管理される。

管理の大元としてmm_struct構造体があり、プロセスのtask_structのmm,active_mmからポイントされている(mm,active_mmの詳細はプロセス参照)。mm_structではプロセスのコードエリアやデータエリアの開始アドレス(code_start,data_start,...)などの情報を持つ。また、そのプロセスが使用するPageDirectoryへのポインタpgdも持つ。コンテキストスイッチが発生した場合は、この値がCR3レジスタのロードされて、物理ページのマップが切り替わる。

プロセスが持つアドレス空間はvm_area_struct構造体で管理される。1つのvm_area_structは連続したアドレス空間を表している。mm_structのmmapリストにつながれて、プロセスの持つ全アドレス空間を管理している。



図1アドレス空間の管理


各プロセスのアドレス空間は/proc/<PID>/mapsで確認できる。各プロセスのvm_area_structのリストが表示される。

実装箇所:task_mmu.c::show_map()


最終更新 2006/07/03 19:06:13 - kztomita
(2006/07/03 18:32:54 作成)
添付ファイル
address_space.png - kztomita


リンク
最近更新したページ
検索