信号优先级与安全性

news2024/9/28 3:24:44

问题

对于同一个进程,如果存在两个不同的未决实时信号,那么先处理谁?

信号优先级的概念

信号的本质是一种软中断 (中断有优先级,信号也有优先级)

对于同一个未决实时信号,按照发送先后次序递送给进程

对于不同的未决实时信号,信号值越小优先级越高

不可靠信号与可靠信号同时未决:

  • 严格意义上,没有明确规定优先级
  • 实际上,Linux 进程优先递送不可靠信号

信号优先级的概念

多个不可靠信号同时未决,优先递送谁?

  • 优先递送硬件相关信号
    • SIGSEGV,SIGBUS,SIGILL,SIGTRAP,SIGFPE,SIGSYS
  • 优先递送信号值小的不可靠信号
  • 不可靠信号优先于可靠信号递送

信号优先级实验设计

目标:验证信号的优先级

  • 场景:不可靠 vs 不可靠;不可靠 vs 可靠;可靠 vs 可靠

方案:对目标进程发送 N 次 "无" 序信号,验证信号递达进程的先后次序

预备函数:

  • int sigaddset(sigset_t* set, int signum);
  • int sigfillset(sigset_t* set);
  • int sigemptyset(sigset_t* set);
  • int sigprocmask(int how, const sigset_t* set, sigset_t* old_set);

需要思考的问题

  • 如何使得多个信号同时未决,且以优先级方式递达进程?
  • 如何记录和对比信号的递达次序及发送次序?
  • 对于实验中涉及的不可靠信号,是否特殊考虑?

信号优先级实验设计 (发送端)

信号优先级实验设计 (接收端)

再论信号处理

信号安全性

什么是安全性?

  • 程序能正确且无意外的按照预期方式执行

信号处理的不确定性

  • 什么时候信号递达是不确定的 => 主程序被中断的位置是不确定的

当信号递达,转而执行信号处理函数时,不可重入的函数不能调用

  • 不可重入函数:函数不能由超过一个函数所共享,除非能确保函数的互斥 (或者使用信号量,或者在代码的关键部分禁用中断)

下面的程序输出什么?为什么?

深入信号安全性

不要在信号处理函数中调用不可重入函数 (即:使用了全局变量的函数)

不要调用函数中存在临界区的函数 (可能产生竞争导致死锁)

不要调用 malloc() 和 free() 函数

不要调用标准 I/O 函数,如:printf() 函数

小问题:如何知道哪些函数是安全的?

man 7 signal-safety

思考

如何编写信号安全的应用程序?

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

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

相关文章

R语言绘图教程汇总 | 2023

2023年总结 2023年即将结束,我们即将迎来2024年。2023年,我们做了什么呢??这个是个值得深思的问题…? 12月份是个快乐且痛苦时间节点。前一段时间,单位需要提交2023年工作总结,真的是憋了好久才可以下笔…

苹果怎么调字体大小?详细教程在这,赶快get起来!

在我们使用苹果手机时,可能会遇到需要调整字体大小的情况。合适的字体大小能够提高阅读体验和舒适度,使得手机使用更加便捷。然而,还有很多用户并不知道苹果怎么调字体大小。别着急!本文将为您详细介绍操作方法,帮助您…

11-Kafka

1 Kafka Kafka是一个分布式流式数据平台,它具有三个关键特性 Message System: Pub-Sub消息系统Availability & Reliability:以容错及持久化的方式存储数据记录流Scalable & Real time 1.1 Kafka架构体系 Kafka系统中存在5个关键组件 Producer…

用栈和队列分别实现求解迷宫问题(c++,c)

求解迷宫问题:给定一个迷宫要求输出其路径。 给出的迷宫如下(可自行更改) 可用两种方法实现1.栈2.队列 用栈只能找到路但路不是最简的最简的要用队列实现 用栈实现(解析都在代码里了) c(实现&#xff0…

压力应变电桥信号隔离放大变送器差分输入变送直流模块0-10mV/0-20mV/0-±10mV/0-±20mV转0-5V/0-10V/4-20mA

主要特性 DIN11 IPO 压力应变桥信号处理系列隔离放大器是一种将差分输入信号隔离放大、转换成按比例输出的直流信号导轨安装变送模块。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等行业。此系列模块内部嵌入了一个高效微功率的电源,向输入端和输…

TikTok音频书籍:通过短音频探索全新阅读体验

在数字时代,社交媒体平台不仅改变了人们获取信息的方式,还推动了传统媒体的创新。TikTok,作为一款全球短视频平台,不仅塑造了用户的娱乐方式,还成为一种创新的阅读平台。本文将深入探讨TikTok音频书籍的兴起&#xff0…

第二证券:A股“磨底”中等待向上突破

A股“磨底”中等候向上打破。从A股两市成交额、首要指数估值和风险溢价看,当时A股处于中长时刻底部区间,投资者倾向于将中长时刻问题在短期定价,市场风险偏好还有待修正。工作装备上,年底板块轮动加速将成为首要特征,大…

【数据结构和算法】删掉一个元素以后全为 1 的最长子数组

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一:滑动窗口 2.2 滑动窗口解题模板 三、代码 3.1 方法一:滑动窗口 四…

全平台跨境电商产品数据采集商品详情API接口

跨境电商模式,有很多的小伙伴们自己不备货,而是做搬货,电商数据运营的小伙伴们应该非常头疼每天的数据采集导出-整理的日常,今天介绍一款全平台电商数据采集API接口 独立站卖家导航: 独立站产品数据采集: …

微服务-springcloud(eureka实践, nacos实践)

Spring 体系图 版本关系 eureka 实践 1 父工程依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.14</version> </parent> <dependencyManage…

【每日一题】不浪费原料的汉堡制作方案

文章目录 Tag题目来源解题思路方法一&#xff1a;解方程 写在最后 Tag 【解方程】【2023-12-25】 题目来源 1276. 不浪费原料的汉堡制作方案 解题思路 方法一&#xff1a;解方程 思路 这是一个简单的解决二元一次方程的问题。 根据题意有以下关系式&#xff1a; { t o t …

【MybatisPlus快速入门】(2)SpringBoot整合MybatisPlus 之 标准数据层开发 代码示例

目录 1 标准CRUD使用2 新增3 删除4 修改5 根据ID查询6 查询所有7 MyBatis-Plus CRUD总结 之前我们已学习MyBatisPlus在代码示例与MyBatisPlus的简介&#xff0c;在这一节中我们重点学习的是数据层标准的CRUD(增删改查)的实现与分页功能。代码比较多&#xff0c;我们一个个来学习…

C++ boost planner_cond_.wait(lock) 报错1225

1.如下程序段 boost unique_lock doesn’t own the mutex: Operation not permitted 问题&#xff1a; 其中makePlan是一个线程。这里的unlock导致错误这个报错 boost unique_lock doesn’t own the mutex: Operation not permitted bool navigation::makePlan(){ //cv::named…

如何挑选便宜好用的VPS?解读Amazon Lightsail的优势

随着云计算技术的不断发展&#xff0c;VPS&#xff08;Virtual Private Server&#xff0c;虚拟私有服务器&#xff09;已成为许多企业和个人网站托管的首选。VPS将服务器资源隔离&#xff0c;使得用户可以获得更高的安全性和独立性&#xff0c;同时提供了更好的性能和扩展性。…

图片素材管理软件Eagle for mac提高素材整理维度

Eagle for mac是一款图片素材管理软件&#xff0c;支持藏网页图片&#xff0c;网页截屏&#xff0c;屏幕截图和标注&#xff0c;自动标签和筛选等功能&#xff0c;让你设计师方便存储需要的素材和查找&#xff0c;提供工作效率。 Eagle mac软件介绍 Eagle mac帮助你成为更好、…

springCould中的zookeeper-从小白开始【3】

目录 1.启动zookeeper❤️❤️❤️ 2.创建8004模块 ❤️❤️❤️ 3.临时节点还是永久节点❤️❤️❤️ 4.创建zk80消费模块❤️❤️❤️ 1.启动zookeeper❤️❤️❤️ 进入自己zookeeper的bin目录下 分别使用命令&#xff1a; ./zkServer.sh start 和 ./zkCli.sh -serve…

RHCE9学习指南 第8章 用户管理

8.1 基本概念 用户在操作系统中是非常重要的一块&#xff0c;我们登录系统&#xff0c;访问共享文件夹等都需要用户进行验证。所以&#xff0c;掌握管理用户的知识是非常有必要的。 说到用户&#xff0c;我们会提到两个名词账户信息和木马信息。 账户信息&#xff1a;我们可以…

TikTok与环保:短视频如何引领可持续生活方式?

在数字时代&#xff0c;社交媒体平台扮演着塑造文化和价值观的关键角色。而TikTok&#xff0c;作为一款全球短视频平台&#xff0c;不仅塑造着用户的娱乐方式&#xff0c;还在悄然地引领着可持续生活方式的潮流。本文将深入探讨TikTok与环保之间的关系&#xff0c;分析短视频如…

Vue编写登录注册页面前端校验

登录注册校验 template页面 <div class"app-login"><!--登录 --><div class"form"><el-form ref"form" size"large" autocomplete"off" v-if"isLogin" :model"registerData" :r…

2023.12.24 关于 Redis 中 String 类型内部编码 及 应用场景

目录 String 类型内部编码 3 种内部编码方式 String 类型应用场景 Cache 缓存 键名命名规则 计数&#xff08;Counter&#xff09; 共享会话&#xff08;Session &#xff09; 手机验证码 总结 String 类型内部编码 3 种内部编码方式 int&#xff1a;用来表示 64 位 —…