OSとハードウェア

TLBの各項目にASID(アドレス空間識別子)を付ける利点として正しいものはどれか。

  1. A切り替え時にTLBを全部消さずに、変換を区別できる
  2. B1つのプロセスが使える仮想アドレスの範囲を2倍にできる
  3. Cページテーブルが不要になり、すべての変換をTLBだけで行える
答えと解説を見る

正解:A. 切り替え時にTLBを全部消さずに、変換を区別できる

ASIDがないと、プロセスごとに同じ仮想アドレスが別の物理アドレスを指すため、プロセスを切り替えるたびにTLBを空にしなければならず、切り替え後にTLBミスが続きます。各項目にASIDを付ければ、どのプロセスの変換かを区別できるので、TLBを消さずに残しておけ、元のプロセスに戻ったときにも再利用できます。仮想アドレスの範囲は変わらず、TLBに入りきらない変換のためにページテーブルは引き続き必要です。

  • A. 正しい。プロセスごとの変換を区別でき、切り替え時にTLBを消さずに済みます。
  • B. 仮想アドレスの範囲は変わりません。
  • C. TLBは一部の変換しか持てず、ページテーブルは必要です。
この分野を解く 分野ページへ

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

  1. OSが、自分からCPUを手放さないプログラムからでも一定時間ごとにCPUを取り戻して、ほかのプロセスに切り替えられるのは、主にどのしくみによるか。
  2. 上のように装置の状態レジスタをメモリマップドI/Oで読むとき、volatileを付け、その領域をキャッシュしない設定にする理由として正しいものはどれか。
  3. 装置の状態を、割り込みを使わずにCPUが繰り返し調べる方式(ポーリング)が有利になる場合はどれか。
  4. キャッシュの一貫性をハードウェアが保たない(非コヒーレントな)システムで、装置がDMAで主記憶に書き込んだデータをCPUが読む前に、ソフトウェアが行う必要のある処理はどれか。
  5. IOMMUの主な役割として正しいものはどれか。