OSとハードウェア

一般的なOSで、アプリケーションが装置のレジスタを直接読み書きできないようにしている主な理由はどれか。

  1. Aアプリケーションのプログラムでは、レジスタを読み書きする命令が書けないから
  2. B複数のプログラムが勝手に装置を操作すると、装置の状態が壊れたり保護が破られたりするから
  3. C装置のレジスタは電源を入れた直後にしか読み書きできないから
答えと解説を見る

正解:B. 複数のプログラムが勝手に装置を操作すると、装置の状態が壊れたり保護が破られたりするから

装置のレジスタが置かれたアドレスはページテーブルでユーザモードからアクセスできない設定にされ、OSのドライバだけが操作できるようにしています。複数のプログラムが同じ装置を勝手に操作すると、途中の状態が混ざって装置が誤動作し、DMAで任意のメモリを書き換えるなど保護も破られるためです。アプリケーションはシステムコールを通してOSに操作を依頼します。命令が書けないわけではなく、保護で禁止されています。

  • A. 命令は書けますが、ページテーブルの保護で禁止されています。
  • B. 正しい。装置の状態の破壊や保護の破れを防ぐためです。
  • C. レジスタはいつでも操作できます。
この分野を解く 分野ページへ

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

  1. 1台のコンピュータの上で、複数のOSをそれぞれ独立した仮想マシンとして同時に動かすためのソフトウェアを何と呼ぶか。
  2. ハイパーバイザの型の説明として正しいものはどれか。
  3. 入れ子ページング(2段のアドレス変換)を使った仮想化で、ハードウェアが行うアドレス変換の説明として正しいものはどれか。
  4. ゲストもホストも4段のページテーブルを使う入れ子ページングで、TLBミスが起きたとき、最悪で何回のメモリアクセスが必要になるか。
  5. 仮想マシンのOSが特権の必要な命令を実行したとき、ハイパーバイザに処理が移り、ハイパーバイザがその命令の効果を代わりに再現する方式を何と呼ぶか。