Linux进程信号笔记总结

信号:

作用:为了通知我们某个事件的发生

就是一个软中断,通知进程发生某件事情,打断进程当前的操作,去先处理这个事件

必须认识信号,信号不是立即处理的。而实现记录下来,选择一个合适的事机处理

信号必须有默认的处理方式,当然也可以改变。信号是可以被阻塞,暂时不处理

信号的周期性:生命周期:产生》》注册》》注销》》处理

linux信号的种类:kill -l 62个--两类(可靠/非可靠   实时/非实时)

产生:硬件中断:程序异常;软件中断(kill raise abort alarm sigqueue)

coredup:程序异常崩溃时记录运行数据;调试;ulimit -c,

注册:添加节点

分为可靠信号的注册:不管信号的位图是否为1,(信号是否注册)都要添加一个新的节点

与非可靠信号的注册:若位图为1,代表信号已经注册过了,因此什么都不做(第二次到来的信号丢弃)

注销:删除节点,位图置0

分为可靠信号的注销:删除节点,若仍有相同信号的节点,就不修改位图k,否则将位图置0

非可靠信号的注销:删除节点,位图直接置0

处理:默认 忽略  自定义   (signal sigaction) 信号的捕捉流程--》信号被注册后如何处理(针对自定义信号)

信号是再进程从内核态运行返回用户态的时候,进行处理的;

阻塞:暂时阻塞信号被递达;pcb中有一个blocked信号位图,这个位图用于标记有哪些信号被阻塞

task_struct 中有一个sigset_ blocked 位图与pending进行异或,就能将被处理的信号找出来

从pening中拿出信号,再在blocked中看一下是否被处理

信号的递达:一个动作,描述的是信号的处理

信号的未决:一种状态,描述的是信号从注册成功到处理之前的状态

信号是会打断当前阻塞操作

重入/不可重入函数:竞态条件

一个函数在多个执行流的竞争条件下运行,如果多个执行流的争抢执行不会对其他执行流造成影响,这个函数就称之为可重入函数,否则就是一个不可重入函数

如果一个函数内部涉及到参与全局数据的修改,并且这个操作是不受保护的,非原子的,那么这个函数就是一个不可重入函数;否则就是可重入函数

 

volatile:是一个关键字,用于修饰一个变量,保持这个变量的内存可见性,防止编译器过度优化

SIGCHLD信号:

    僵尸进程是怎么产生的?

我们前面避免僵尸进程的,是创建了子进程之后就进行进程等待,一直坚持等待是因为不知道什么时候操作系统的通知才能过来,因此一直进行等待;如果知道子进程的退出通知是什么时候来的,就不需要一直进行等待;操作系统通知父进程其实就是通过SLGCHLD信号进行通知

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
进程信号的处理过程:(1)在目的进程中安装该信号,即设置如果目标进程捕获该信号时执行的操作代码。Linux采用sigal和sgation系统调用来完成。因信号是异步事件的典型应用,产生信号进程而言是随机出现的,因此,进程不能预先知道信号会不会发送到当前进程,也不能预先知道信号什么时候发送到当前进程,因此只能在信号到来前告诉内核“在此信号发生时,请执行下列操作”,即所谓的安装信号。 (2)信号被某个进程产生,同时设置此信号的目标进程(一般为目标进程的pid),然后由操作系统管理。Linux采用kill()、arise()、alarm()等系统调用来实现。 (3)信号在目的进程被注册。操作系统将信号添加到目的进程的PCB相关的数据结构中。在每个进程的PCB (task_struct结构)中有一个未决信号的数据成员。 (3)信号进程中的注销。进程在执行信号相应处理函数之前,首先要把信号进程中注销。如果存在未决信号等待处理且该信号没有被进程屏蔽,则在运行相应的信号处理函数前,进程会把信号在未决信号链中占有的结构卸掉。 (5)信号生命终止。进程注销信号后,目的进程根据当前进程对此信号设置的处理方式,暂时终止当前代码的执行,保护上下文,转而执行信号处理函数,即捕获该信号,执行完成后再恢复到被中断的位置继续执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值