OSとハードウェア
一般的なOSで、アプリケーションが装置のレジスタを直接読み書きできないようにしている主な理由はどれか。
- Aアプリケーションのプログラムでは、レジスタを読み書きする命令が書けないから
- B複数のプログラムが勝手に装置を操作すると、装置の状態が壊れたり保護が破られたりするから
- C装置のレジスタは電源を入れた直後にしか読み書きできないから
答えと解説を見る
正解:B. 複数のプログラムが勝手に装置を操作すると、装置の状態が壊れたり保護が破られたりするから
装置のレジスタが置かれたアドレスはページテーブルでユーザモードからアクセスできない設定にされ、OSのドライバだけが操作できるようにしています。複数のプログラムが同じ装置を勝手に操作すると、途中の状態が混ざって装置が誤動作し、DMAで任意のメモリを書き換えるなど保護も破られるためです。アプリケーションはシステムコールを通してOSに操作を依頼します。命令が書けないわけではなく、保護で禁止されています。
- A. 命令は書けますが、ページテーブルの保護で禁止されています。
- B. 正しい。装置の状態の破壊や保護の破れを防ぐためです。
- C. レジスタはいつでも操作できます。