SylixOS信号系统(1)

SylixOS 经得起检验的国产操作系统 (五) 本篇开始介绍“信号系统”、“IO系统”以及“标准设备”。详细信息请访问SylixOS官网:http://www.sylixos.com。 阅读详情

信号简介

信号是一种软中断,用来通知进程或者线程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程或者线程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是一种异步通信机制,一个进程或者线程不必通过任何操作来等待信号的到达,事实上,进程或者线程也不知道信号到底什么时候到达。进程之间可以互相kill函数发送信号。内核也可以因为内部事件而给进程或者线程发送信号,通知进程或者线程发生了某个事件。信号机制除了基本通知功能外,还可以传递附加信息。
在某信号发生时,可以告诉内核按下列3种方式之一进行处理:

  • 忽略信号。大多数信号都可使用这种方式进行处理,但有两种信号不能被忽略。它们是SIGKILL和SIGSTOP。这两种信号不能被忽略的原因是:它们向内核提供了是进程终止的可靠方法。另外,如果忽略某些由硬件异常产生的信号(如非法内存访问)则进程的运行行为是未定义的;
  • 捕捉信号。为了做到这一点,要通知内核在某种信号发生时,调用一个用户函数。在用户函数中,可执行用户想要的动作。例如,捕捉到SIGALRM信号后,用户可在相应的处理函数中去控制某个线程。如果捕捉到SIGCHLD信号,则表示一个子进程已经终止,所以此信号的捕捉函数可以调用waitpid以取得该子进程的退出状态。又例如,如果进程创建了临时文件,那么可能要为SIGTERM信号编写一个信号捕捉函数以清除临时文件(SIGTERM是终止信号,kill命令传送的系统默认信号是终止信号)。注意,不能捕捉SIGKILL和SIGSTOP信号。
  • 执行系统默认动作。对大多数信号的系统默认动作是终止该进程。

信号类型

从可靠性方面讲信号分为:可靠信号和不可靠信号。

早期Unix系统中的信号机制比较简单和原始,信号值小于SIGRTMIN的信号都是不可靠信号。这就是”不可靠信号”的来源。它的主要问题是信号可能丢失。随着时间的发展,实践证明了有必要对信号的原始机制加以改进和扩充。由于原来定义的信号已有许多应用,不好再做改动,最终只好又新增加了一些信号,并在一开始就把它们定义为可靠信号,这些信号支持排队,不会丢失。信号值位于SIGRTMIN和SIGRTMAX之间的信号都是可靠信号,可靠信号克服了信号可能丢失的问题。
这里不可靠信号又称为非实时信号,而可靠信号又称为实时信号。
因为不可靠信号可能会丢失,所以这样的一个信号在处理完之前不会再接收相同的信号,在SylixOS信号的实现上,这种信号不支持排队。相应地可靠信号,在SylixOS实现上市支持排队。

<待续>

DDS实现层深度解析:实时系统中的RTPS协议、内存与QoS硬核调优 DDS(Data Distribution Service)作为分布式实时系统的通信中间件,其核心价值在于将发布-订阅抽象模型落地为纳秒级确定性的二进制实现。它依托RTPS有线协议,在操作系统、CPU缓存、网络硬件与实时调度约束下完成协议栈映射、零拷贝传输、静态内存池分配及QoS语义到OS原语的精准翻译。技术关键点包括共享内存(SHM)替代UDP内核路径以降低延迟、缓存行对齐规避伪共享、RTPS报文精简优化处理耗时,以及基于CLOCK_TAI的时间戳统一机制。本文聚焦DDS implementations在 阅读详情

相关推荐

Django 前后端分离实战:网络设备运维系统 - 从登录认证到业务模块

这篇文章分享了Django+Vue前后端分离开发网络设备运维系统的实战经验,重点介绍了登录认证、全局布局和设备管理三大模块的实现。文章包含以下核心内容: 登录模块实现:包括表单验证、Token认证、记住密码功能,以及美观的UI设计(渐变背景、毛玻璃效果) 全局布局架构:采用侧边栏+顶部导航的响应式设计,支持菜单权限控制和多设备适配 业务功能开发:详细展示了设备分类和部门管理的CRUD功能实现,包括列表展示、搜索过滤、分页等功能 常见问题解决:提供了5个开发中常见问题的解决方案,如Vue Router警告、C

qq_16766705的博客 525

Linux的信号量

信号量(semaphore)与已经介绍过的 IPC 结构不同,它是一个计数器。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。 ** 1、特点 ** 1、信号量用于进程间同步,若要在进程间传递数据需要结合共享内存。 2、信号量基于操作系统的 PV 操作,程序对信号量的操作都是原子操作。 3、每次对信号量的 PV 操作不仅限于对信号量值加 1 或减 1,而且可以加减任意正整数。 4、支持信号量组。 例子:就像一个房间,信号量相当于开门的钥匙,房间相当于连接资源(一次仅允许一个进程使用的资源;如

肖肖的博客 1960

YDOOK: ANSYS Maxwell 19 教程7:Maxwell 2D 材料管理 添加新增 永磁材料

使用ANSYS Maxwell 19 添加新增 永磁材料 1. 点击 Add material 按钮后,在左下方的下拉框中下拉选择永磁材料,弹出用材料设置框: 2. 按照下面数据输入 3. 输入 Hc 与 Br/Ap 两项后,其他项的数据将自动计算给出 4. 点击OK后再,为了使得材料属性的完整性,在 Bulk Conductivity 属性行中输入 材料电导率的数值。 ...

YDOOK 1万+

SylixOS线程间通信-SylixOS信号量

SylixOS线程间通信-SylixOS信号量SylixOS信号量有两种类型:二进制信号量和计数型信号量。 二进制信号量的取值范围为FALSE或TRUE;计数型信号量的最小取值为0,而最大取值在创建计数型信号量时决定。 二进制信号量主要应用在以下场合: 有允许线程访问的一个资源,使用二进制信号量作为互斥手段; 线程或中断通知另一个线程某种事件发生。 计数型信号量主要应用在以下场合: 有允

flags_s的博客 1028

吃透 AM32 无人机电调:从源码架构到工作原理的全方位解析(附实践指南)(中)

介绍了三相电机控制中的SVPWM算法实现及保护机制设计。SVPWM部分详细解析了电压矢量扇区判断、占空比计算和过调制保护,通过限制占空比范围(0-100%)防止电机失控,并提供了完整的代码实现。保护模块则重点分析了过流、过压/欠压、过温三种保护机制,采用分级处理策略(硬保护停机/软保护降功率)确保系统安全。此外,文章还介绍了参数管理模块在STM32 Flash中的存储方案,包括参数定义、数据结构和读写操作,为电机控制系统提供了完整的解决方案。

bother3000的博客 1388

HttpClient跳过HTTPS证书验证的3种实战方法(含完整代码示例)

本文详细介绍了HttpClient跳过HTTPS证书验证的3种实战方法,包括自定义TrustManager、SSLContext配置和HttpClientBuilder高级定制,并提供完整代码示例。这些方法适用于开发和测试环境,帮助开发者快速解决自签名证书或未认证证书导致的HTTPS请求失败问题,但需注意生产环境的安全风险。

weixin_29213655的博客 529

SylixOS 不同容器(ECS)间使用信号量同步方案

1、概述 在 SylixOS 容器版本中由于容器间存在命名空间隔离的问题因此无法直接使用信号量进行同步操作,这在某些场合下可能无法完成实际需求,如共享内存通信时。本文介绍一种在容器间实现信号量同步功能的解决方案。 2、解决方案 此解决方案思路是在 SylixOS 标准信号量的基础上封装一层字符设备,在内核层创建信号量并提供相关接口使容器内的 APP 可以通过字符设备接口获取内核信号量句柄,再通过标准信号量 API 进行操作。实现不同容器间的 APP 同步操作。基本框架如下图...

stone8761的专栏 528

当版图同学只给GDS文件时,我是这样用Calibre PEX和Cadence做后仿真的(保姆级避坑)

本文详细介绍了在模拟IC设计中,当仅获得GDS文件时,如何利用Calibre PEX和Cadence进行高效后仿真的完整流程。涵盖从寄生参数提取到Spectre模型创建的实战技巧,特别针对版本兼容性、文件独立性和参数可调性等常见问题提供解决方案,帮助工程师规避协作中的典型陷阱。

weixin_42556197的博客 241

SylixOS学习三—— SylixOS的引导与安装2

自学SylixOS启程之旅笔记 《SylixOS启程之旅》是一门公开课,点开下面链接即可观看: SylixOS启程之旅

graceyun的博客 1715

数字IC后端实现之快速获取innovus中drv violation的所有net list

数字IC后端设计实现之快速获取innovus中drv violation的所有net list

weixin_37584728的博客 3349

【AI编程】Trae 环境搭建与配置从使用到项目实战详解

Trae 环境搭建与配置从使用到项目实战详解

congge 5650

SylixOS内存屏障、信号量

如果我们在一个核上对数据执行写入操作,并且通过一个标记来表示此数据已经写入完毕,另一个核通过此标记来判断数据是否已经写入完毕,就可能存在风险,这是因为标记可能已经被修改,但是数据操作还未完成,最终导致另一个核未能使用到正确的数据,从而带来不可预估的后果。需要注意的是,中断服务程序不能调用API_SemaphoreBPend函数来等待一个二进制信号量,因为该函数在二进制信号量值为FALSE时会阻塞当前执行的任务,而中断服务程序用来处理最紧急的事情,因此是不允许阻塞的。这种机制满足了读的高并发性。

FirePig的博客 828

2025年5月架构设计师论文真题回顾,附写作技巧、所涉知识点及参考范文(三)

本文主要回顾2025年上半年(2025-5-24)系统架构设计师考试下午论文的题目,同时附带写作技巧、所涉知识点及参考范文。试题三:多模型数据库及应用。

一几文的编程学习笔记。 629

SylixOS 下的信号系统

信号是一种软中断,用来通知进程或者线程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程或者线程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是一种异步通信机制,一个进程或者线程不必通过任何操作来等待信号的到达,事实上,进程或者线程也不知道信号到底什么时候到达。进程之间可以互相 kill 函数发送信号。内核也可以因为内部事件而给进程或者线程发送信号,通知进程或者线程发生了某个事件。信号机制除了基本通知功能外,还可以传递附加信息。

日常学习记录 921

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

基于SylixOS的中断浅析

目  录 1.中断... 1 1.1           中断的定义... 1 1.2           中断的分类... 1 1.2.1    外部中断... 1 1.2.2    内部中断... 1 2. SylixOS下的中断浅析... 2 2.1           SylixOS信号系统... 2 2.2           SylixOS时间管理... 2

u013702699的博客 501

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SylixOS 信号系统(3)

信号内部机制SylixOS的信号机制分为3类发送信号方法:kill类型、队列类型和事件类型,这3中类型分别由_doKill()、_doSigQueue()、_doSigEvent()函数实现,上层所有的发送信号函数都直接或者间接地通过调用这几个函数来实现,而这3个函数中,_doKill()设置信号源为SI_KILL、_doSigQueue()设置信号源为SI_QUEUE、_doSigEvent()设

flags_s的博客 887

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SylixOS信号系统(2)

信号机制原理关键数据结构POSIX标准定义了sigset_t类型来定义一个信号集,然而sigset_t类型在不同的系统可能有不同的定义方式,因此去猜测sigset_t类型是不明确的,在SylixOS中,将sigset_t定义成了unsigned long long型,也即是一个64位的数据类型,每一位代表了一个信号,最高位不被使用。 SylixOS信号机制的实现离开不了下面几个关键数据结构;1.

flags_s的博客 668

【069】南京市“2020十项重大创新成果”重磅发布!翼辉SylixOS成功入选!

南京市“2020十项重大创新成果”重磅发布!翼辉SylixOS成功入选! 发布于2021年01月07日 2021年01月04日举行的南 京 市创新名城建设推进大会上,重磅发 布2021年市委一号文件《关于新发展阶段全面建设创新名城的若干政策措施》。在新年“第一会”上,南京市公布了创新名城建设十项重大创新成果,翼 辉“国产大型实时操作 系统的研发与应用”成功入选。 翼辉 SylixOS大型实时操作系统拥有完整自主知识产权,在航空航天、轨交、电力、自动化控制等领域,解决了工业操作系统“卡脖子”问题,已成功应

ScilogyHunter的博客 485

硬实时操作系统(Hard Real-Time OS)与软实时操作系统(Soft Real-Time OS)的区别

针对 FreeRTOS(代表软实时系统)和 SylixOS(代表硬实时系统)的具体对比分析,通过实际技术细节说明两者的差异。

bifudoph的博客 905

SylixOS 信号发送、接收机制

SylixOS 可以通过 kill() 或 sigqueue() 向线程发送信号(向进程发送信号相当于发送给进程的主线程)。kill() 与 sigqueue() 的区别主要在发送信号的类型不一样,kill() 发送非排队信号,sigqueue() 发送排队信号。 kill() 中首先会调用 _doKill() 接口,在 _doKill() 中构建信号信息结构 struct siginfo 和 LW_CLASS_SIGPEND 结构,这里主要是保存信号值、信号产生源、发送信...

stone8761的专栏 437

SylixOS下kill 15信号问题分析

1.适用范围 本文档适用于希望了解SylixOS下kill 15信号的工程师。2.SylixOS与Linux的现象差异2.1构建测试用例 构建一个简单的测试用例,主线程与子线程均运行20秒后结束,程序代码如程序清单 2.1所示:程序清单 2.1 构建测试用例void *fun(void *arg){int n = 0;while(n < 20) ...

weixin_34407348的博客 222

SylixOS进程介绍

进程介绍 进程是操作系统中资源的容器,所有程序都必须依附于一个进程运行,进程管理程序的代码、数据、线程、信号量等资源。当一个进程销毁时,所有属于该进程的资源也会被销毁,如:文件句柄、socket套接字、线程等。 SylixOS支持进程,就如前面介绍的一样,SylixOS进程管理应用程序资源。与linux、Windows操作系统不一样的是,SylixOS是充分考虑实时系统需求设计的,我们称之为实

糊涂岁月的专栏 2115

SylixOS中CTRL+C的大致处理流程

1.这几天在处理GPU方面的问题时碰到了在终端执行CTRL+C报错的问题,具体见Vivante GPU驱动报:SAFE mode error错误解决方法这篇帖子,这里主要记录CTRL+C的大致处理流程。 2.当键盘按下CTRL+C时,主机就向目标板发送一个控制字符,其ASSIC码为0x03,在SylixOS下常用的控制字符如下,此定义是在tyLib.c文件中 /*****************...

li5830的博客 1095

SylixOS的信号屏蔽浅析

1.信号介绍       信号是一种软中断,用于通过异步的方式对进程进行事件通知。信号分为实时信号和非实时信号,各个进程对于信号的处理方式不一,处理方式分为三类:忽略,捕捉,执行系统默认动作。进程可以选择屏蔽某个或某些信号。 2.信号屏蔽      SylixOS可以通过sigprocmask函数对某个信号集内的信号进行屏蔽。在信号被屏蔽的期间,进程对所屏蔽的大部分信号不会进行响应,只有解除

qq_16328735的博客 318
上一篇: SylixOS 唤醒链
下一篇: SylixOS信号系统(2)
flags_s
博客等级 码龄11年 15粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值