カーネル内時限待ち

Linuxは、カーネル内で一定時間だけ待ち合わせをすることが可能である。上記タイマーリストとスケジューラを組み合わせるより実現している。

  • schedule_timeout(timeout)
    • timeout時間だけCPUを放棄する。 add_timer関数で、timeout時間後に下記process_timeout関数が 呼び出されるように登録し、スケジューラ(schedule関数)を呼ぶ。
    • nanosleepシステムコールの実現には、この機能を利用している。
  • process_timeout()
    • 上記処理でtimeout時間経過したプロセスを起床する。 処理内容はwake_up_process関数と同じ。
  • sleep_on_timeout()
    • sleep_on関数にタイムアウト機能を持たせたものである。 CPU放棄時に schedule_timeout関数を利用している。
    • interruptible_sleep_on関数に対応した、 interruptible_sleep_on_timeoutも存在する。

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