Swap関連データ構造
Rev.2を表示中。最新版はこちら。
1. 概要
Swap領域に関するデータ構造のまとめ。
2. データ構造
2.1 Swap領域の一覧
システム内の全Swap領域(*1)を管理しているデータ構造を図1に示す。
システム内の全Swap領域の情報はswap_info[]配列に格納されている。この配列は各Swap領域を管理するstruct swap_info_structを格納しており(ポインタではなくそのものを格納)、有効なエントリのswap_info_structにはSWAP_USEDフラグがセットされている。この配列の大きさはMAX_SWAP_FILES(32)で固定となっているため、システムで使用できる最大のSwap領域は32個までとなる。swaponにより、Swap領域が追加されるとswap_info配列から空きエントリが探され、新しいエントリが構築される。
また、配列とは別にswap_listというリストがある。swap_listは有効なswap_info_structを優先度順に繋げたリスト。このリストを順番にたどることで優先度の高いものから順番にSwap領域を取得することができる。
優先度はSwapを行うときに、どのSwap領域を使用するかを決めるのに使用する。ルールは以下のとおり。
- 優先度が最も高いものを選ぶ
- 同じ優先度のものがある場合は、ラウンドロビンで選択
- 空き領域がなくなるまで、低優先度のものが選択されることはない

図1 全Swap領域の管理
(*1) cat /proc/swaps で出力される各エントリ
2.2 各Swap領域

2.3 ディスクブロックへのマッピング

