信号(signal)

信号本质

  信号是软件中断,是在软件层次上对中断的一种模拟

信号产生(来源)

1.硬件来源:比如我们按下了键盘或者其它硬件故障;

2.软件来源:最常用发送信号的系统函数是kill, raise, alarm和pause;

信号递送

  当导致产生信号的事件发生时,内核就产生一个信号。信号产生后,内核通常会在进程表设置某种形式的标志,当内核设置了这个标志,我们就说内核向一个进程递送了一个信号。

信号未决

  信号产生和递送之间的时间间隔称为信号未决。

信号排队

  每个进程有一个信号屏蔽字,用它来选择阻塞某些信号(unix提供sigprocmask函数可以获得和更改屏蔽字),对于被阻塞的信号,如果进程对该信号的动作是捕捉或系统默认(即不是忽略),则内核将为该信号保持为未决状态,直到该信号解除阻塞或将对该信号的动作更改为忽略。在这之前,如果这种信号发生了多次,则发生未决信号排队

不可靠信号与可靠信号

不可靠信号

早期unix系统的信号为不可靠信号,它们有下面两点特性(问题):

1.进程对某种信号的处理方式进行设置后(signal函数),第一次接收到这种信号,进程按所设置的方式处理,在这之后,这种信号的处理方式就会被重置为系统默认值

2.信号可能会丢失:对于阻塞信号,不发生未决信号排队,信号阻塞解除后,仅

猜你喜欢

转载自www.cnblogs.com/Joezzz/p/9815748.html