2012-03-07 16 views
1

オペレーティングシステムに関する質問:プロセスのページ参照文字列を記録する方法は?

ページングされたメモリシステムで実行されているプロセスがあり、アクセスするページを特定の順序で追跡したいとします。どうすればこのことができますか?

私はTLBにロードする必要があるたびに文字列にページを書き込むことができると考えていましたが、OSは各ページへの参照(および参照数)の順序を追跡できませんTLBでは、何とかすべてのメモリアクセスがすべてTLBをチェックすることができない限り。全体的に私は少し紛らわしい問題を見つけています...

各ページテーブルエントリは64ビット、仮想ページは20ビット、対応する物理フレームは20ビットとします。いくつかのビットはステータス/特権ですが、いくつかの "フリー"ビットがあります。

ありがとうございました。

EDIT - 例:オペレーティングシステムのページサイズが1000で、プロセスが1234,5660,1220,7442、...のようないくつかのアドレスにアクセスする場合、ページ参照文字列は1,5,1のようになります、7、...

答えて

1

プロセスのすべてのページをアクセス不可能とマークする方法と、ページフォルトが発生したときに、そのページにアクセス可能なページをマークし、「文字列」にページ番号を記録しますプロセスが1つの命令を実行し、最初からすべてを繰り返すようにします(アクセス不可能なものとしてマークするなど)。

これを実行しているコードがカーネル内で実行されていない場合は、必ずしも上記を行うことができない場合があります。これは、ハードウェアとOSに大きく依存します。あなたはWindows上でそれに近づくかもしれませんが、this questionと私の答えを参照してください。

関連する問題