2009-11-23 46 views
14

割り込みとイベントの違いは何ですか?割り込みとイベントの違い

+2

これはコンテキストによって異なります。あなたはプログラミング言語について話していますか?オペレーティング·システム ?ハードウェア?割り込みおよびイベントという用語は、多くの場合コンテキストに依存します。 –

+0

オペレーティングシステムカーネルがタグです。だから、私は文脈を説明すると思う。 – claws

+0

参照:http://stackoverflow.com/q/4835714/119790 –

答えて

27

これらの2つの概念の両方は、「システム/プログラム」がある種のプログラムを正常にアンロールしている間に発生するさまざまな「条件」に対処する方法を提供し、元のタスクに戻す(またはしない...)前に。しかしながら、は、この機能的類似性とは別個に、別個のレベルで別個のレベルで使用される非常に異なる概念である。

割り込みは、CPUが所定の時間に取り組んで、別のアドレスにCPU開始処理命令を有するようにプログラムのどの部分の正常な展開を中断するローレベル装置を提供します。割り込みは、CPUの即時処理(キーストロークやシリアル通信チャネルへの新しいデータの到着など)を必要とするさまざまな状況に対処するのに便利です。

多くの割り込みは、ハードウェア(CPUのピンの1つの極性を変更する一部の電子デバイスによって)によって生成されますが、プログラム自体が特定の命令を呼び出すことによって引き起こされるソフトウェア割り込みもあります。 (またはCPUが何かを検出することによって、それ自体または実行中のプログラムに関して迷っている)。

非常に有名な割り込みは、プログラムがMS-DOSからサービスを呼び出すために[d]を呼び出すINT 0x21です。

割り込みは、通常、ベクトルテーブルを使用して送出され、CPUはメモリ内の特定の場所にアドレスの配列[特定の割り込みハンドラが常駐する場所]を保持します。割込みテーブルの内容を変更することにより、プログラムは特定の割込み番号に対してどの特定のハンドラが呼び出されるかを再定義することができます。

イベント、一方、そのようなマウスクリックのような様々なハードウェアまたはソフトウェアの状況を示すために使用することができるシステム/言語レベル「メッセージ」(Iワードイベントを使用したい)、であり、 「データベースに挿入された新規レコード」や高度にダイジェストされた要求やメッセージなどのアプリケーションレベルの状況も含まれ、プログラムのさまざまな部分間の通信/要求用のモジュール式プログラムで使用されます。

CPUによって完全に定義された[比較的単純な]動作の割り込みとは異なり、オペレーティングシステムのレベルでさまざまなフレームワーク(例:MS Windows、JavaScript、.NET)のさまざまなイベントシステムシステムが存在します。 、QTなどのGUIフレームワーク)。すべてのイベント・システムは、それらの実装で異なるが、典型的には、

  • 特定のイベントからのイベントの特定のタイプを処理するように指定されたプログラムの特定の機能/方法でハンドラの概念、などの共通の特性を共有しますソース。
  • イベントのコンセプトは、イベントに関する情報を含む[通常は小さな]構造です。そのタイプ、ソース、カスタムパラメータ(セマンティクスはイベントタイプによって異なります)
  • イベントが挿入されるキューです。
1

割り込みはハードウェア(CPU)内で実行され、通常はプログラムのリニアフローを中断します。これは、キーボード入力などの外部イベントにとって重要ですが、マルチタスキングオペレーティングシステムでのプログラムの中断も重要です。

イベントはソフトウェアエンジニアリングの手段であり、おそらくGUIツールキットでよく知られています。そこで、ツールキット/ OSは、キーストロークやマウス入力などの出来事を「イベント」にラップします。それらは、そのようなイベントを受け取るために登録するために行ったプログラムに派遣されます。おそらくメーリング・システムのようなものです。

-Interruptsが

- イベントは通常、送信された(OSのコードのように)いくつかの低レベルのコードを実行できるようにするために停止するようにプログラムを強制する:ユーザ空間プログラムビューから、両方を比較すること

下位レベルのコードから実行し、コードの実行を開始します

関連する問題