クロックハンドラ

Linuxの時計処理は二つに分けられている。一つがハードウェア割り込みハンドラとして動作する部分であり、もう一つがBHハンドラとして動作する部分である。

割り込みハンドラとして動く時計(do_timer)はjiffiesと呼ばれるシステム起動からの時刻を数える変数を更新以外の処理は、全て遅延処理として実現している。

  • システム起動からの時刻jiffiesの更新
  • 時計処理本体(timer_bh関数)の起動要求
  • タスクキューtq_timerの起動要求

クロック処理本体(timer_bh関数)はBHハンドラとして起動される。この関数では以下にあげた処理を実行する。割り込みハンドラと異なり大きく処理が遅延させられる事もありうる。その場合、このBHハンドラ(timer_bh関数)が起動される前に、割り込みハンドラ(do_timer関数)が複数回動いていることもあるので、その場合timer_bh関数では数クロック分の処理をまとめて行わねばならない。

  • カレンダ(GMT時刻)の更新(update_wall_time関数)
  • カレントプロセスに対する処理(update_process_times関数)
    • プロファイリング
    • 統計情報収集
    • 再スケジューリング要求
  • タイマーリストの管理および実行(run_timer_list関数)
  • タスクキューtq_timerの起動要求(tqueue_bh関数)
img14.gif

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