1. 概要

オペレーティングシステムでは、アプリケーションは機能を実行するためにイベントに依存します。 したがって、OSはイベント駆動型モジュールパラダイムに分類されます。 OSが一部のプログラムまたはアプリケーションを実行すると、イベントが発生する可能性があります。 イベントはプログラムの実行をトリガーし、OSの状態をユーザーモードからカーネルモードに変更します。

このチュートリアルでは、 OSで人気のある2つのタイプのイベント(トラップと割り込み)について説明します。これら2つのイベントの基本を探り、それらの主な違いを強調します。[X203X ]

2. OSでのトラップの概要

トラップは、機能を実行するためのユーザープロセスの例外によってトリガーされる同期割り込みです。無効なメモリアクセス、ゼロ除算、ブレークポイントなどの例外条件により、OSでトラップがトリガーされる可能性があります。

トラップは、OSのモードをカーネルルーチンに変更します。 ここで、OSはいくつかのアクションを実行し、以前に実行していたプロセスに制御を戻します。 トラップ中、プロセスの実行はユーザーコードと比較して高い優先度として設定されます。

さらに、トラップハンドラーは同期しています。 OSがトラップを検出すると、ユーザープロセスを一時停止します。 システムコールが完了するとすぐに、OSは再開し、ユーザープロセスの実行を続行します。

さらに、トラップはCPU割り込みハンドラーと見なすことができます。 OSはスタックポインタを保存し、メモリを登録して、以前の実行を再開できます。

例を見てみましょう。 OS上でプログラムを実行しているユーザーを想定します。 プログラムにはprintステートメントがあります。

printf(“%s\n”, str);

OSはこのステートメントを実行し、印刷機能をトリガーします。 さらに、print関数は、コードによって返された文字列をモニターに表示します。 したがって、これはトラップの例です。

OSはprintステートメントを高い優先度で実行します。  OSがこのステートメントに遭遇するとすぐに、カーネルモードに切り替わります。 OSが実行を終了すると、モードはユーザーモードに戻ります。

3. OSでの割り込みの基礎

割り込みは、OSによる即時の注意を要求するハードウェアまたはソフトウェア信号です。重要なプロセスを緊急に実行する必要があることをプロセッサに通知します。 このような場合、現在の作業プロセス中断されます。

最近のすべてのコンピューターは割り込み駆動型です。 OSは、単一のアプリケーションで一連の命令を開始します。 さらに、命令の実行は、命令が完了するか、割り込み信号を受信するまで続きます。 さらに、割り込みサービスルーチン(ISR)と呼ばれる特定のバス制御ラインが、I/Oデバイスの割り込みを処理します。

CPUには、割り込み用のINTピンと呼ばれる特定の割り込みピンが含まれています。 INTピンは、キーボード、NICカードなどのハードウェアデバイスをCPUに接続します。 キーボードのキーを押すと、割り込みが発生します。 その後、OSはコンテキストを変更し、キーボード割り込みハンドラルーチンを呼び出します。 実行が完了すると、前のプロセスに戻ります。

一般に、複数のハードウェアデバイスは、割り込みコントローラーを使用して1つのINTピンを共有します。どのデバイスが割り込みを生成したかを判別するために、プロセッサーは割り込みコントローラーに接続します。 さらに、彼のプロセッサは関連する割り込みハンドラ手順を実行します割り込みコントローラとの通信によるキーボードまたはUSB割り込みハンドラルーチンのようなもの。

一般に、 割り込みは、ハードウェアまたはソフトウェアデバイスから発生する可能性があります。 A I / O 操作が完了したら、次のことができますハードウェアの中断を観察します。 一方、アプリケーションが終了するか、特定のオペレーティングシステムサービスを探すと、ソフトウェア割り込みが発生します。

4. トラップと割り込みの違い

これで、OSでのトラップと割り込みの基本がわかりました。 これら2つの概念のいくつかの主要な違いについて説明しましょう:

5. 結論

このチュートリアルでは、OSのトラップと割り込みの概念について説明しました。 基本について説明し、それらの主な違いを表に示しました。