1

CPU キャッシュについて読み始めましたが、2 つの質問があります。

1) CPU がページ フォールトを受け取り、制御をカーネル ハンドラに移したとします。ハンドラーは、ダーティとマークされたメモリ内のフレームを追い出すことを決定します。CPU キャッシュが有効で変更されたビットで書き戻されるとしましょう。現在、このフレームのメモリ コンテンツは古く、キャッシュには最新のデータが含まれています。カーネルはどのようにしてキャッシュを強制的にフラッシュしますか?

2) ページ テーブル エントリ (PTE) がダーティとしてマークされる方法は次のとおりです。TLB には、CPU がページの内容を変更するときに設定される変更ビットがあります。このビットは、コンテキスト スイッチで PTE にコピーされます。ページ フォールトが発生した場合、PTE はダーティではない可能性がありますが、TLB エントリには変更されたビットが設定されている可能性があります (まだコピーされていません)。この状況はどのように解決されますか?

4

1 に答える 1

1

キャッシュのフラッシュに関しては、それは単なる特権命令です。OSが命令を呼び出し、ハードウェアがフラッシュを開始します。すべての値を無効にし、ライトバックせずに即時フラッシュを通知するための1つの命令と、フラッシュする前にデータを書き戻すようにハードウェアに指示する別の命令があります。命令呼び出しの後、ハードウェア(キャッシュコントローラーとI / O)が引き継ぎます。TLBをフラッシュするようにハードウェアに指示する特権命令もあります。

オペレーティングシステムのコースを受講してからしばらく経ちましたので、2番目の質問についてはよくわかりませんが、ページフォールトが発生した場合、最初にページがページテーブルに表示されることを理解しています。削除されるページは、使用可能なスペースと使用されるページ置換アルゴリズムによって異なります。そのページを取り込む前に、置き換えるページに変更されたビットが設定されている場合は、IOがキューに入れられるように、最初にそのページを書き出す必要があります。変更されていない場合、ページはすぐに置き換えられます。TLBについても同じプロセスです。変更されたビットが設定されている場合、そのページを置き換える前に、IOがキューに入れられるようにページを書き戻す必要があり、待機する必要があります。

于 2012-11-25T09:38:10.843 に答える