基本情報技術者 2015年 秋期 午前(科目A) 問11
問題文
デバイスドライバの役割として、適切なものはどれか。
選択肢
ア:アプリケーションプログラムの要求に従って、ハードウェアを直接制御する。(正解)
イ:実行を待っているタスクの中から、次に実行するタスクを決定する。
ウ:複数のウィンドウの、画面上での表示状態を管理する。
エ:利用者が入力するコマンド文字列を解釈して、対応するプログラムを起動する。
##: デバイスドライバの役割として、適切なものはどれか。【午前2 解説】
要点まとめ
- 結論→デバイスドライバはアプリケーションやOSの要求を受けて、ハードウェアを直接制御し入出力を仲介するソフトウェアです。
- 根拠→ドライバはハードウェア固有の操作や割り込み処理、バッファ管理などを担当し、抽象化されたAPIで上位に機能を提供します。
- 差がつくポイント→「直接制御」と「スケジューリング・画面管理・コマンド解釈」とを混同しないことが得点差に直結します。
正解の理由
正解: ア
アは「アプリケーションプログラムの要求に従って、ハードウェアを直接制御する。」とあり、これはデバイスドライバの本質的役割を端的に示しています。ドライバはOSカーネルの一部(またはカーネルと連携するモジュール)として、デバイス固有の命令セットやレジスタ操作、割り込み処理、DMA制御などを行い、上位のソフトウェアが抽象化されたインタフェース(ファイル操作やIOCTLなど)で入出力を扱えるようにします。
アは「アプリケーションプログラムの要求に従って、ハードウェアを直接制御する。」とあり、これはデバイスドライバの本質的役割を端的に示しています。ドライバはOSカーネルの一部(またはカーネルと連携するモジュール)として、デバイス固有の命令セットやレジスタ操作、割り込み処理、DMA制御などを行い、上位のソフトウェアが抽象化されたインタフェース(ファイル操作やIOCTLなど)で入出力を扱えるようにします。
よくある誤解
- 「ドライバはタスクスケジューラの仕事」:スケジューリングはOSのプロセス/スレッド管理の領域であり、ドライバの役割ではありません。
- 「ドライバがウィンドウ配置やコマンド解釈を行う」:GUIやシェル機能は別のサブシステム(ウィンドウマネージャやシェル)が担います。
- 「デバイスドライバは常にカーネル空間で動作する」:多くはカーネル空間ですが、ユーザ空間で動作するユーザランドドライバも存在します(例:FUSEや一部のUSBドライバ)。
解法ステップ
- 問題文のキーワード「デバイスドライバ」「役割」を確認する。
- 各選択肢とOSの主要機能(デバイス制御、スケジューリング、ウィンドウ管理、コマンド解釈)を対応付ける。
- デバイスドライバは「ハードウェア制御」「入出力仲介」が正しい役割であるため、それに一致する選択肢を選ぶ。
- 残り選択肢が別のサブシステム(OSカーネルのスケジューラ、GUI、シェル)に該当することを確認して除外する。
選択肢別の誤答解説
- ア: 正解。アプリケーションからの要求をハードウェア固有の操作に翻訳し、入出力を直接制御する役割です。
- イ: 誤り。タスクの実行順を決定するのはスケジューラ(プロセス/スレッド管理)であり、ドライバの責務ではありません。
- ウ: 誤り。複数ウィンドウの表示や重なり順などはウィンドウマネージャやグラフィックシステム(X Window、Wayland等)が担当します。ドライバはGPUやディスプレイコントローラの低レベル制御を担うことはありますが、ウィンドウ管理自体は別物です。
- エ: 誤り。入力されたコマンドの解釈とプログラム起動はシェル(コマンドプロンプト)やオペレーティングシステムのユーザランド機能であり、ドライバの仕事ではありません。
補足コラム
デバイスドライバは「ハードウェア抽象化層(HAL)」の一部と考えられ、上位ソフトウェアがデバイス固有の違いを意識せずに入出力を実行できるようにします。具体的な機能にはデバイス初期化、I/O要求の処理、割り込みハンドラ、DMA設定、エラーハンドリング、電源管理(スリープ復帰対応)などがあります。近年はセキュリティや安定性の観点からユーザ空間で動くドライバや、仮想化環境でのパラバーチャルドライバも増えています。
FAQ
Q1: ドライバとファームウェアの違いは何ですか?
A1: ドライバはOS側のソフトウェアで、ハードウェアを制御する命令を発行したりデータを仲介します。ファームウェアはハードウェア内で動作するソフトウェア(ROM/フラッシュ上)で、デバイス固有の低レベル動作を実装します。双方が協調して動きます。
A1: ドライバはOS側のソフトウェアで、ハードウェアを制御する命令を発行したりデータを仲介します。ファームウェアはハードウェア内で動作するソフトウェア(ROM/フラッシュ上)で、デバイス固有の低レベル動作を実装します。双方が協調して動きます。
Q2: 全てのデバイスは専用ドライバが必要ですか?
A2: 多くは専用ドライバが望ましいですが、標準クラス(USBストレージ、HIDなど)は共通ドライバで動作する場合があります。また、仮想デバイスや汎用ドライバで代替可能なケースもあります。
A2: 多くは専用ドライバが望ましいですが、標準クラス(USBストレージ、HIDなど)は共通ドライバで動作する場合があります。また、仮想デバイスや汎用ドライバで代替可能なケースもあります。
Q3: ドライバが原因の障害はどのように対処しますか?
A3: カーネルパニックやクラッシュの原因になりうるため、ログやクラッシュダンプ、デバッグビルドでの検証、バージョン差分や署名検証で問題の切り分けを行います。ユーザ空間ドライバは安全性が高いが性能や機能に制約があることがあります。
A3: カーネルパニックやクラッシュの原因になりうるため、ログやクラッシュダンプ、デバッグビルドでの検証、バージョン差分や署名検証で問題の切り分けを行います。ユーザ空間ドライバは安全性が高いが性能や機能に制約があることがあります。
関連キーワード: デバイスドライバ、カーネル、ハードウェア制御、I/O、割り込み、DMA、デバイス管理、ドライバ開発、HAL、ユーザランドドライバ

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

