このページは大阪弁化フィルタによって翻訳生成されたんですわ。 |
キーボードちうんは、どエライシンプルな入力デバイスや。ちうのも、 キーボードは、(コンピュータの基準から見ると)ごくちびっとの量のデータを どエライゆっくり生成するもんやからや。キーを押したり離したりする際、 そのイベント信号は、キーボードケーブルを伝わちう、 ハードウェア割り込み (hardware interrupt) を 発生させまんねん。
こないな割り込みを監視するんは、オペレーティングシステムの仕事や。 あらゆる種類の割り込みに対処するために、割り込みハンドラ (interrupt handler) ちうのが必要になるんですわ。こら、 オペレーティングシステムの一部なんやし、(キーストロークやキーリリース といった) 割り込みに関係するデータのずぅぇえええぇぇええんぶを、それが処理されるまで 保持しておくもんや。
キーボード用の割り込みハンドラの実際の仕事ちうんは、キーの値をメモリの 底のほうにあるシステムエリアに格納するっちうことや。オペレーティングシステムが、 現在キーボードからの入力待ち思われるプログラムに対して制御を渡した 際、そのプログラムがそこから値を読み出せるようにするわけや。
ディスクやネットワークカードのようなもっともっともっともっともっともっともっともっともっと複雑な入力デバイスの場合でも 動作方法は同じや。よりどエライ昔の章では、ディスクコントローラはバスを使うてディスク リクエストが完了したことを伝えるゆう話をしましたわ。その場合の実際の動作と いうんは、ディスクが割り込みを発生されるゆうことや。そのとき、ディスクの 割り込みコントローラは、発生した割り込みデータをメモリ内に一旦コピーして、 後からそのリクエストを発したプログラムが使えるようにするんや。
割り込みには、どないな種類のもんであれ、じぇったい関連する ヒイキレベル (priority level) が付いとりまんねん。低いヒイキレベルの割り込み(例あげたろか、たとえばやなあ、 キーボードイベント)は、高いヒイキレベルの割り込み(例あげたろか、たとえばやなあ、クロックチック (clock tick) やディスクイベント) が処理されるのを待たなならしまへん。 Unix では、マシンの反応をスムーズにするために、迅速な処理を必要とする イベントに対しては、高いヒイキ順位が与えられはるように設計されとりまんねん。
オペレーティングシステムの起動時の文句のなかに、IRQ の数字に関する 表示があるんを見はったことがある思うで。また、ようあるハード ウェアの設定ミスのひとつとして、二つのデバイスが同じ IRQ を使うように 設定してもうていたゆう事例があることを御存知や思うで。そやけど、 これが何故設定ミスなんか、正確な理由は案外知られてへんねん。
そら、ゴチャゴチャゆうとる場合やあれへん、要はこないなことや。IRQ とは、"割り込みリクエスト (Interrupt Request)" の略や。オペレーティングシステムは、起動時に、どのハードウェア がどの割り込み番号を使うんか知る必要があり、それによって、適切な割り込み ハンドラを個々のハードウェアに関連付けとりまんねん。もし二つの異なるデバイスが 同一の IRQ を使おうとすると、割り込みが不適切なハンドラに送られてまう 事態が生じまんねん。その場合、通常はなんぼなんでもデバイスが反応しなくなってまう か、せやなかったら、OS を混乱させてもうて、OS が固まってまうか、クラッシュ してまうからや。