OSとハードウェア

キャッシュの一貫性をハードウェアが保たない(非コヒーレントな)システムで、装置がDMAで主記憶に書き込んだデータをCPUが読む前に、ソフトウェアが行う必要のある処理はどれか。

  1. ACPUのクロック周波数を一時的に下げる
  2. B該当する範囲のキャッシュの内容を無効にして、主記憶から読み直すようにする
  3. Cキャッシュの内容をすべて主記憶に書き戻してから、DMAで届いた結果を破棄する
答えと解説を見る

正解:B. 該当する範囲のキャッシュの内容を無効にして、主記憶から読み直すようにする

DMAはCPUを通さずに装置と主記憶の間でデータを転送するため、ハードウェアが一貫性を保たないシステムでは、CPUのキャッシュにはその範囲の古いデータが残っていることがあります。そのまま読むと、DMAで届いた新しいデータではなく古い値を読んでしまいます。そこでドライバは、読む前にその範囲のキャッシュを無効にして、主記憶から新しい値を読ませます。逆に装置に送るデータは、DMAを始める前にキャッシュから書き戻しておきます。

  • A. クロック周波数は一貫性と関係ありません。
  • B. 正しい。古いキャッシュの内容を無効にして、新しいデータを読ませます。
  • C. DMAの結果を破棄してしまっては意味がありません。
この分野を解く 分野ページへ

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

  1. IOMMUの主な役割として正しいものはどれか。
  2. デバイスドライバの役割として正しいものはどれか。
  3. 一般的なOSで、アプリケーションが装置のレジスタを直接読み書きできないようにしている主な理由はどれか。
  4. 1台のコンピュータの上で、複数のOSをそれぞれ独立した仮想マシンとして同時に動かすためのソフトウェアを何と呼ぶか。
  5. ハイパーバイザの型の説明として正しいものはどれか。