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

アドレス空間の管理


Rev.4を表示中。最新版はこちら

プロセスの持つアドレス空間は図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は連続したアドレス空間を表している。



図1アドレス空間の管理


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

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



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


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