OSとハードウェア
複数のコアをもつシステムで、OSがあるページのページテーブルの項目を書き換えて対応を取り消したとき、必要になる処理として正しいものはどれか。
- A自分のコアのTLBだけを消せば、ほかのコアは自動的に正しい変換を使う
- BほかのコアのTLBからも、古い変換を確実に消す処理を行う
- C何もしなくても、ページテーブルの書き換えと同時にすべてのTLBが更新される
答えと解説を見る
正解:B. ほかのコアのTLBからも、古い変換を確実に消す処理を行う
多くのCPUでは、TLBはキャッシュと違ってハードウェアで一貫性が保たれず、ほかのコアのTLBにはページテーブルを書き換える前の古い変換が残っている可能性があります。そのままだと、取り消したはずのページにほかのコアがアクセスできてしまいます。そこでOSは、ほかのコアにプロセッサ間割り込みを送るか、無効化を全コアに伝える命令を使って古い項目を消させ、完了を待ちます。これをTLBシュートダウンといい、コア数が多いほど時間がかかります。
- A. ほかのコアのTLBには古い変換が残っている可能性があります。
- B. 正しい。ほかのコアのTLBからも古い変換を消す必要があります。
- C. 多くのCPUではTLBの一貫性は自動では保たれません。