「割り込み」について(一般論)
- 割り込み動作と割り込み処理(一般論)
割り込みとは次のような動作である。
- あるユーザプログラムが走行している。
- その途中で外部から別の信号がコンピュータに入る。
コンピュータもユーザプログラムも予め入りうる信号の種類は承知しているが、
それが実際にいつ入るのか予測できない状況にある。
- その信号が入るとコンピュータは走行中のユーザプログラムを一旦中断し、
代わりに入った信号を処理するプログラムを急遽走らせる。
- 割り込み信号処理プログラムは短い時間に終了するように組まれている。
よって短時間に処理を終わる。
すると、コンピュータは一旦中断していたユーザプログラムへ戻り、続きを
再開する。
- 当然ながらユーザプログラムはいかなるところで中断されても、正確に
再開されねばならない。
そのための最低条件として走行中のユーザプログラムは、1個の機械語命令
の途中で中断されることはなく、キリの良い所すなわち必ず1個の命令の
実行処理(EX)が完了し、次の命令のフェッチが始まるところ(IF0)
で中断される。
- 割り込みを生起する信号のことを割り込み要因と称し、一般には複数個
の要因がある。
コンピュータの設計を行う時点で、どういう要因が存在するのか予め洗い出
しておく。
- 複数の割り込み要因が同時に入ったときは、その中でお互いの優劣順位
が予め定められていて順位の高いものから先に処理を行う。
- 低い順位のものが時間的に先に入ると、その処理プログラムがまず走り
出す。
その処理がまだ終わらぬうちに、高い順位の信号が入ると、先の割り込み
処理を中断して順位の高い割り込みルーチンが走り出す。
このような場合、割り込みレベルが2レベルあるという。
- 同じ順位レベルの中で複数の割り込み要因が同時に発生した場合は、
先着順に処理が行われ、オーバーライドは起こらない。
1つの処理が終わるまで他の要因はペンデイングして待つ。
- ユーザプログラムは入出力機械(IO)の取り扱い(起動、データ授受、
終了、停止等)をOSに依頼するのが普通である。
IOの取り扱いは機械の物理的なタイミングにリアルタイム拘束されるので、
このハンドリング途中に他の割り込み信号で邪魔されることは避けたい。
そこで、IO処理プログラム自体を或る高いレベルの割り込み順位として位置
づけ、他の割り込みで邪魔されないようにする。
つまりOSが走ることは1つの割り込み処理動作ともみなされる。
このような場合、ユーザプログラムがOSに対してIO処理を依頼すること自体が、
1つの割り込み要因となる。
- SEP-2の割り込みレベル(一般論)
SEP-2では、割り込みレベルは1レベルとする。
したがってCPUが走行するときのレベル状態は
- 割り込みレベル (ITF=1)
- ユーザレベル (ITF=0)
の2レベルとなる。
現在いずれのレベルに在るかは、ITフラグ(ITF)と呼ぶ1個のフリップ
フロップで区別する。
- 割り込み要因
SEP-2では、割り込み要因として”ユーザプログラムからのSVC命令実行”、
”外部コンピュータからの信号”、
”KITEボード押しボタンスイッチ”の3個を想定する。
これらは同じレベルにあるので、割り込み処理した要因は、先の処理
プログラムが一旦終了まで待たされる。
仮に全く同時に入ったときは、発動の優先順位だけは順に”1”、”2”、
”3”と決めておく。
もどる
Keiichi MIYAJIMA