3

一定期間にわたってページ フォールトを追跡することにより、おもちゃのワーキング セット推定器を作成しようとしています。ページに障害が発生するたびに、それが触れられたことを記録したいと思います。既に存在するページへのアクセスを追跡しようとすると、スキームが壊れます。ページがフォールトをトリガーせずに読み書きされた場合、アクセスを追跡する方法がありません。

そこで、ページアクセスで「軽量」フォルトを発生させられるようにしたい。ある方法について聞いたことがありますが、なぜそれが機能するのか理解できなかったので、頭に残りませんでした。もしかして汚い?

4

2 に答える 2

3

(「ページにアクセスできません」)でmprotect使用できます。PROT_NONE次に、指定されたページへのアクセスはすべて障害を引き起こします。

于 2011-08-10T04:31:15.387 に答える
2

これを行う通常の方法は、ページの「現在の」ビットをクリアし、ページをメモリに残し、カーネルがこれを認識できるように必要なカーネルデータ構造を配置することです。

ただし、問題のアーキテクチャによっては、より適切なオプションがある場合があります。たとえば、x86には、線形アドレス変換でPTEが使用されるたびに設定される「アクセス済み」フラグ(PTEのビット5)があります。このビットはいつでもクリアでき、ハードウェアはページがタッチされたことを記録するように設定します。

これらの方法のいずれかを使用すると、TLBからそのページのキャッシュされた変換をクリアする必要があります。x86では、このINVLPG命令を使用できます。

于 2011-08-10T14:32:23.067 に答える