一般例外

Intel CPUは例外種別毎に独立したエントリを設けることができる。linuxでは、起動する例外ハンドラをセットした後は、全て同じ例外エントリルーチンを共用する。上記ページフォルトもこのルーチンを共用している。

Linuxにとって特に意味を持たない例外は、例外を発生させたプロセスに送るシグナルを生成するだけである。

      各種例外エントリ()
          例外ハンドラ情報をセット
          goto error_code

      error_code:
          レジスタのセーブ(割込み発生時と同じように積み替える)
          例外種別に応じた例外ハンドラを呼び出す
      ret_from_exception:
          if(BHハンドラがある) BHハンドラ実行(do_bottom_half関数)
          if(ユーザモードへの復帰)
              goto ret_with_reschedule (system_callの戻りの途中へジャンプ)
          レジスタのリカバ

(NIS)HirokazuTakahashi
2000年06月11日 (日) 22時29分57秒 JST
1