信号

                                                                     进程信号

1 信号是什么

信号是一个软件中断,是传递给进程的一个通知,通知进程发生了某件事情,让它把手头的事情先放下,赶紧去处理刚刚通知的这件事情.

2 信号的种类

信号总共有62种—这62种信号又分为两大类型.

一种叫做不可靠信号(信号编号为1—31).
一种叫做可靠信号(信号编号为34—64).
查看信号的命令 kill -l
在这里插入图片描述
3 信号的生命周期

1信号的产生–>2在进程中的注册–>3注销信号–>4处理信号

1信号的产生:

信号的产生方式分为两种,一种叫做硬件产生,另一种叫做软件产生
硬件产生: 我们通过键盘输入的方式从终端发出信号:例如: ctrl +c(产生 SIGINT信号) ctrl +| ctrl +z( Ctrl-Z产生SIGTSTP信号(可使前台进程停止))
软件产生:用户通过自定义函数或者调用系统函数来缠上 例如: kill -signum -p pid kill(pid,signum) raise(signum) abort()
alarm(nsec)
2 信号在进程中的注册
注册: 信号产生以后,会传递给进程,在进程pcb中做标记,标记进程收到了那些信号

pcb中有一个用来注册信号的的结构体叫未决(pending),它用数字0 和 1来标记信号的注册情况
1 :表示已经注册 0 : 表示未注册
pcb中有一个用来存储待处理信号的链表叫做sigqueue ,每注册成功一个信号,sigqueue链表就会多一个节点.

未决(pending): 是一种状态—信号从产生到处理之前所处的状态
根据信号类型的不同,信号的注册又分为可靠信号的注册和不可靠信号的注册
2.1 不可靠信号的注册

首先当一个不可靠信号传递到进程需要进行做注册时,先会判断pcb中的pending位图相应的信号是否已经注册过(位图是否已经置为1),
若已经注册(位图标记显示为1),则,不做任何操作(后续的信号丢失,事件丢失,耽误事,不靠谱).若未注册,就将位图中的标记数改为1, 并向
sigqueue链表中添加一个信号节点.

2.2 可靠信号的注册

当一个可靠信号传递到进程需要进行注册时,不管信号是否已经注册,都会向sigqueue链表添加一个新的信号节点(事件不会丢失)

3 信号在进程中的注销

非可靠信号: 节点只有一个,注销就是删除节点,删除节点后将位图置为0状态
可靠信号: 节点可能有多个,注销就是删除一个节点,判断sigqueue链表中是否有相同信号的节点.
如果有,位图显示不变,依然需要标记这个信号待处理,如果没有,就将位图显示置为0.

4 信号的处理
进程收到信号以后,并不是立马去处理,而是选择一个合适的时间去处理信号.
当进程从内核态返回到用户态的时候,才会处理

进程如何从用户态切换到内核态: 中断/发起系统调用/程序异常/
进程运行的代码如果是用户自己写的代码或者是库函数就说明进程运行在用户态空间中
信号的处理方式:
1 默认处理方式-----按照既定的方式处理(按既定方案办);
2 忽略处理方式-----处理动作是什么都不干;
3自定义处理方式—用户自己确定信号如何处理—自定义信号的处理函数替换原有的处理函数
在这里插入图片描述
4如何修改信号的处理方式?

sighandler_t signal(int signum,sighandler_t handler);
  // signum:  信号编号---替换signum这个信号的处理函数
  // handler: 函数指针  用户传入的处理函数
          SIG_DFL:信号的默认处理动作
          SIG_IGN:信号的忽略处理动作
 typedef void(*sighandler_t)(int);

5 自定义处理方式信号的捕捉流程

如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号

6 信号的阻塞
信号的阻塞发生在信号注册以后,信号的阻塞指的是信号可以注册,但是暂时对其不做任何处理,简单来说一个信号若是被阻塞,它就不会递达信号的处理阶段.
靓词: 递达 —对信号的处理

特别注意:信号阻塞和信号忽略处理方式不同,信号阻塞是指信号还没有进入到处理阶段,而信号的忽略处理方式是指信号已经进入到信号处理阶段,并且对它做了"忽略处理".
在PCB中有一个信号集叫做block-----阻塞信号的集合----标记那些暂时不用处理的信号.
在这里插入图片描述

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值