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

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 ディスクブロックへのマッピング







最終更新 2007/03/19 13:13:26 - kztomita
(2007/03/19 12:54:21 作成)
添付ファイル
swap_info.png - kztomita
swap_info2.png - kztomita
swap_partition.png - kztomita
swap_file.png - kztomita
swp_entry.png - kztomita


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