Alarm()中間コンテキスト切り替えの動作は何ですか?

Alarm()中間コンテキスト切り替えの動作は何ですか?

プロセスがを実行してSIGALARM信号を設定する場合alarm(10)。これは、10秒後にオペレーティングシステムがSIGALARMを送信することを意味します。

コンテキスト切り替えがあるとどうなりますか?システムはコンテキスト遷移に関係なく信号を送信し続けますか?それとも、プロセスに戻って信号を送信する前に合計10秒間実行されるのを待ちますか?

答え1

alarm()リアルタイム集計、POSIXのテキストこれをはっきりと指摘してもLinuxのマニュアルページこれは明確に明記されていません。したがって、タイマーはプロセスが実行されているかどうかに関係なく実行されます。通常、プロセスがスリープしている場合、シグナルはプロセスを起動しますが、オペレーティングシステムは、実行する優先順位が高い他のプロセスがある場合は、プロセスを実際に実行しないことを決定することもできます。

しかもsetitimer()、プロセスの実行中にのみ実行されるタイマーを提供できます。

関連情報