なんとなくわかる「割込み」

スポンサーリンク

割込みとは

割込みとは、実行中のプログラムのイベントよりも優先して処理すべきイベントの発生を契機にそのイベントを一時停止して割込み処理ルーチンを実行する仕組みです。割込みしたイベントが終了すると元々実行していたプログラムの処理に再び戻ります。

割込みを行えるようにすることで実行するべきイベントが抜け落ちたり、そのタイミングでしか実行できないイベントをし損ねたりするのを防ぎます。

その割込みが発生する要因が実行しているプログラムの内部にある場合は内部割込み、外的要因であれば外部割込みと言います。

内部割込み

内部割込みは、実行中のプログラムによって行われる割込みです。 プログラムの処理やエラーによって発生します。以下の2つに分類されます。

プログラム割込み

プログラムでの0除算、演算結果オーバーフロー、権限のないメモリへのアクセスや不正な命令実行などによるエラー出現による割込みです。プログラム割込みはプログラム内の想定していないエラーに対して発生します。

SVC割込み

SVCとはスーパバイザコールと呼ばれるプログラムがOSの機能を使うための命令で、プログラム内でSVCを使うための割込みです。プログラム割込みと違う点はSVC割込みはプログラムが意図的に割込みを行っています。

外部割込み

外部割込みは、ハードウェア割込みともいいプログラム以外の原因によって行われる割込みです。以下の4つに分類分けされます。

マシンチェック割込み

主記憶装置(メモリ)や電源装置などのハードウェアの障害発生を知らせる割込みです。停電時のチェックやハードウェアの誤作動などに対して発生します。

入出力割込み

入出力装置の入出力の完了や中断を知らせる割込みです。

タイマ割込み

タイマーに設定された時間が経過による割込みです。インターバルタイマによって一定の時間経過時に生じるものやウォッチドッグタイマのタイムアウトが起きたときに発生するものなどがあります。

コンソール割り込み

キーボードやマウスからの入力による割込みです。

コメント

タイトルとURLをコピーしました