学习笔记
阻塞信号集(信号屏蔽字)概念
将某些信号加入集合,对他们设置屏蔽,当屏蔽某个信号后,再收到该信号,该信号的处理将推后(解除屏蔽后)
未决信号集概念
1.信号产生,未决信号集中描述该信号的位立刻翻转为1,表信号处于未决状态。当信号被处理对应位翻转回0.这一时刻往往非常短暂。
2.信号产生后由于某些原因(主要是阻塞)不能递达,这类信号的集合称之为未决信号集,在屏蔽解除前,信号一直处于未决状态。
阻塞信号集和未决信号集都在PCB中
截图1
未决信号集和信号屏蔽字的本质都是位图
ctrl + c 会得到2号信号(终止信号)时候,2号信号的未决信号集为0->1(默认为0)
截图2
内核发现2号信号的未决信号集中的2号信号为1(未决)
内核马上对信号进行处理
信号的处理有三种
1.默认
2.自定义
3.忽略
处理完之后,内核将负责将该信号翻转成0,信号处理完了。
截图3
产生信号
发送信号
递达
处理结束
这个过程就结束了。
假如说将阻塞信号集设置为屏蔽,屏蔽信号集中的2号信号为1,
代表被阻塞不能递达,一直处于未决态。需要等信号屏蔽字修改(1-》0)
这个时候,未决信号集才有机会翻转为0
注意未决信号集也变为1
截图4
产生信号方式有5种
1.按键
2.系统调用产生
3.软件条件产生
4.硬件异常产生 总线错误
5.命令产生
信号递达之后,就会被处理掉。
未决可以理解为:信号产生到信号递达之间的状态
递达:产生到送达到进程。这个时候信号会直接被处理掉
信号的处理有三种
1.默认
2.自定义(捕捉)
3.忽略
可以通过kill-l 查看信号有哪些
阻塞信号集本质是位图,用于记录信号被屏蔽的状态,一旦
未决信号在未被屏蔽解除之前,一直处于未决状态。
未决信号集本质也是位图,用于记录信号的处理状态。
该信号集中的信号表示已经产生,但是尚未被处理。
查看常用的信号有哪些
通过kill -l 查询
$kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX



