内核为每个进程维护了一组位图32位,至少两个位图,mask:信号屏蔽字,表示当前信号状态 pending,记录当前进程收到哪些信号。进程为单位。从内核角度来讲,内核只有一个概念 进程(我们所说的线程) 打印星号的程序 mask的值一般情况下都为1,pending一般都为0
时间片耗尽,抱着你的现场压栈保存执行现场,返回地址。在一个队列当中,很多进程都在排队,调度到你时,从Kernel态到user态,用mask按位与pending ,看是否有信号。
- 为什么会丢失?
- m1p0初始状态 m1 p1 收到信号 去响应的过程00
- 来1万个信号,也是置1个1,位图来保存的
信号从接收到响应有一个不可避免的延迟,光收到体现在位图上,要有中断来打断才能够去内核排队,从内核回到用户 按位与才看得到。