嵌入式Linux:信号分类

news2024/9/20 22:46:38

目录

1、不可靠信号与可靠信号

1.1、不可靠信号

1.2、可靠信号

2、实时信号和非实时信号

2.1、非实时信号

2.2、实时信号


在Linux系统中,信号可以从两个不同的角度进行分类:一是从可靠性方面,将信号分为可靠信号不可靠信号;二是从实时性方面,将信号分为实时信号非实时信号

在 Linux 系统下使用"kill -l"命令可查看到所有信号,如下所示:

图中,信号编号在1到31之间的信号被定义为不可靠信号(非实时信号)。这些信号主要继承自早期的UNIX系统,使用了最初设计的简单信号机制。在这种机制中,如果一个信号在进程处理另一个相同信号时到达,该信号可能会被丢失,从而导致进程错过某些事件。信号编号在34到64之间的信号被定义为可靠信号(实时信号)。与不可靠信号不同,可靠信号支持排队处理,即使多个相同信号在处理过程中到达,它们也不会被丢失,而是按照到达顺序依次处理。

值得注意的是,可靠信号(实时信号)并没有像不可靠信号那样的具体名称,而是采用了相对编号的方式来表示。这些信号使用SIGRTMIN+NSIGRTMAX-N的形式进行表示,其中:

  • SIGRTMIN可靠信号(实时信号)的最小编号,通常为34。
  • SIGRTMAX可靠信号(实时信号)的最大编号,通常为64。

因此,SIGRTMIN+1代表编号为35的可靠信号(实时信号)SIGRTMAX-1代表编号为63的可靠信号(实时信号)

1、不可靠信号与可靠信号

1.1、不可靠信号

早期UNIX系统中的信号机制被称为不可靠信号,Linux的信号机制基本上继承自早期UNIX系统。所以信号机制设计相对简单,虽然实现了基本的进程间通信功能,但在实际应用中暴露出一些显著问题。

其主要问题包括:

  • 信号处理后恢复默认行为
    在早期的UNIX中,进程每次处理完信号后,系统会自动将该信号的处理方式恢复为默认操作。这意味着,如果用户希望持续使用自定义的信号处理函数,就需要在信号处理函数的末尾再次调用signal()函数重新绑定处理函数。这种机制增加了编程的复杂性,并且容易导致程序员在忽略这个步骤时发生错误。

  • 信号可能丢失
    另一个更严重的问题是不可靠信号可能会丢失。当进程正在处理一个信号时,如果相同类型的另一个信号到达,第二个信号可能会被直接丢弃,导致进程错过了重要的事件。这在关键任务应用中尤其危险。

虽然Linux仍然支持不可靠信号机制,但对其进行了改进。Linux修复了在信号处理函数执行后必须手动重新绑定处理函数的问题。在现代Linux系统中,一旦信号处理函数被绑定,除非显式更改,否则它将一直保持有效。

然而,信号丢失问题仍然存在。这意味着,在处理不可靠信号时,如果在信号处理期间有相同信号再次到达,该信号可能无法被捕获。

1.2、可靠信号

为了克服不可靠信号的缺陷,Linux引入了可靠信号机制。可靠信号支持排队,即使进程在处理某个信号时有新的信号到达,这些信号也不会丢失,而是被加入队列,待当前信号处理完成后再依次处理。

Linux还引入了新的信号发送函数sigqueue()和信号绑定函数sigaction(),进一步增强了信号处理的灵活性和可靠性。sigqueue()不仅可以发送信号,还可以附带一个整数值或指针,传递额外的信息。sigaction()则允许更精细地控制信号的行为,替代了传统的signal()函数。

2、实时信号和非实时信号

Linux信号的另一种分类方式是根据实时性来区分为实时信号非实时信号

2.1、非实时信号

非实时信号指的是传统的、不支持排队的信号。这类信号在早期的UNIX系统中得以引入,信号编号一般在1到31之间。这些信号在处理时没有严格的顺序保证,并且如果在处理某个信号时有相同类型的新信号到达,后者可能会被忽略或丢失。因此,这类信号被称为不可靠信号

2.2、实时信号

实时信号是为了解决非实时信号在处理可靠性方面的不足而引入的。实时信号的一个显著特点是它们支持排队,即使在处理某个信号期间有新的相同类型的信号到达,这些信号也不会被丢弃,而是按照到达的顺序依次处理。这样,实时信号保证了多个信号都能被正确接收和处理,因此它们被称为可靠信号

在实际编程中,开发者应当根据应用需求选择合适的信号类型。对于简单的进程间通信或用户交互,标准的非实时信号可能已经足够。而对于需要保证信号处理顺序且不能丢失的重要任务,使用可靠信号或实时信号是更好的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2095459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小柴带你学AutoSar系列三、标准和规范篇(3)ModeManagement

目录 ModeManagementGuide 2 Overall mechanisms and concepts 2.1 Declaration of modes 2.2 Mode managers and mode users 2.3 Modes in the RTE 2.4 Modes in the Basic Software Scheduler 2.5 Communication of modes 3 Configuration of the Basic Software Mod…

系统思考—盲点突破

最‮发近‬现服务的一些‮业企‬明明‮经已‬投入了大‮资量‬源在‮化优‬产品‮服和‬务上,但‮觉总‬得缺少一些‮键关‬点来‮正真‬实现突破?团‮每队‬天都在忙碌,但‮绩业‬增长却‮来越‬越缓慢,问‮总题‬是层出不穷&…

华为云征文 | Flexus X与宝塔面板的完美结合,让云管理更轻松

需要了解 本文章主要讲述在华为云Flexus X实例 上通过命令行的方式安装宝塔面板,搭建项目基础软件,实现服务器可视化管理,一键部署业务代码,简化操作流程。选择合适的云服务器: 本文采用的是 华为云服务器 Flexus X 实…

22. Lammps命令学习-7之read_restart

来源: “码农不会写诗”公众号 链接:Lammps命令学习-6之read_data read_restart file 从restart文件中读取先前保存的系统配置从而可以继续先前的模拟。   https://docs.lammps.org/read_restart.html Syntax read_restart fileDescription 从restart…

Unity3D 资源引用列表

Unity3D 窗口绘制资源引用列表。 资源引用列表 我们可以在自定义窗口上绘制一个资源引用列表,筛选资源,点击引用,快速定位到资源文件夹的某个资源。 关于自定义窗口的基本实现,可以参考之前的文章《Unity3D 自定义窗口》。 获…

【函数模板】参数类型

一、默认参数 1.默认参数的调用 函数模板的参数类型可以指定一个默认值&#xff0c;在不传入参数类型的时候将使用默认参数类型来实例化函数模板。 例如&#xff1a; template<typename T, typename R int> auto add(T a, R b 0) -> decltype(a b) {std::cout &…

HTML5CSS3--CSS3的各种用法

1.background-origin 背景图起点&#xff1a; padding-box背景图像相对于内边距框来定位。border-box背景图像相对于边框盒来定位。content-box背景图像相对于内容框来定位。 2.background-clip 背景图裁剪&#xff1a; border-box默认值。背景绘制在边框方框内&#xff0…

AcWing 282. 石子合并

必看的视频讲解↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 【E28【模板】区间DP 石子合并——信息学竞赛算法】 合并过程总开销等于红色数字总和&#xff0c;可以理解为花费的总体力&#xff01; f数组的含义是f【i】【j】是从第i堆石子开始到第…

HighPoint发布NVMe RAID外壳以应对严苛环境

2024年8月23日&#xff0c;HighPoint揭开了其新款RocketStor 654x系列外部NVMe RAID外壳的神秘面纱。这款新产品旨在将第四代存储应用提升至全新水平&#xff0c;为工业、边缘计算平台以及专业工作站环境提供强大的存储解决方案。 #### 技术亮点 - **高性能与大容量** Rocke…

【服务器篇】买服务器想安装宝塔面板,看这一篇够了

服务器选择&#xff1a;CentOS Stream-9 服务器厂商&#xff1a;腾讯云&#xff08;没有收钱&#x1f4b4;&#xff09; 使用工具&#xff1a;宝塔&#xff08;没收钱&#xff09; 建议两位大佬给俺冲冲钱&#xff0c;嘻嘻&#x1f92d; 系列文章目录 提示&#xff1a;这里可以…

VMware Workstation安装及配置CentOS7 Linux操作系统

VMware workstation安装 百度网盘&#xff0c;VMware-workstation-full-17.5.2.exe 安装包&#xff1a; 链接:https://pan.baidu.com/s/1xgbWUlo-hFUbb11MRxIVsw?pwd87bq 提取码: 87bq 检查网络适配器是否正常配置 在VMware Workstation中安装CentOS7 Linux操作系统 下载…

财务上的弹性

财务管理和时间管理&#xff0c;是有一定关联的。 一般来说&#xff0c;财务上的弹性&#xff0c;会带来时间管理的弹性。财务上的紧张&#xff0c;会带来时间管理的紧张。 比如&#xff0c;一个人财务状况很好&#xff0c;就可以用更多的时间挑选合适的工作。在工作期间&…

【LangChain】使用LangChain的提示词模板:技巧与总结

&#x1f601; 作者简介&#xff1a;前端开发爱好者&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;JavaScript小贴士 &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要的是继续…

【困难】 猿人学web第一届 第15题 备周则意怠,常见则不疑

数据接口分析 数据接口 https://match.yuanrenxue.cn/api/match/15 请求时需要携带 page 页码&#xff0c;m为加密参数 cookie中没有加密信息&#xff0c;携带 SessionId请求即可 加密参数还原 查看数据接口对应的 requests 栈 m参数 是通过 window.m() 方法执行后得到的 打上…

【免费分享】2024最新优化算法-黑翅鸢算法BKA

黑翅鸢优化算法&#xff08;Black-winged kite algorithm&#xff0c;BKA&#xff09;是一种受自然界启发的群体智能优化算法&#xff0c;其设计灵感源自黑翅鸢&#xff08;Black-winged kite&#xff09;的生存策略。黑翅鸢在攻击和迁徙过程中展现出的高度适应性和智能行为&am…

3分钟带你手把手安装一款音乐制作神器——FL Studio 24.1.1.4285中文版

大家好&#xff0c;今天我要给大家介绍一款音乐制作神器——FL Studio 24.1.1.4285中文版。这款软件可是音乐制作界的翘楚&#xff0c;无论是专业人士还是音乐爱好者&#xff0c;都会为它的强大功能和易用性所折服。 我们来看看FL Studio的特点。这是一款全能型的音乐工作站&am…

ACL实验配置学习笔记

拓扑描述&#xff1a; R1作为所有PC的网关&#xff1b; 财务部用户&#xff1a;192.168.1.0/24 市场部用户&#xff1a;192.168.2.0/24 Server1&#xff1a;HTTP服务器地址为7.7.7.7/24 PC 2&#xff1a;192.168.1.2 PC 5:&#xff1a;192.168.2.2 PC 3&#xff1a;&…

干货分享|分享一款高效的软件卸载神器 Geek Uninstaller

问题&#xff1a;卸载软件时&#xff0c;时常会留下残留文件和注册表。当遇到流氓软件&#xff0c;还常常卸载失败。 1.软件介绍 特点&#xff1a;高效快速&#xff0c;小巧便携。100% 免费 2.下载方法 官方下载网站&#xff1a;Geek Uninstaller - the best FREE uninstaller …

《深入理解JAVA虚拟机(第2版)》- 第6章 - 学习笔记

第6章 类文件结构 6.1 概述 字节码和二级制本地机器码&#xff08;Native Code&#xff09;是用来存储程序编译后的结果的&#xff0c;是二种程序存储结构。 6.2 无关性的基石 这里说的无关性&#xff0c;分为&#xff1a;平台无关性和语言无关性。 平台无关性&#xff1a;…

Codeforces Round 913 (Div. 3) D. Jumping Through Segments (二分*1400)

很容易看出这道题应该二分答案&#xff0c;本题的难点在于对于mid的验证。 找距离肯定是不难&#xff0c;难就难在我们输入的区间并不是按照左右顺序排列的&#xff0c;有的区间可能涵盖住了另一个区间&#xff0c;也就是说在这里我们需要进行的是左右的移动。 那么我们根本无…