省電力システムコールとその時間パラメータ

省電力システムコールとその時間パラメータ

sleep() 関数を呼び出す C プログラムを書いているとしましょう。たとえば、sleep(7)を呼び出すと、呼び出しスレッドは7秒間休止状態になります。

私の質問は:各プロセスがCPUに独自の量子時間を持っていることを考えると(継続的に実行されているプロセスが多いため)、スレッドが私たちの時間/時計の7秒後に目覚めますか、それとも長い時間がかかりますか?

答え1

sleep(3)呼び出しが返されるようにする定義今後存在するまたは後ろに指定時間:

説明する sleep() 数秒が経過するか無視されない信号が到着するまで、呼び出しスレッドを休止状態にします。

だから我々はこれらの可能な状況を持っています

  1. 信号がキャッチされず、通話が中断されました。sleep()指定された時間より早く直ちに返却してください。
  2. 通話は正常に完了しましたが、システムが忙しくてしばらくの間ジョブをスケジュールできません
  3. 呼び出しは十分に完了し、実行キューに戻され、すぐに実行されます。

答え2

POSIXは、少なくともあなたが要求したタスクを実行するための成功し、中断のない睡眠を保証します。

http://pubs.opengroup.org/onlinepubs/009604599/functions/sleep.html

Linuxでは、1)丸め2)スケジューラがプロセス/スレッドをCPUに入れるのを待つ3)停止状態の時間のために時間がかかることがあります。 http://man7.org/linux/man-pages/man2/nanosleep.2.html

関連情報