割り込みラインと割り込み番号の相違点


1

割り込みラインと割り込み番号(0x80など)の違いは何ですか?また、IRQはシステムコールにどのように関連していますか?

+2

私は他の誰かに応答を残しますが、自分自身に巨大な好意を行うと、巻の第6章を通じて臨検いくつかの時間を費やしています。インテルの開発者マニュアルの3a。このトピックのための素晴らしいリソースです:https://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3a-part- 1-manual.html 14 12月. 172017-12-14 17:57:04

1

LMGTFY

割り込みはすぐにそれが現在やっているものは何でも停止し、他の何かを行うには、それを言って、CPUに、キーボードなどのデバイスからの信号です。たとえば、キーが押されると、キーボードコントローラは割り込みを送信します。特定の割り込みが発生したときにカーネルを呼び出す方法を知るために、CPUはIDTと呼ばれるテーブルを持っています。これはOSによって設定されたベクタテーブルで、メモリに格納されています。 x86 CPUには、カーネルのエントリポイントとして機能する0〜255の番号の割り込みベクタが256個あります。 CPUがサポートする割り込みベクタまたはエントリポイントの数は、CPUのアーキテクチャによって異なります。

は、ほとんどのプラットフォーム上で一般の割り込みには3つのクラスがあります。

  • 例外:これらは、CPUが内部で生成され、その注意が必要なイベントや状況の実行中のカーネルを警告するために使用されています。割り込みのこのタイプは、チップセットによって外部で生成されると:のx86 CPU上で、これらは、ダブルフォルト、ページフォールト、一般保護違反など

  • 割り込み要求(IRQ)またはハードウェア割り込みなどの例外条件を含みますそれは#INTRピンまたは問題のCPUの同等の信号にラッチすることによって通知されます。現在一般的に使用されているIRQには2種類あります。

    • IRQライン、またはPINベースのIRQ:これらは、典型的には、静的にチップセットにルーティングされます。ワイヤまたはラインは、チップセット上のデバイスからIRQコントローラに送られ、デバイスによって送信された割り込み要求をシリアル化し、レースを防ぐためにCPUに1つずつ送信します。多くの場合、IRQコントローラはデバイスの優先度に基づいて複数のIRQを一度にCPUに送信します。非常によく知られているIRQコントローラの例は、すべてのIBM-PC互換チップセットに存在するIntel 8259コントローラチェーンであり、2台のコントローラを連動させ、それぞれレガシーIBM上で合計16個の使用可能なIRQ信号ピンに対して8個の入力ピンを提供します-PC。
    • メッセージベースの割り込み:これらは、割り込みデバイス、割り込み自体、およびベクタ情報に関する情報のために予約されたメモリロケーションに値を書き込むことによって通知されます。デバイスには、ファームウェアまたはカーネルソフトウェアのいずれかによってウィットになる場所が割り当てられます。次に、デバイスのバスに固有のアービトレーションプロトコルを使用してデバイスによってIRQが生成されます。メッセージベースの割り込み機能を提供するバスの例は、PCIバスである。
  • ソフトウェア割り込み:これはカーネルの注意が必要であることを示すために、CPU上で動作するソフトウェアによって通知割り込みです。これらのタイプの割り込みは、一般にシステムコールに使用されます。 x86 CPUでは、ソフトウェア割り込みを開始するために使用される命令は "INT"命令です。 x86 CPUはソフトウェア割り込みに使用可能な256の割り込みベクタのいずれかを使用できるため、カーネルは一般的に1つを選択します。たとえば、現代の多くのUnixでは、x86ベースのプラットフォーム上でベクトル0x80を使用しています。