プロセス空間で使用している実 ページ 回収の対象 基本戦略 ページキャッシュで使用している 実ページ 最近使っていない実ページを回収する (1)activeリストの後ろから一定数取得 ゾーンごとに管理 プロセス空間としてアクセスされていたらactiveに戻 すリストに格納 (2)activeリスト, inactiveリストへの振り分け activeリスト:最近アクセスされた 実ページ activeキューからinactiveキューへ の移動 ページキャッシュ、もしくはアクセスされていないな らinactiveにするリストに格納 inactiveリスト:最近アクセスされ ていない実ページ (3)2で振り分けたリストをactive, inactiveリストの 先頭につなぐ activeリスト、inactiveリストでの 管理 (1)ページに対するアクセスの判定 (2)無名ページの場合、スワップ領域の割り当てを行 う 無名ページの場合、ページテーブルエントリのスワッ プエントリを設定 (3)ページテーブルエントリから実ページの参照をや める 最近アクセスされていないものは activeリストからinactiveリストに 移していく 回収処理の実装 実ページの回収はinactiveリストか ら inactiveキューからページを選択 し、解放 Linux本14章 - ページの回収処 ページキャッシュの場合、ページテーブルエントリを クリア メモリ上で変更されたページをディスク上に書き戻す デマンドページングで割り当てら れたときはまずactiveリストにつ ながれる 理 PG_referencedフラグを利用 (4)ダーティページの書き戻し ページキャッシュ、プロセス空間 非マップ 回収対象ページの管理構造 (5)バディシステムへページを返却 ページキャッシュにアクセスがあ るとフラグを立てる inactiveリストにつながっていて、 フラグが立っているときにアクセ スした場合、activeリストに移す 少しずつプライオリティ(検索する数に関係する)を上 げながら実行 ページへのアクセスはカーネルが 感知できない 残りページが少なくなったときに バディシステムから起こされる kswapdデーモン ページ数がしきい値を下回ったと きに実行 回収処理の実体と実行の契機 最近アクセスされたかどうかの判 断。3種類に分類しそれぞれでやり 方が異なる。 プロセス空間マップ、非ページ キャッシュ ページテーブルエントリを参照し て判断 回収処理の時点でのみアクセスの 判断、activeリストinactiveリスト の移動を行う 本当に残りページが少なくなった ときに呼び出される try_to_free_page関数 上の二つのケース両方調べる しきい値の判定はしない ページキャッシュ、プロセス空間 マップ PG_referencedフラグ ページテーブルエントリ参照 それぞれはpage構造体で状態を管 理
© Copyright 2024 ExpyDoc