キャッシュされていないページのページテーブルアドレスフィールド

キャッシュされていないページのページテーブルアドレスフィールド

LinuxシリーズシステムのBryantとO'Hallaronの(やや抽象的な)ページテーブルモデルによると、各ページテーブルエントリ(PTE)には3つの値のうちの1つを保持するアドレスフィールドがあります。 (1)物理アドレス(実際にはページ番号)は、(2)ページを見つけることができる長期ストレージデバイスの対応する場所識別子、または(3)未割り当てページを示す0です。ページが長期ストレージからメインメモリに置き換えられたとします。このアカウントでは、カーネルは長期保存アドレス(2)を物理アドレス(1)に置き換えます。書いた場合、元の長期保存アドレスをPTEに復元する方法は何ですか?

ベストアンサー1

PTE代表仮想ページ。言ったように、仮想ページがメインメモリに存在するとき、PTEのアドレスフィールドは物理ページフレーム番号(PFN)を保持します。

物理そのページはstruct page次のとおりです。

flagsは:

struct address_space *mapping;

ページキャッシュ内のページ(ほとんどのシステムではほとんどのページ)の場合、mappingページをバックアップするファイルにアクセスするために必要な情報を指します。ただし、ページが匿名ページ(スワップでサポートされているユーザー空間メモリ)の場合は、構造をmapping指しますanon_vma[...]

-構造化ページにさらにコンテンツを挿入する,LWN.net

その後、このpage→indexフィールドはswp_entry_t匿名ページの構造を保存するために使用されます。 (ページキャッシュ内のページの場合はファイルオフセットを保存します。)

swp_entry_tスワップデバイスのインデックスとスワップデバイス内の場所を保存します。

2004年にこれがどのように機能するかについての具体的な詳細は次のとおりです。Linux仮想メモリマネージャについて - スワップ管理、Mel Gormanによって書かれました。

おすすめ記事