信号的发送的对象是pcb
task_struct{
int signal; //0000 0000 .... 0001
进程pcb中存在int型的signal来保存信号,用位图的方式,比特位的0,1表示是否收到信号
比特位位置表示信号的编号。
发信号的本质就是修改task_struct的信号位图对应的比特位。
信号的作用是为了给用户层传递信息
信号的保存的原因:进程收到信号不会立即处理这个信号,要有个时间窗口
实时信号:立即处理,不能丢失
信号的保存
信号递达,信号未决,信号阻塞
信号递达(delivery):实际执行信号的处理的动作,即执行。
信号未决(pedding):信号从产生到递达之间的状态,就是把修改对应比特位,即信号传到进程。
进程可以选择阻塞(Block)某个信号,被阻塞的信号将处于pending状态,解除阻塞才进入递达状态。
忽略是递达后的状态和block不一样,忽略和自定义,默认是递达后三种处理方法
用户提供的方法可以覆盖handler数组的自定义方法