学习笔记
阻塞信号集(信号屏蔽字)概念
将某些信号加入集合,对他们设置屏蔽,当屏蔽某个信号后,再收到该信号,该信号的处理将推后(解除屏蔽后)
未决信号集概念
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
这篇博客探讨了信号处理中的关键概念,包括阻塞信号集和未决信号集。阻塞信号集用于标记被屏蔽的信号,防止其在特定期间递达。未决信号集则记录已产生但尚未处理的信号。当信号产生,如Ctrl+C触发的SIGINT,其在未决信号集中被标记,等待处理。信号处理有默认、自定义和忽略三种方式。通过`kill -l`可以查看所有可用信号。博客还介绍了信号的产生、递达和处理流程,以及信号的五种产生方式。
1762

被折叠的 条评论
为什么被折叠?



