逆引きページテーブル
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/24 20:24 UTC 版)
「ページテーブル」の記事における「逆引きページテーブル」の解説
逆引きページテーブル(Inverted Page Table, IPT)は、ページテーブルとフレームテーブルをひとつのデータ構造にまとめたものである。中核となるのはメモリのフレームに対応するエントリがフレーム番号順に並んだ固定サイズのテーブルである。4000個のフレームがあれば、逆引きページテーブルも4000エントリで構成される。各エントリには仮想ページ番号(VPN)、物理ページ番号(物理アドレスではない)、後述するコリジョン(衝突)チェインを生成するのに使う他のデータなどが格納される。 物理フレーム番号順に並んでいるため、そのままでは仮想アドレスから物理アドレスへの変換に使うのは不便である。逆引きページテーブルは全プロセスの仮想空間サイズの合計が実装している物理メモリ量に比較して非常に大きいことから、物理フレーム毎に管理する方がメモリ量を節約できるとの目論見で採用された設計である。しかし、そのままでは与えられた仮想アドレスを物理アドレスに変換するのにIPT全体を見なければならず、時間がかかる。そこで仮想アドレス(と必要なら仮想空間識別子かプロセス識別子)をIPTのインデックスにマッピングするハッシュテーブルを使用する。ここでコリジョンチェインが使用される。このテーブルをハッシュアンカーテーブル(Hash Anchor Table)とも呼ぶ。ハッシュ関数は分布の良さよりも高速さを要求される。もちろん、ハッシュテーブルではコリジョン(衝突)が発生する。ハッシュ関数の選び方によっては衝突が頻繁に発生するので、テーブル内の各エントリにはVPNが格納されていて、それが求めていたエントリなのか、衝突なのかが分かるようになっている。 マッピングを探すときに、ハッシュアンカーテーブルが使用される。エントリが見つからなければページフォールトが発生する。エントリが見つかれば(アーキテクチャにもよるが)、それをTLBに置いて、メモリアクセスが再実行される。また、コリジョンチェインを辿っていってエントリが見つからない場合もページフォールトが発生する。 この手法では、仮想アドレスは2つに分けられ、上位ビット部分が仮想ページ番号、下位部分がページ内オフセットである。 逆引きページテーブルを使用するアーキテクチャとしてはPA-RISCやPOWERがある。
※この「逆引きページテーブル」の解説は、「ページテーブル」の解説の一部です。
「逆引きページテーブル」を含む「ページテーブル」の記事については、「ページテーブル」の概要を参照ください。
- 逆引きページテーブルのページへのリンク