0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux信号事件发生的两个来源

FPGA之家 来源:嵌入式软件开发交流 作者:young 2021-06-18 15:09 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

什么是信号

信号可以理解为软件中断,是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是差不多的。信号是异步的,一个进程不必通过任何操作来等待信号的到达。信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。

谁来产生信号

信号事件的发生有两个来源:

(1) 硬件来源,比如我们按下ctrl+c,会产生SIGINT信号。

(2) 软件来源,比如我们调用alarm函数来产生SIGALRM信号。

常用信号

Linux信号的编号是从1-64,其中32和33空缺,没有对应的信号。通过kill -l 可查看所有的信号。

1~31之间的信号叫做不可靠信号, 信号可能会丢失, 也叫做非实时信号。

34~64之间的信号叫做可靠信号, 信号不会丢失, 也叫做实时信号。

信号响应方式

信号有如下三种响应方式:

(1) 忽略信号,即对信号不做任何处理,但是有两个信号不能忽略,即 SIGKILL 及 SIGSTOP。

(2) 捕捉信号,定义信号处理函数,当信号发生时,执行相应的自定义处理函数。

(3) 执行缺省操作,Linux 对每种信号都规定了默认操作。

信号处理过程

信号处理的大致流程如下:

信号产生 -》 信号注册 -》 信号在进程中注销 -》 信号处理函数执行完毕

我们主要讲一下“信号注册” 和“信号在进程中注销”。其他两个都比较好理解。

信号注册指的是在目标进程中注册,该目标进程中有未决信号的信息。啥叫未决信号呢,实际执行信号的处理动作称为信号递达,信号从产生到递达之间的状态,称为信号未决。

先来看一下对应的结构体:

struct sigpending{ //未决信号链的头部与尾部 struct sigqueue *head, *tail; //未决信号集 sigset_t signal;};

struct sigqueue{ struct sigqueue *next; //信号所携带的信息 siginfo_t info;}

信号注册的过程就是将信号值加入到未决信号集siginfo_t中,将信号所携带的信息加入到未决信号链的某一个sigqueue中去。

因此,对于可靠的信号,可能存在多个未决信号的sigqueue结构,对于每次信号到来都会注册。而不可靠信号只注册一次,只有一个sigqueue结构。

只要信号在进程的未决信号集中,表明进程已经知道这些信号了,还没来得及处理,或者是这些信号被阻塞。

信号在进程中注销是指进程已经接收到信号了,会在链表中移除。在进程的执行过程中,每次从系统调用或中断返回用户空间的时候,都会检查是否有信号没有被处理。如果这些信号没有被阻塞,那么就调用相应的信号处理函数来处理这些信号。可靠信号和不可靠信号的处理有所不同:

不可靠信号:由于不可靠信号在未决信号链中只有一个sigqueue结构,因此将它删除的同时,也会将信号从未决信号集中删除。

可靠信号:由于可靠信号在未决信号链中可能有多个sigqueue结构,如果只有一个,也将信号从未决信号集中删除掉。如果有多个则不从未决信号集中删除信号,注销完毕。

原文标题:Linux信号及工作原理

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11821

    浏览量

    219595
  • 信号
    +关注

    关注

    12

    文章

    2935

    浏览量

    80424

原文标题:Linux信号及工作原理

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    图像上两个多边形的ROI区域,如何获得这两个ROI区域重合部分的ROI

    labview中,图像上两个多边形的ROI区域,如何获得这两个ROI区域重合部分的ROI
    发表于 03-16 14:03

    函数信号发生器和任意波形信号发生器区别详解

    函数发生器提供了一预置列表,里面列出了它可以生成的波形或码型。 在函数发生器中,用户可以更改频率、幅度和偏移等波形参数,还可添加简单的失真。 任意波形发生器更为复杂,能够仿真真实世界
    的头像 发表于 02-09 16:24 402次阅读
    函数<b class='flag-5'>信号</b><b class='flag-5'>发生</b>器和任意波形<b class='flag-5'>信号</b><b class='flag-5'>发生</b>器区别详解

    两个RS485-Modbus主站如何通讯

    本产品能很好解决Master-1主站向模块写入数据,Master-2主站读取数据;Master-2主站向模块写入数据,Master-1主站读取数据。由此解决两个主站之间的互相读通信难题。
    发表于 02-08 15:32 0次下载

    智能化的函数任意波形信号发生信号发生器品牌 任意波形信号发生

    信号发生
    知道点啥
    发布于 :2026年01月30日 10:26:14

    可编程的多路脉冲信号发生器 高速脉冲信号发生器 1hz脉冲信号发生

    信号发生
    知道点啥
    发布于 :2026年01月30日 10:24:38

    数字延迟脉冲发生器 脉冲延迟信号发生器 多通道脉冲信号发生

    信号发生
    jf_47371611
    发布于 :2026年01月26日 13:54:25

    曙光存储连续斩获两个行业奖项

    近期,曙光存储连续斩获两个行业奖项,自研技术产品在国产突破、AI行业应用等方面的成果获得广泛关注。
    的头像 发表于 01-15 16:28 2736次阅读

    硬件SPI两个CS操作两个norflash,怎么互斥操作两个norflash?

    硬件SPI两个CS操作两个norflash,怎么互斥操作两个norflash,有一norflash被模拟成U盘,会在中断中操作spi。
    发表于 09-26 06:18

    LMK03328 具有两个独立 PLL 的超低抖动时钟发生器系列技术手册

    LMK03328器件是一款超低噪声时钟发生器,具有两个集成VCO的小数N频率合成器、灵活的时钟分配和扇出,以及存储在片内EEPROM中的引脚可选配置状态。该器件可为各种多千兆串行接口和数字器件生成
    的头像 发表于 09-14 09:37 1176次阅读
    LMK03328 具有<b class='flag-5'>两个</b>独立 PLL 的超低抖动时钟<b class='flag-5'>发生</b>器系列技术手册

    基本半导体连获两个行业奖项

    近日,基本半导体凭借在碳化硅模块领域的突出表现,连获“国产SiC模块TOP企业奖”和“年度优秀功率器件产品奖”两个行业奖项。
    的头像 发表于 09-05 16:31 1245次阅读

    图中两个按键开关是两个干簧管,为什么不直接对GND设计来检测这个干簧管通断呢?

    图中两个按键开关是两个干簧管,为什么不直接对GND设计来检测这个干簧管通断呢? 这样设计的原理是什么?
    发表于 06-17 06:30

    看到STM8L152用两个IO用两个或非门检测两个通断,是什么原理呢?

    图中两个按键开关是两个干簧管,为什么不直接对GND设计来检测这个干簧管通断呢? 这样设计的原理是什么?
    发表于 06-12 06:25

    当CY7C65215在两个通道上配置为 SPI 和 I2C 时,能否在Linux系统中看到两个设备?

    我的客户想知道,当 CY7C65215 在两个通道上配置为 SPI 和 I2C 时,他能否在 Linux 系统中看到两个设备。
    发表于 05-26 06:27

    ADAU1787四ADC、两个DAC、带音频DSP的低功耗编解码器技术手册

    ADAU1787 是一款具有四输入和两个输出的编解码器,其中整合了两个数字信号处理器 (DSP)。从模拟输入到 DSP 内核再到模拟输出的路径已针对低延迟进行优化,适用于噪声消除耳机。通过加入少量无源组件,ADAU1787 提
    的头像 发表于 05-12 14:57 1769次阅读
    ADAU1787四<b class='flag-5'>个</b>ADC、<b class='flag-5'>两个</b>DAC、带音频DSP的低功耗编解码器技术手册