質問: デバイスドライバと割込みハンドラの違いがわかりません。 「デバイスドライバはカーネルルーチンの集合」と本には書いてあります。 割込みハンドラはループバックルーチンと書いてあります。 つまり、割込みハンドラはデバイスドライバの一部ということでしょうか?? とある本には、、、 ハード割込みのイベント → 割込みハンドラ → スケジューラ処理 → ユーザー空間のプロセス となっていました。 ところが、しばらく読んでいくと、、、 「ドライバがキャッチした割込みイベントを直接ユーザー空間のアプリに渡している」とありました。 デバイスドライバと割込みハンドラ全くの別物と思っていたので、ここで混乱しています。 android を例に取ると、、、 画面にタッチすると、データ確定割込みが発生 → 割込みに対応した割込みハンドラを実行 → タッチ位置情報を読み取るカーネルスレッドをスケジューラに登録 → カーネルスレッドからI2Cドライバから位置データを取得 → そのデータをinputドライバに引き渡す。 と書いてあります。 これを見ると割込みハンドラとデバイスドライバは全くの別物という感じですが、、、、、 ちょっとよくわかりません。 教えてください! [追記] 割込みハンドラはソフト割込み(システムコール)、ハード割込みの両方の割込みが発生した場合は必ず、必要になるものですよね? デバイスドライバはデバイスのアクセスの時(デバイスファイルへの書き込み、読み込み)のみ使用するという理解で正しいですよね? そうなると、ハード割込みはデバイスを介しているので、デバイスドライバは必ず、必要になりますよね。 ソフト割込みの場合だと、全てが必ずしもデバイスにアクセスを必要とする割り込みとは限りませんよね? やはり、デバイスドライバと割込みハンドラは別物、、、、、と考えたんですが、、、、、 違いますかね??
回答: 割り込みハンドラは手段で、デバイスドライバは目的じゃないのかな。 「割り込みハンドラを使ったデバイスドライバ」みたいな。