マニュアルページには、アラームが保留alarm() arranges for a SIGALRM signal to be delivered to the process in _seconds_ seconds.
されている間に誰か(ユーザーやなど)がシステム時計を変更するとどうなるかと書かれています。ntpd
アラームの残り時間はどのように計算されますか?
1 に答える
3
まず第一に、ほとんどの責任ある管理者とxntpdは、通常、時間を巨大なチャンクで調整することはありません。たとえば、これを行うとcronが壊れます。
しかし、それを行う場合でも、alarmはITIMER_REALでsetitimer()を使用します。つまり、非常に多くのクロックティックを待機します。システムクロックが100万Hz、毎秒100万ティックで動作していると仮定します。さて、2秒は200万のリアルタイムクロックティックであり、システム時間の設定を再確認します。setitimer()は、カウンターをゼロまでデクリメントし続けます。ゼロに達すると、SIGALARMが発生します。他のプロセスがCPUを持っている可能性があるため、これの長辺にはかなりのたるみがある可能性があります。alarm()は、最小n秒でオフになることが保証されています。実際の経過時間はもう少し長くなる可能性があります。
システムタイムブレイクをいじると、AppWorxやcronなどのスケジューリングソフトウェアが壊れます。
于 2010-11-24T18:02:57.323 に答える