linux信号实现机制

进程p2向进程p1投放信号,需要经过linux内核,投放的时候,linux内核向p1的task_struct中的信号向量表中添加相应的未决信号,然后等到p1陷入内核要回到用户态时,检查这个信号向量表,检查到里面有未决信号,就从内核态跳到相应的用户态的处理函数,处理完后,又从用户态跳回到内核,再从内核跳到正常执行的用户态位置继续执行。
linux信号实现机制

linux信号实现机制
上面所说的在内核的检查时机,包括用户的系统调用,中断而由用户态进入内核态,由于信号要等到进入内核态才会检查到,所以,如果在没有系统调用的情况下,用等到时间中断到来,进程从内核态要切回用户态的时候才会检查,所以,信号存在延迟。