コンピュータの周辺機器はたくさんあり、タイマーのように周辺機器とはユーザーが
認識していないものまで含まれている。そしてそれら周辺機器に操作が加えられたり、
周辺機器の操作が完了したり、異常が発生した場合に割り込みが発生する。しかし
CPUには割り込みを受ける線は1本しかない。そこで割り込みコントローラーという
ICが活躍する。
この割り込みコントローラーはPC-9801(9821)シリーズ、DOS/Vパソコンともに、
8259(もしくはその互換チップ)というチップで、これは8台の機器がつなげる。
しかし8台では少ないので、上図のように8259を2つつなげて、15台の機器を管理している。
キーボードやタイマーなどは1つめの8259(マスターコントローラーという)につながっており、
マウスなどは2つめの8259(スレーブコントローラーという)につながっている。
(どこにつながっていてもプログラマーには関係ないんだけど)
そして、各機器から割り込み要求があると、8259がCPUに「割り込みだよ!」と
知らせる。するとCPUは今実行している命令が終わると(ある処理が終わったらではなくて
命令が終わると)、8259に「誰から?」と訪ね答えを聞く。実際は割り込み番号を聞く。
電話中に他の電話がかかってくると出られないのと一緒で、CPUも割り込み処理中は
他の割り込みを受け付けることができない。そこで8259に「今割り込み処理してるからね」
と教える。
受け取った割り込み番号ごとに、実行すべき割り込み処理のプログラムが格納されている
場所がメモリー上に記録されており、そのアドレスを調べて割り込み処理をする。割り込み
処理が終わると8259に「割り込み処理がやっと終わったよ」と知らせる。もし、割り込み
処理中に他の割り込みがあると、8259はそれを覚えておいて、この時点でCPUに「また割り込み
があったよ」と知らせて、CPUは割り込みをまた行う。もし割り込み処理中に新たな割り込みが
なければ、それまでやっていた処理の続きを行う。
なお、同時に複数の割り込みがあった場合は8259が優先度を決めて(8259につながっている
順番)CPUに知らせてくれる。