進程p2向進程p1投放信號,需要經過linux內核,投放的時候,linux內核向p1的task_struct中的信號向量表中添加相應的未決信號,然後等到p1陷入內核要回到用戶態時,檢查這個信號向量表,檢查到裏面有未決信號,就從內核態跳到相應的用戶態的處理函數,處理完後,又從用戶態跳回到內核,再從內核跳到正常執行的用戶態位置繼續執行。
上面所說的在內核的檢查時機,包括用戶的系統調用,中斷而由用戶態進入內核態,由於信號要等到進入內核態纔會檢查到,所以,如果在沒有系統調用的情況下,用等到時間中斷到來,進程從內核態要切回用戶態的時候纔會檢查,所以,信號存在延遲。