割り込み
読み:わりこみ
外語:interruption
マイクロプロセッサー
の制御機能の一つ。
目次
概要
目的
割り込みが存在しない場合
ポーリングの問題点
解決
動作
割り込みの種類
ハードウェア割り込み
ソフトウェア割り込み
割り込み命令
例外
割り込み処理が行なわれない場合
割り込み禁止状態の場合
割り込みの優先順位の都合
概要
周辺機器が、自身に対してマイクロプロセッサーの処理を必要としたとき、その周辺機器からマイクロプロセッサーに信号が送信される。
マイクロプロセッサーがその信号を受け取ると(基本的には)それまでの処理を中断してその周辺機器に対する処理を行なうよう制御が変更される。この一連の流れのことを割り込みという。
目的
割り込み機能がマイクロプロセッサーに実装されるのは、マイクロプロセッサーが各種周辺機器の制御に本格的に使われるようになったときである。
割り込みが存在しない場合
割り込み機能が実装されていないマイクロプロセッサーで、周辺機器の制御を行なうことは不可能ではない。
しかしこの場合、プログラムがある一定のタイミングで周辺機器の様子を調べるためにI/Oポートにアクセスしにいく必要があった(
ポーリング
)。
ポーリングの問題点
プログラムが煩雑になる
特に必要もないのにI/Oポートにアクセスすることがある
そのために本来行ないたい処理の処理速度に悪影響が出る
処理の流れによってはI/Oポートのアクセスが長時間行なわれず、周辺機器の制御が不確実となる
解決
そのため、
周辺機器の処理が必要なときだけ、マイクロプロセッサーに確実に働いてもらう
という目的のために、周辺機器からの応答にマイクロプロセッサーが反応して制御を周辺機器に対する処理に変更させる機構が求められたのである。
動作
一般的には、
マイクロプロセッサー
(MPU)〜割り込みコントローラー(PIC)〜周辺機器(PICがMPUに内蔵されていることもある)のように接続されている。
周辺機器がPICに信号を送ると、PICがMPUに割り込み番号を送る。MPUは割り込み番号から
割り込みベクターテーブル
を参照し、割り込みベクターに書かれた番地に制御を移す、という動作を行なう。
割り込みと同時にMPUの動作権限が変わることもある。
割り込みの種類
ハードウェア割り込み
タイマー
バッファー
溢れ警告(
シリアルポート
やFDD、HDDなどの割り込みの主目的である)
バッファー枯渇警告
入力機器(
キーボード
や
マウス
)の操作が行なわれた場合
ソフトウェア割り込み
割り込み命令
Z80
ではRST命令、
x86
ではINT命令が該当する。あたかもCALL命令と同じように使う例も見られるが、それは本来の利用目的ではない。
割り込み処理においては、その処理を行なうためにマイクロプロセッサーの処理権限が上がることが一般的であるので、処理権限の低い状態から高い処理権限が必要な処理を行なうような場合に使われることが多い。
例外
マイクロプロセッサーという機器が発生させる割り込み。マイクロプロセッサーレベルで見れば例外と割り込みは同じものである。
割り込み処理が行なわれない場合
割り込み禁止状態の場合
マイクロプロセッサーにおいて、何らかの理由で割り込みが行なわれると問題が発生するような場合(たとえば
割り込みベクターテーブル
の編集中)に割り込み禁止処置が取られることがある。当然、この状態のときは割り込み処理に制御が移ることはない。
この場合、割り込み禁止が解除されるとそれまで止められていた割り込みが即座に処理される。
このため、割り込み禁止状態で
無限ループ
の
バグ
に突入すると
オペレーティングシステム
(OS)がその
プロセス
を制御することができなくなる可能性がある。但し、ユーザーアプリケーションにおいては割り込み禁止の動作を行なうことはできないのが普通である。
割り込みの優先順位の都合
複数の割り込みが同時に発生することは十分に考えられる。処理する順番をあらかじめ決めておかなければ、割り込みが無限ループに陥ってしまう可能性もある。
そのため、割り込みに優先度を付ける。優先度の高い割り込みは、低い割り込みよりも優先的に処理される。その途中で優先度の低い割り込みが発生しても、現在の処理終了まで待たせる。このようにして、割り込みが正しく処理されるようにするのが一般的である。
この場合は、先に行なわれている割り込み処理が終了すると、即座に後から来た割り込みが処理されるようになっている。
再検索