割込みとはなにか?

CPUにはピンがあります。

そのピンに信号が入るとソフトで用意した関数を処理する仕組み、それが割込みです。

アプリケーションのソフトを作成時に、CPUのピンなんて普通意識しません。(少なくとも私は意識したことはありません。)

そのような仕組みがいわば、CPU(ハード)とソフトの特別な関係によって実現する処理になります。

イメージがわかるように具体的に割込み手順を見てみます。

①リアル・コントローラが文字受信した際には、シリアル・コントローラが割込み出力線(IRQに情報を送信するためにコントローラ側が用意しているピン)に信号を出力します。

②CPUは割込み入力でこの出力信号を検知することでCPUに割込みが通知され、CPUが割込み処理に入るという動作になります。

多くのCPUで用意される割込みのためのピンにはIRQという名前がついているようです。

ソフトはCPUあってはじめて存在するものだと思うので、親子関係でいうと親がCPUでソフトが子。

ソフトはアセンブラ言語に見えるようにCPUに処理してほしい流れを記述して示すわけですが、親であるCPUはその処理の流れ通りに処理をしたり、時には止まらせてその処理の流れ以外の流れをに変更できる権限の強さと仕掛けがあるという解釈をしておくことにします。


CPUのピンと関数呼び出しの仕掛けがあることで、ソフトでポーリングを実施するときに生じるCPU浪費をなくすことに成功しているようです。