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
    +关注

    关注

    87

    文章

    11294

    浏览量

    209344
  • 信号
    +关注

    关注

    11

    文章

    2790

    浏览量

    76731

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

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

收藏 人收藏

    评论

    相关推荐

    从时域和频域两个角度对信号进行分析

    一般来说,我们会从时域和频域两个角度,分别对信号进行分析。 时域 时域是真实世界存在的域,按时间顺序呈现。例如,在某个时钟信号的时域图中,可以观察到两个重要的参数,波形的周期和上升沿:
    的头像 发表于 11-19 10:18 712次阅读
    从时域和频域<b class='flag-5'>两个</b>角度对<b class='flag-5'>信号</b>进行分析

    如何用块ad9851实现输出正交的两个余弦信号

    我们用ad9851输出两个正交的两个余弦信号,是只要我们用同一时钟信号给他们输入clk信号
    发表于 09-02 07:26

    单稳态触发器的两个工作状态是什么

    单稳态触发器是一种数字逻辑电路,广泛应用于各种电子设备和系统中。它具有两个工作状态:稳定状态和暂态状态。 单稳态触发器的工作原理 单稳态触发器是一种具有两个稳定状态的触发器,其中一状态是稳定状态
    的头像 发表于 08-22 10:11 475次阅读

    触发器的两个稳定状态分别是什么

    触发器作为数字电路中的基本逻辑单元,具有两个稳定状态,这两个状态通常用于表示二进制数码中的0和1。
    的头像 发表于 08-12 11:01 1052次阅读

    双稳态电路的两个稳定状态是什么

    双稳态电路是一种具有两个稳定状态的电子电路,广泛应用于数字电路、通信系统、存储器等领域。 双稳态电路的基本概念 双稳态电路是一种具有两个稳定状态的电路,即在没有外部输入信号的情况下,电路可以保持在
    的头像 发表于 08-11 15:00 1336次阅读

    双稳态触发器的两个基本性质是什么

    的定义 双稳态触发器是一种具有两个稳定状态的逻辑电路,通常由两个交叉耦合的反相器或门电路构成。在没有外部输入信号的情况下,双稳态触发器可以保持在两个稳定状态之一,即“0”状态或“1”状
    的头像 发表于 08-11 10:08 666次阅读

    两个路由器ip地址冲突怎么解决

    两个路由器的IP地址发生冲突时,会导致网络连接不稳定或无法连接。以下是解决两个路由器IP地址冲突的步骤: 确定冲突的IP地址 首先,需要确定两个路由器的IP地址是否冲突。可以通过以下
    的头像 发表于 07-09 11:35 5739次阅读

    两个PLC之间如何交互信号

    在工业自动化系统中,PLC(Programmable Logic Controller,可编程逻辑控制器)是核心的控制设备。在许多复杂的应用场景中,需要两个或多个PLC之间进行信号交互,以实现更高
    的头像 发表于 06-14 16:57 4276次阅读

    AD4938正负输入端分别输入两个信号,对这两个信号做减法输出 ,这种输入是非差分信号吗?

    AD4938全差分放大器 ,正负输入端分别输入两个信号(非差分关系),对这两个信号做减法输出 ,这种输入是非差分信号,可以这样应用吗 ?
    发表于 05-29 08:07

    请问ad9171的两个输出端口是否支持同时输出两个不同的频率?

    你好,关于AD9171芯片我有一问题 ,数据手册显示该芯片具有两个输出通道,芯片内部有DAC0和DAC1共两个DAC通道,那么这两个通道是否支持同时输出
    发表于 05-28 06:20

    蓝牙Mesh模块组网时是一信号还是两个信号

    随着科技的不断发展,智能家居、物联网等新兴领域越来越受到人们的关注。在这个领域中,蓝牙Mesh组网模块作为一种关键技术,其性能和作用备受瞩目。那么,蓝牙Mesh组网模块究竟是一信号还是两个
    的头像 发表于 05-24 15:14 958次阅读

    两个铜片可以形成原电池吗

    两个铜片本身不能形成原电池,因为原电池的工作原理依赖于两个不同电位的电极材料之间的氧化还原反应。
    的头像 发表于 05-21 16:23 944次阅读

    arcgis中如何关联两个属性表

    在ArcGIS中,关联两个属性表是一重要的操作,可以通过此操作将两个表中的数据关联起来,以便进行分析和查询。下面是详细介绍如何在ArcGIS中实现属性表的关联。 首先,我们需要明确两个
    的头像 发表于 02-25 11:01 4191次阅读

    proteus信号发生器怎么设置方波

    ,用于模拟和调试电子电路。它具有丰富的虚拟仪器库,包括示波器、信号发生器、函数发生器等。Proteus信号发生器是其中之一,可以模拟各种类型
    的头像 发表于 02-23 16:44 9853次阅读

    两个电位器地控制一变频器,如何接线?

    两个电位器地控制一变频器,如何接线? 接线方式如下: 1. 首先,明确需要使用的电器设备。在这个场景中,我们需要两个电位器(即可变电阻器)和一
    的头像 发表于 02-05 10:13 5231次阅读