信号屏蔽--pending表

本文介绍了Linux内核中信号的三种状态:递达、未决和阻塞。信号未决表示信号等待递达,阻塞则意味着信号不会递达直至解除阻塞。每个进程的PCB包含block、pending和handler表来管理信号。信号集(sigset_t)用于存储末决和阻塞标志,信号屏蔽函数如sigemptyset和sigprocmask用于管理和读取进程的信号屏蔽字。通过sigpending函数可以获取当前进程的末决信号集。
摘要由CSDN通过智能技术生成

1.信号在内核中的三种表示
(1)信号递达:实际执行信号的处理动作;

(2)信号未决(pending):信号从产生到递达的状态,是一种记录状态;

(3)阻塞信号(block):被阻塞的信号不会递达,它在产生时处于未决状态,直到进程解除对这个信号的阻塞,才会执行递达,但不会立即递达;

阻塞与忽略的不同:忽略是在信号递达后的处理动作,而被阻塞的信号是不会递达的;
2.信号在内核中的表示示意图:这里写图片描述
(1).每个PCB都包含三张表:block,pending,handler,block表和pending表的0(未递达),1表示是否收到信号,block表的0(未阻塞),1表示是否被阻塞;
(2).每个信号都有阻塞标志位block,末决标志位pending和一个处理动作handler;
(3).信号产生时,内核在PCB中设置末决标志位,当信号递达时才清除该标志位;
上述图中:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值