前边已经详细介绍了信号的产生,经常说到的一句话应该是向进程发送一个信号,但是进程不是像人,可以自己去感知信号。那么,到底是怎么向通过什么方式将进程发送信号的呢?怎么样算是给进程发送了一个信号呢?
和红绿灯一样,信号其实也就是一种规定。在现实生活中,只有那些在相应领域里有着绝对话语权的人才能给出规定,比如一所学校的校长,能制定校规。那么电脑里边谁能制定规则呢?操作系统,毫无疑问,只有内核能制定规则。操作系统是不信任任何用户的,所以用户的权限永远都比内核的权限要低很多,而有的操作仅仅依靠用户的那点权限是没法完成的,还得依靠内核来处理。所以,信号的规定是在内核里边,进程的信号都是操作系统通过内核发送的。那么,具体是怎样发送的呢?
我们都知道每个进程都有一个进程控制块(PCB),控制了一个进程PCB就相当于控制了这个进程。操作系统就是通过控制进程的PCB来控制进程的。前边已经说过了普通信号是有
31个
的,如果用一个比特位来代表一个信号,那么,使用一个整型(32位机中整型就是4个字节,总共有32个比特位)就足够表示了。
介绍几个与信号相关的概念
实际执行信号的处理动作叫做信号
递达(Delivery)
信号从产生到递达之间的状态,称为信号
未决(Pending)。
当进程收到一个信号时,并不是立刻就去处理,而是等到合适的时间再去处理。对于这个合适的时间,后边再做详细的介绍。
进程可以