システムコールと割り込みの違い

Anonim

システムコールと割り込み

一般的なプロセッサは、命令を1つずつ実行します。しかし、プロセッサが一時的に停止して現在の命令を保持し、他のプログラムまたはコードセグメント(他の場所にある)を実行しなければならないことがあります。これを実行した後、プロセッサは通常の実行に戻り、中断したところから続行します。システムコールと割り込みはそのような機会です。システムコールは、システムに組み込まれたサブルーチンへの呼び出しです。割り込みは、外部ハードウェアイベントによって引き起こされるプログラム制御割り込みです。

システムコールとは?

システムコールは、オペレーティングシステムと通信するためのインタフェースをコンピュータ上で実行するプログラムを提供します。プログラムがオペレーティングシステムのカーネルからサービス(それ自体にアクセス権を持たない)を要求する必要がある場合、システムコールを使用します。ユーザーレベルのプロセスは、オペレーティングシステムと直接対話するプロセスと同じ権限を持ちません。たとえば、外部I / Oデバイスと通信したり、他のプロセスと対話するためには、プログラムがシステムコールを使用する必要があります。

割り込みとは何ですか?

コンピュータプログラムの通常の実行中に、CPUを一時的に停止させる可能性があるイベントが存在する可能性がある。このようなイベントは割り込みと呼ばれます。割り込みは、ソフトウェアまたはハードウェアのいずれかの障害によって引き起こされる可能性があります。ハードウェア割り込みは(単純に)割り込みと呼ばれ、ソフトウェア割り込みは例外またはトラップと呼ばれます。割り込み(ソフトウェアまたはハードウェア)が発生すると、制御は割り込みによって発生した条件を処理できるISR(割り込みサービスルーチン)と呼ばれる特別なサブルーチンに転送されます。

前述のように、Interruptという用語は通常、ハードウェア割り込み用に予約されています。 これは、外部ハードウェアイベントによって引き起こされるプログラム制御の中断です。ここで、外部はCPU の外部にある。 ハードウェア割り込みは、通常、タイマチップ、周辺機器(キーボード、マウスなど)、I / Oポート(シリアル、パラレルなど)、ディスクドライブ、CMOSクロック、拡張カードカード、ビデオカードなど)。これは、実行中のプログラムに関連する何らかのイベントのためにハードウェア割り込みがほとんど発生しないことを意味します。例えば、ユーザがキーボードをキー入力するようなイベントや、内部のハードウェアタイマーがタイムアウトすると、この種の割り込みが発生し、特定のデバイスに注意が必要であることをCPUに知らせることができます。 CPUが何をしているのかを停止する(すなわち、現在のプログラムを一時停止する)ような状況では、デバイスが必要とするサービスを提供し、通常のプログラムに戻る。 システムコールと割り込みの違いは何ですか?

システムコールは、システムに組み込まれたサブルーチンへの呼び出しであり、割り込みはイベントであり、プロセッサは現在の実行を一時的に保持します。しかし、主な違いの1つは、システムコールは同期であり、割り込みはそうではないということです。これは、システムコールが一定の時間(通常はプログラマによって決定される)で発生することを意味しますが、ユーザによるキーボードのキー押下などの予期しないイベントにより、いつでも割り込みが発生する可能性があります。したがって、システムコールが起きたときには、プロセッサはどこに戻るかを覚えておくだけで済みますが、割り込みが発生した場合には、プロセッサは復帰する場所とシステムの状態の両方を覚えておく必要があります。システムコールとは異なり、割り込みは通常、現在のプログラムとは関係ありません。