割り込み (コンピュータ)
Intel 8086ファミリの割り込みコントローラ。IRQ 0-7の8本の割り込み端子を持ち、CPUに割り込み番号を伝える。各割り込み毎にマスクと優先順位を設定できる。PC/AT互換機ではこの機能を2つ搭載している。
CPUの割り込みは、大きく分けてハードウェア割り込み(外部割り込み)とソフトウェア割り込み(内部割り込み)に分類できる。一言で「割り込み」と言った場合、前者を指すことが多いため、後者のことをSWI (SoftWare Interrupt) と呼び区別する場合がある。
割り込みには以下のような種類が存在する。
ハードウェア割り込み - 割り込み要求端子の変化によりCPU外部から発生する ノンマスカブル割り込み(NMI) マスカブル割り込み(狭義のIRQ)
ソフトウェア割り込み(SWI) - CPU内部の要因で発生する 狭義のソフトウェア割り込み(狭義のSWI) ー CPUの割り込み命令によって発生する 例外、トラップ - 割り込み命令以外の要因で発生する
ソフトウェア割り込みは、CPU内部においてCPU命令によって要求されるものや、命令実行に関わるモジュール(例えば、キャッシュ)の状態変化やエラーによって要求されるものがある。前者は、ソフトウェア割り込み命令によって発生するものであり、狭義のSWIとも言われる場合がある。また後者は、例外 (Exception) やトラップ (Trap) と呼ばれ区別されることがある。
CPU命令(INT、TRAP、RST など)によって発生するソフトウェア割り込みは、実行可能な処理範囲がモードによって制限されるようなCPUにおいて、システムコールを実現するために用いられる。例えば、通常のアプリケーションが動作するユーザモードでは実行できない命令であっても、SWIの後では特権モードに移行するため実行可能になる。
例外は、ゼロ除算、算術オーバーフロー、ページフォルトなどによって生じる。特に、ページフォルトはOSがメモリ空間を管理するのに重要な役割を果たす。
CPUがソフトウェア割り込みのための命令を直接サポートしていない場合、空いているハードウェア割り込み要求端子をアサートする手段を別途用意することによりソフトウェア割り込みをエミュレートすることがある。アーキテクチャによっては、この方法を正式なソフトウェア割り込みの実装としている。