OSとハードウェア

複数のコアをもつシステムで、OSがあるページのページテーブルの項目を書き換えて対応を取り消したとき、必要になる処理として正しいものはどれか。

  1. A自分のコアのTLBだけを消せば、ほかのコアは自動的に正しい変換を使う
  2. BほかのコアのTLBからも、古い変換を確実に消す処理を行う
  3. C何もしなくても、ページテーブルの書き換えと同時にすべてのTLBが更新される
答えと解説を見る

正解:B. ほかのコアのTLBからも、古い変換を確実に消す処理を行う

多くのCPUでは、TLBはキャッシュと違ってハードウェアで一貫性が保たれず、ほかのコアのTLBにはページテーブルを書き換える前の古い変換が残っている可能性があります。そのままだと、取り消したはずのページにほかのコアがアクセスできてしまいます。そこでOSは、ほかのコアにプロセッサ間割り込みを送るか、無効化を全コアに伝える命令を使って古い項目を消させ、完了を待ちます。これをTLBシュートダウンといい、コア数が多いほど時間がかかります。

  • A. ほかのコアのTLBには古い変換が残っている可能性があります。
  • B. 正しい。ほかのコアのTLBからも古い変換を消す必要があります。
  • C. 多くのCPUではTLBの一貫性は自動では保たれません。
この分野を解く 分野ページへ

OSとハードウェアのほかの問題

  1. プログラムが、OSが割り当てていないアドレスにアクセスしたときに一般的に起こることはどれか。
  2. ファイルをメモリに対応づける(mmapのような)しくみで、ファイルの内容を読むときに起こることの説明として正しいものはどれか。
  3. 小さなデータを1バイトずつ書き出すときに、毎回システムコールを呼ぶより、ユーザ空間のバッファにためてからまとめて書き出す方が速くなる主な理由はどれか。
  4. CPUに特権モード(カーネルモード)とユーザモードを設ける主な目的はどれか。
  5. アプリケーションがファイルの読み書きなどをOSに依頼するしくみを何と呼ぶか。