サスペンドシグナル

あるプロセスの実行を一時的に中断状態(TASK_STOPPED)にするためのシグナルである。このシグナルには次の4種類がある。ttyドライバから生成されるSIGSTP, SIGTTIN, SIGTTOUシグナル3種類とkillシステムコールから明示的に送られる SIGSTOPシグナルである。

SIGCONTシグナルは、中断状態(TASK_STOPPED)のプロセスを再起動するためのシグナルである。

それぞれのシグナルは以下のように動作する。

  • SIGTSTP, SIGTTIN, SIGTTOU, SIGSTOPシグナル
    • シグナル無視(SIG_IGN)指定の場合は何も行わない(send_sig関数)。
    • シグナルを受信したプロセスは、シグナル受信処理(do_signal関数)中 でTASK_STOPPED状態になり、処理を中断する。(schedule関数でCPUを 明け渡す)
  • SIGCONTシグナル
    • シグナル送信処理(send_sig関数)中で、TASK_STOPEDの プロセスを起こす(TASK_RUNNINGにする)。
    • SIGCONTを送られたプロセスは、シグナル受信処理(do_signal関数)の 中断点から処理を再開する。 SIGTSTP, SIGTTIN, SIGTTOU, SIGSTOPに対応するシグナルハンドラ 登録があれば、そのハンドラの起動を行う(do_signal関数)。 viをサスペンド後リジュームしたときのリドローなどで利用する。

(NIS)HirokazuTakahashi
2000年12月09日 (土) 23時55分06秒 JST
1