現在、私は秋の基本情報技術者試験に向けて勉強中です。
その中で、私が得た知識をまとめて記事にしています。
本記事のテーマ
タスク管理とは
まず、マルチプログラミングと割り込み処理はコンピュータの機能である「タスク管理」の1つです。
タスク管理については以前に書いた次の記事を参照ください。
マルチプログラミングとは
タスクの管理の役割は、CPUの無駄な時間を減らすこと。つまり、CPUが何もせずに休んでいる時間を最小限にすることが大事なのです!
CPUが遊んでいて使われていない状態のことはアイドルタイム(遊休時間)とも言います。
実際どうなっているのか例として説明します。
例:
プログラムというものはCPUによる処理と入出力とが繰り返されながら動きます。なので、入出力が働いている時はCPUは基本働かないのです。
そこで、複数のプログラムを見かけ上同時に実行して見せることでこうした遊休時間を減らし、CPUの効率を高めようとするものをマルチ(多重)プログラミングと言います。
例えば、次のような2つのタスクを実行した場合、マルチプログラミングでどのように効率が上がるのか見てみましょう!
まず、そのまま2つのプログラムを実行した場合、どちらも120msかかるため、2つで240msかかる計算になります。
例の前提条件:
・プログラムの優先度
プログラムA 高、プログラムB 低
マルチプログラムで実行すると、次のようになります。
本来、240msかかるはずの2つのタスクが130msまで短縮できました。CPUの遊休時間は2つ合わせて160msあったのが50msまで減っています。さらに、この図を見る限り、もっと他のタスクも一緒に実行できそうです。これがマルチプログラミングの効果です。
割り込み処理
実行中のタスクを中断して、別の処理に切り替え、そちらが終わるとまた元のタスクに復帰する・・・という処理のことを割り込み処理と呼びます。
これが割り込み処理。割り込み処理は、実行中のプログラムが原因で生じる内部割り込みと、プログラム街の要因で生じる外部割り込みに分かれます。
内部割込み
・プログラム割込み
ゼロによる除算や桁あふれ(オーバーフロー)、仮想記憶において存在しないページへのアクセスが生じたり、書き込みできない主記憶装置に書き込もうとした記憶保護例外などの場合に生じる割込み。
入出力処理を要求するなど、カーネル呼び出し命令が発行された時に生じる割込み。[Super Visor(スーパーバイザー)]とはカーネルの意味。
外部割込み
・入出力割込み
入出力装置の動作完了時や中断時に生じる割り込み
・機械チェック割込み
電源の異常や主記憶装置の障害など、ハーデウェアの異常発見時に生じる割り込み。
・コンソール割込み
オペレータ(利用者)による介入が行われた時に生じる割り込み
・タイマ割込み
規定時間を過ぎた時に生じる割込み
以上マルチプログラムと割り込み処理の説明を終了します。
特に割り込み処理は実際にコードを書く時にも使う場面が多いと思います。複数の割り込みがある場合は場合分けが多くなり、頭がこんがらります笑。
まぁ、重要なことなので頑張りましょう!
参考資料
・キタミ式イラストIT塾 基本情報技術者 平成31/01年