Show page source of internal22-50-割り込みエントリ #25550

[[PageNavi(internal22-navi)]]

{{{ comment
h2w-title:割り込みエントリ
}}}
 

= 割り込みエントリ = #SECTION02520000000000000000

割り込みが発生するとCPUは自動的にカーネルモードに移行し、割り込みエントリの先頭に処理を移す。割り込み種別に応じた割り込みハンドラの実行により、割り込まれたプロセスの状態に影響が出ている場合があり、その場合、それに対応した処理を行う。

  1.  BHハンドラが実行待ちになら、BHハンドラを呼び出す。
  1.  割り込みからの復帰先がユーザモードで、かつこのプロセスに対し 再スケジーリング(プリエンプト要求)が発生していたら、CPUを明け渡す。
  1.  割り込みからの復帰先がユーザモードで、かつこのプロセスが シグナルを受けている場合、シグナル処理の準備を行う。

カレントプロセスに対し、再スケジューリング要求やシグナルが発生している場合であっても、割り込み復帰先がカーネルモード…システムコール処理中、割り込み中(割り込みがネストしている)…の場合は、処理をスキップする。このイベントはプロセスがユーザモードに復帰する時点で処理される。(このタイミングでは処理を行うと、カーネルデータに矛盾を生じる)

{{{
     common_interrupt()
          レジスタのセーブ
          割り込みハンドラ実行(do_IRQ関数)
          if(ユーザモードへの復帰)
              goto ret_with_reschedule (system_callの戻りの途中へジャンプ)
          レジスタのリカバ

     do_IRQ()
          割り込み種別に対応した割り込みハンドラの呼び出し
          if(BHハンドラがある) BHハンドラ実行(do_bottom_half関数)
}}}

----

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

[[PageNavi(internal22-navi)]]