ReQuest)、ソフトウェア割り込みがある例外はソフトウェア実行時の異常動作をCPUが検出して発生するIRQはCPU周辺のデバイスが発生させるソフトウェア割り込みはプログラムがINT命令で自発的に発生させる割り込みベクタのうち、例外のベクタはCPU仕様によりあらかじめ決まっている割り込みベクタはIDTの割り込みゲートディスクリプタで定義するIDTとIDTRに読み込ませるデータをC言語で作成し、LIDT命令でロードするGDTについていもGDTRをC言語で作成し、LGDT命令でロードすることがわかりました。周辺のデバイスが同時に割り込みを要求があった場合や、CPUが割り込み処理中の場合に優先度の低い割り込みは、割り込みしないように”割り込みを整理”してCPUに伝えます例えば、フロッピーディスクドライブがフロッピーディスクからデータを読み込む場合を考えてみますFDDコントローラはPICにながっています。フロッピーディスクからのデータ読み込むが終わるとPICにIRQ信号を出します。PICは他に優先度の高いIRQが無ければ、CPUにIRQ信号をだします信号を受け取ったCPUはIDTから受け取ったIRQに対応した番号の割り込みゲートディスクリプタを参照します。割り込みゲートディスクリプタに格納されている割り込みハンドラのアドレスを参照し、ハンドラを実行します割り込みとPICパソコンにはキーボード、FDD、HDD、マウスなどなどたくさんの周辺デバイスがつながっていますこれら周辺デバイスについてプログラムから制御したい場合には、ポーリングという方法が考えられましたポーリングはプログラムから常に周辺デバイスの状態を監視する方法のことを言います例えば、HDDにデータを書き込む場合に、HDDコントローラにデータ書き込み要求をします要求を受けたHDDコントローラはデータをHDDに書き込みますが、かなり時間がかかります(CPUにとって)書き込みが終わるまで、プログラムは書き込みが終わったかどうかをHDDコントローラに問い合わせ(ポーリング)します。このようにポーリングをしているとHDDが書き込みしている間、CPUは別の処理ができなくなってしまします。格段に効率よく処理が行えるようになりました。割り込みはHDDだけではなく、マウス、FDD、キーボードからもやってきますので、CPUで同時に割り込みを受けてしうと何が何やらわけが分からなくなってしまいます。優先度の高い割り込みから順にCPUに割り込みを要求するためにPICが作られました。ダウンロードしてみてくださいPIC(8259A)マイクロコントローラの特徴としては、1つのICに8個のIRQ(デバイス)が接続できるPIC(8259A)とPIC(8259A)同士を接続してIRQの数を増やす(カスケードする)ことができるIRQは64個まで増やすことができるとなります。PIC(8259A)は1つにつき8個までしかデバイスをつなげません最初はこれでよかったのですが、マウスやら何やらデバイスがぞくぞく増えてきて8個では足らなくなってきましたそこでIBMが2個以上のPIC(8259A)をつなげることで数の問題を解決してきましたPIC(8259A)をカスケード(つなげる)ことで最大64個のIRQを持つことがでしますこれにより、1つ目のPIC(8259A)をマスタと呼び、2つ目以降のPIC(8259A)をスレーブと呼びます通常、PCには2つのPICがあります。PICのまとめとPIT。