リスキリング|情報技術者への歩み、デジタルを使う側から作る側へ

情報技術者のスキルを身に付け、デジタルを提供する側になれば未来で勝ち組になれると思うので頑張る!

多重プログラミングと割り込みについてわかりやすく解説|オペレーティングシステム・ソフトウェア・基本情報技術者試験

※This page uses affiliate advertising.

※本ページは、アフィリエイト広告を利用しています。

Amazon.co.jp: Amazon Prime

Amazon.co.jp: Prime Student - 学生のためのお得なプログラム

Kindle Unlimitedにサインアップして無料体験に登録する

Amazon.co.jp: Amazon Music Unlimited

Amazon.co.jp: Audibleオーディオブック

 

多重プログラミングと割り込みについてわかりやすく解説

 

|はじめに

 オペレーティングシステムとは、コンピュータのハードウェアとソフトウェアの間にあって、コンピュータの動作を管理・制御するプログラムのことです。オペレーティングシステムには、多重プログラミングという機能があります。多重プログラミングとは、複数のプログラムを同時に実行できるようにする技術のことです。多重プログラミングを実現するためには、割り込みという仕組みが必要です。割り込みとは、コンピュータが何かしらのイベントに対して、現在実行中のプログラムを一時的に中断して、別のプログラムに切り替えることです。

 ここでは、多重プログラミングと割り込みについて、基本情報技術者試験の範囲内でわかりやすく解説します。オペレーティングシステムの基礎知識を身につけるために、ぜひご一読ください。

 

 

1.多重(マルチ)プログラミングの概要について

 多重プログラミングは、複数のプログラムを同時に実行する仕組みです。CPUとOSの協力によって実現されています。オーバーヘッド時間が発生するため、多重プログラミングの効率はCPUの性能やOSの設計によって異なります。

 

①多重プログラミングの仕組み

 多重プログラミングとは、一つのコンピュータ上で複数のプログラムを同時に実行することを指します。これにより、ユーザーは、複数のプログラムを同時に操作することができ、効率的な作業が可能になります。

 この方式により、一つのプログラムが入出力などで待機している間に、他のプログラムがCPUを利用することができ、CPUの利用率を向上させ、システムの全体的な処理速度を高めます。

 

②CPUと多重プログラミングの関係

 CPUは、多重プログラミングの中心的な役割を果たします。CPUは、各プログラムに対して一定の時間(タイムスライス)を割り当て、その時間内でプログラムを実行します。タイムスライスが終了すると、CPUは次のプログラムに制御を移します。このプロセスは非常に高速で行われ、ユーザーには複数のプログラムが同時に実行されているように見えます。

 また、CPUは、各プログラムの処理を切り替える際に、メモリやレジスタの内容を保存する必要があります。この処理をタスクスイッチと呼びます。タスクスイッチは、CPUの処理を中断するため、オーバーヘッド時間が発生します。

 

③オーバーヘッド時間

 オーバーヘッド時間とは、実際の作業(プログラムの実行など)以外にシステムが必要とする時間のことを指します。オーバーヘッド時間は、CPUの性能や、OSの設計によって異なります。オーバーヘッド時間が大きいと、多重プログラミングの効率が低下します。

 例えば、多重プログラミングでは、CPUが一つのプログラムから次のプログラムへと切り替える際に必要となる時間(コンテキストスイッチ)がオーバーヘッド時間に含まれます。このオーバーヘッド時間が大きいと、システム全体の効率が低下する可能性があります。したがって、オーバーヘッド時間を最小限に抑えることが、多重プログラミングの効率を最大化するための重要な課題となります。

 

 

2.プログラムを切り換える「割り込み」の概要について

 割り込みは、コンピュータの処理を中断して、別の処理を実行する仕組みです。

 割り込みは、外部からの入力や、ハードウェアの異常など、予期せぬイベントが発生した際に発生します。割り込み処理は、割り込みルーチンによって実行され、割り込みルーチンは、割り込みが発生した原因を調査し、適切な処理を行います。

 割り込みマスクを設定することで、特定の割り込みを無効にすることができ、これらの割り込みを処理することで、OSは、コンピュータの正常な動作を維持することができます。

 

①割り込みの仕組み

 割り込みは、CPUが現在実行中のプログラムを一時停止し、別のタスク(割り込みルーチン)を実行する仕組みです。

 割り込みは、外部からの入力、ハードウェアからの信号(例えば、キーボードの入力やタイマーの満了)、ソフトウェアからの要求(例えば、システムコール)、またはハードウェアの異常など、予期せぬイベントが発生した際に発生します。

 割り込みが発生すると、CPUは現在実行中の処理を中断し、割り込みの処理を実行します。その後、割り込み処理が完了すると、CPUは中断した処理を再開します。

 

②割り込みルーチンの仕組み

 割り込みルーチンは、割り込みが発生したときにCPUが実行するプログラムで、、割り込みが発生した原因を調査し、適切な処理を行います。

 例えば、キーボードからの入力があった場合、対応する割り込みルーチンはキーボードバッファから文字を読み取り、それを処理します。

 割り込みルーチンは、OSの一部として実装されています。

 

③割り込みマスク

 割り込みマスクは、特定の割り込みを無視するための設定です。

 割り込みマスクを設定することで、CPUは特定の割り込みを無効にし、現在のプログラムの実行を続けます。これは、例えば、重要なタスクが割り込みによって中断されるのを防ぐために使用されます。

 割り込みマスクは、CPUのレジスタに設定されます。

 

 

3.発生原因で分ける割り込みの種類について

 割り込みは、CPUの処理を中断して、別の処理を実行する仕組みで、多重プログラミングを実現するために必要な仕組みであり、コンピュータの効率的な利用に欠かせません。

 割り込みの種類は、発生原因によって、内部割り込みと外部割り込みに分けられます。

 内部割込みは、CPUの内部で発生する割り込みで、プログラム割り込みとSVC割り込みに分けられます。外部割込みは、CPUの外部で発生する割り込みで、入出力割込み、機械チェック割込み、タイマ割り込み、コンソール割り込みに分けられます。

 

①内部割込みの概要について

 内部割込みとは、プログラムの実行中に発生する割り込みです。主な内部割込みには、以下の2つがあります。

・プログラム割り込みとは?

 プログラム割り込みは、プログラムの実行中に発生する割り込みです。例えば、ゼロ除算やオーバーフロー、未定義命令の実行などがこれに該当します。これらのエラーが発生すると、CPUはエラー処理ルーチンを実行します。

SVC(スーパバイザコール)割り込みとは?

 SVC割り込みは、プログラムがOSのサービスを要求するために発生します。これは、システムコールとも呼ばれ、ファイルのオープンやクローズ、入出力の要求など、OSの提供するサービスを利用するために使用されます。

 

②外部割込みの概要について

 外部割込みとは、プログラムの実行とは関係なく発生する割り込みです。主な外部割込みには、以下の4つがあります。

・入出力割込みとは?

 入出力割り込みは、外部デバイス(キーボード、マウス、プリンタなど)からの信号によって発生します。例えば、キーボードからの入力があった場合、CPUは現在の処理を中断し、キーボードからの入力を処理する割り込みルーチンを実行します。

・機械チェック割り込みとは?

 機械チェック割り込みは、ハードウェアの異常(電源の異常、メモリのエラーなど)を検出したときに発生します。この割り込みが発生すると、システムはエラー情報を記録し、適切なエラー処理を行います。

・タイマ割り込みとは?

 タイマ割り込みは、一定の時間間隔で発生します。これは、OSがプログラムの実行時間を制御するために使用されます。例えば、あるプログラムがCPUを独占しないように、OSはタイマ割り込みを使用してプログラムの実行を一時停止し、他のプログラムにCPUを割り当てます。

・コンソール割り込みとは?

 コンソール割り込みは、ユーザーがコンソール(キーボードや画面)からの入力を行ったときに発生します。この割り込みは、ユーザーからのコマンドを受け取り、それを処理するために使用されます。

 

 

4.PSW(Program Status Woord)とは

 PSW(Program Status Woord)とは、CPUの状態を示すレジスタのことで、CPUの各種の状態を示すフラグ・ビットや、次に実行すべき命令の仮想記憶アドレスをもつ、特殊なレジスターです。PSWは、CPUの内部状態(演算状態や割り込みの状態など)を示すフラグ群です。

 フラグは、比較命令や演算命令によって設定され、このフラグは主に条件分岐命令で参照され、このフラグの状態に応じて分岐を制御できるようになっています。

 PSWは、CPUの実行モード、割り込みの状態、レジスタの保存状態など、CPUの状態に関する情報を保持しています。PSWは、割り込み処理や、タスクスイッチの際に用いられます。

 PSWの役割は、CPUの状態を示すレジスタであり、割り込み処理や、タスクスイッチの際に用いられます。割り込み処理では、割り込みが発生した原因を特定するために、PSWの実行モードや、割り込みマスクの状態を調べます。タスクスイッチでは、現在のプログラムの状態をPSWに保存し、次のプログラムの状態をPSWに読み込むことで、プログラムの切り替えを行います。

 

 PSWは、以下の項目で構成されています。

 

・実行モード:

 実行モードとは、CPUが実行しているプログラムの種類を表すビットです。実行モードは、通常モード、スーパーバイザモード、モニタモードの3種類があります。

通常モード:ユーザプログラムが実行されているモード

スーパーバイザモード:OSが実行されているモード

モニタモード:OSの内部処理が実行されているモード

 

・割り込みマスク:

 割り込みマスクとは、割り込みの発生を抑制するビットです。割り込みマスクを設定すると、割り込みが発生しても、CPUは割り込み処理に移りません。

 

レジスタの保存状態:

 レジスタの保存状態とは、割り込みが発生した際に、CPUが保存するレジスタの状態を表すビットです。レジスタの保存状態は、割り込み処理が終了した際に、元の状態に戻すために用いられます。

 

・その他:

 その他には、CPUの状態に関するその他の情報が含まれる場合があります。例えば、「キャッシュの状態」、「メモリの状態」、「ハードウェアの状態」などです。

 

 

5.ポーリング制御方式

 ポーリング制御方式とは、CPUが定期的に、または条件に応じて、各デバイスの状態をチェックして、要求があるかどうかを判断する制御方式です。

 ポーリング制御方式では、CPUは、各デバイスの状態を示すレジスタを読み取ることで、デバイスの状態をチェックします。デバイスの状態が要求状態の場合、CPUは、デバイスからの要求を処理します。

 ポーリング制御方式は、割り込みを必要としないため、割り込み処理のオーバヘッドを抑えることができます。しかし、CPUが常にデバイスの状態をチェックしているため、CPUの負荷が大きくなります。

 ポーリング制御方式の具体的な例としては、キーボードやマウスなどの入出力デバイスの制御が挙げられます。キーボードやマウスは、ユーザーからの入力を待っている状態であるため、割り込みによる処理よりも、ポーリングによる処理の方が適しています。

 

ポーリング制御方式は、次の場合に適しています。

・割り込みの発生頻度が低いデバイス

・デバイスの状態を頻繁にチェックする必要があるデバイス

 

<ポーリング制御方式のメリット>

・割り込み処理のオーバヘッドが小さい

・割り込みの処理が不要なため、デバイスの動作を制御しやすい

 

<ポーリング制御方式のデメリット>

・CPUの負荷が大きくなる

・デバイスの状態を頻繁にチェックするため、処理速度が遅くなる

 ポーリング制御方式とは ポーリング制御方式は、主となるシステムが他のシステムに対して一定間隔で順繰りに要求がないか尋ねる制御方式です。この方式は、複数のシステムが独立に動作して主システムと通信しているような状況で有効です。

 各システムが自らのタイミングで通信を行うと処理や信号が他のシステムと競合して不具合を生じる場合があるため、主システムが一定時間ごとにポーリングを行い、各システムは問い合わせのあったときのみ要求を伝えるようにすることで、整然と通信することができます。また、ポーリング制御方式は、システム内部が高負荷になったり、ネットワークのトラフィック量が増大するのを防ぐため、ポーリングの間隔は他への影響も考慮して決める必要があります。

 

 

|おわりに

 以上、オペレーティングシステムの多重プログラミングと割り込みについて解説しました。

 多重プログラミングは、複数のプログラムを同時に実行する仕組みです。これにより、ユーザーは、複数のプログラムを同時に操作することができ、効率的な作業が可能になります。

 一方、割り込みは、コンピュータの処理を中断して、別の処理を実行する仕組みです。これは、外部からの入力や、ハードウェアの異常など、予期せぬイベントが発生した際に、OSが適切に対処するために必要です。

 多重プログラミングと割り込みは、オペレーティングシステムの基本的な機能であり、コンピュータの効率的な利用に欠かせません。基本情報技術者試験では、多重プログラミングと割り込みに関する問題が出題されます。これらの問題を解くためには、多重プログラミングと割り込みの基本的な概念を理解しておくことが重要です。

 

amprime.hatenablog.com

amprime.hatenablog.com

amprime.hatenablog.com

amprime.hatenablog.com

amprime.hatenablog.com