割り込みメモ

割り込み

  • 入出力処理中のプロセスは、割り込みによって入出力完了が通知されるまで実行権を手放します。

  • 割り込み

    • ハードウェア割り込み
      • タイマー割り込み(タイマーコントローラが一定周期で割り込みを発生させる)
      • 外部装置から
      • プロセッサ間割り込み
      • NMI割り込み
    • ソフトウェア割り込み
      • intn命令
  • 例外 (CPUの動作自体によって引き起こされる事象)
    • フォルト
      • セグメントやページの保護機能
    • トラップ
      • INTO,INT3命令
    • アボート
      • 処理を継続できないようなエラー発生した時

割り込み、例外、それぞれにハンドラが設定してある。 通常の割り込みはマスクすることによってCPUが割り込みを受け取れないようにすることができる。

ハードウェア割り込みハンドラの起動

  • 外部装置
    • 割り込みコントローラに対して割り込み要求

  • 割り込みコントローラ
    • そのデバイスからの割り込みが禁止されていな ければ、CPUに対して割り込み要求を行います

  • CPU
    • 処理中断。割り込みエントリ関数do_IRQ()呼び出し

  • do_IRQ()
    • IRQ番号から、そのIRQに対応したirq-descテーブルのエントリを求めます。 このエントリに登録されている割り込みハンドラを実行するhandleJRQ_event関数は、登録されている 割り込みハンドラを呼び出します。複数の割り込みハンドラが登録されていた場合、そのすべてのハンドラ を呼び出します。

応答性の確保

応答性を必要とするものはハードウェア割り込みハンドラで実行 必要の無いものは後でまとめてソフト割り込みで実行

ハードウェア割り込み

  • デバイスドライバへの通知手段として利用。目的のデバイスドライバが用意している割り込みハンドラを呼び出す。
  • ドライバ読み込み時に、割り込み処理テーブルの各割り込み種別(IRQ)にドライバのハンドラを登録している
  • 一つのIRQのエントリに複数の割り込みハンドラを登録できる
  • マスク負荷割り込み(NMI)は必ず割り込むことができる。

ソフト割り込み

  • ソフトウェア割り込みとは異なる
  • ソフト割り込みは、ハードウェア割り込み処理が要因となり発生します。ソフト割り込みハンドラは、ハードウェア割り込みハンドラで行った処理を引き継ぎ、動作します。
  • ハードウェア割り込みと連携、効率的に動作する。
  • ハードウェア割り込みを禁止しない
  • ソフトウェア割り込みとは別枠
  • do_softir()

割り込みは素早くやる必要あり。よってソフト割り込みが利用される。 ソフトウェア割り込みでは普通にスケジューリングされる?