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

    文章

    11219

    浏览量

    208879
  • 信号
    +关注

    关注

    11

    文章

    2778

    浏览量

    76609

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

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

    两个PLC之间如何交互信号

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

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

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

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

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

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

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

    arcgis中如何关联两个属性表

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

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

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

    信号发生器如何发出双脉冲?

    信号发生器如何发出双脉冲? 信号发生器是一种用于产生各种信号波形的仪器。双脉冲信号是一种特殊的
    的头像 发表于 12-21 15:03 2000次阅读

    如何给C语言中的函数定义两个不同的名字?

    最近有位哥问我,如何给C语言中的函数定义两个不同的名字?就是这两个名字都是指向同一函数,同一地址,而且两个名字都可以当做函数来用的那种。
    的头像 发表于 12-19 16:21 752次阅读

    AD9269在AD两个通道的入口输入峰值相同的差分信号,为什么AD两个通道的输出不同?

    在AD两个通道的入口输入峰值相同的差分信号,为什么AD两个通道的输出不同,最高位的符号位为什么不同
    发表于 12-12 06:55

    CAN总线为什么有两个终端电阻,作用是什么?

    。这两个终端电阻在CAN总线中的作用十分重要,下面将详细解释。 1. 起到信号匹配的作用:CAN总线是一种差分信号线,其通信中传输的是差分信号。而终端电阻的阻值与总线的特性阻抗相等,起
    的头像 发表于 12-07 11:15 2847次阅读

    两个硬盘2系统开机切换

    切换两个硬盘上的系统是一种常见的行为,可以让用户在不同的操作系统之间进行切换,以满足不同的需求。在本文中,我们将详细介绍如何配置和使用两个硬盘上的系统进行切换。本文将分为以下几个部分进行讨论:硬件
    的头像 发表于 11-28 15:08 7353次阅读