信号详细讲解
一、信号定义信号是进程发送的用来进行一个时间的异步通知中断正在做的某个事情。1.信号处理进程在信号没有产生的时候就知道这个信号意味着什么2.信号的处理不是立即处理而是可以在合适的时候进行处理3.进程是已经被程序员内置了识别和处理信号的方式。4.信号源很多-给进程产生信号的信号源也非常多。二、信号的产生第一种方式-键盘产生1.用键盘产生信号ctrlc就是给目标进程发送信号的。相当一部分进程的处理动作就是让进程终止但是信号的处理也是分3种情况的1.默认处理动作 2.更改默认处理自定义处理方式-自定义捕捉 3.忽略如何去自定义处理方式。前台和后台进程后台可以有多个前台只能有一个。前台进程就是用来接收和处理标准输入的信号的。eg:fork创建子进程是当父进程先退出了之后子进程就变成孤儿进程。ctrlc杀不掉被1号进程领养了其实也是因为这个子进程变成了后台进程接收不到键盘输入的信号。如何将后台进程杀掉再打开一个命令行查找该后台进程的pid,kill -9 pid就能杀掉后台进程。把后台命令提到前台fg任务号ctrlc杀掉即可前后台如何移动如何发信号当我给一个进程发信号这个进程是需要在合适的时候去处理这个信号的。那么这个进程是如何记住这个信号的呢在进程的task_struct中有一个unsigned int sigs,以32位位图的方式进行记录信号。所以发信号的本质就是向目标进程写信号修改位图。但是task_struct是操作系统内的数据结构对象修改位图本质就是修改内核数据。所以不管产生信号的方式有多少种发信号的过程必须让OS自己操作。所以kill的底层也是封装了系统调用。信号产生的第二种方式-系统调用小结论9号信号无法被自定义捕捉自己给自己发信号raise()通过硬件异常产生信号cpu拿着这个野指针去MMU中进行转换转化失败硬件报错OS作为软硬件资源管理者捕捉到这个硬件报错信号直接发送11号信号终止进程。操作系统怎么知道硬件报错类型term core软件条件报错比如一个进程向另一个进程通过管道发送消息将读端关闭写端一直写就会崩溃发送SIGPIPE信号终止进程。alarm默认经过n秒终止进程13号信号SIGALM。IO效率低下验证。每个进程都可以设置闹钟要对这些闹钟进行管理先描述在组织。这个闹钟里有时间片这个闹钟对应的方法要执行的次数执行一次时间片--时间节点对应的方法。闹钟底层是用堆方法实现的。这就是闹钟的数据结构管理。模仿OS在没有时钟信号到来之前一直都是挂机状态就是死循环。pause().等到一个时钟信号进行唤醒执行对应的动作。三、信号的保存信号未决接受信号记录下来等待执行中的状态信号递达处理信号的动作信号阻塞接受信号但是永远不会被递达只有接触阻塞才能被递达和信号忽略不一样阻塞是在递达之前的动作忽略是在递达之后的一种选择状态只不过不按照默认状态去执行。三张变表block32位图表表示是否阻塞,pending32位图表表示是否存在未决状态,header表函数指针数组设置block表的接口sigprocmask获取pending表的接口sigpending整合demo:清空block,man 3 sigismember,9号信号不可被捕捉不可被屏蔽是管理员信号。当我们准备递达的时候就要先清空pending信号集对应的信号位图1-0core和term的对比云服务器是生产环境core dump功能是被禁掉的。因为进程没挂一次都会dump一次额外占用磁盘空间。为什么核心转储主要是支持debug,当一个大型文件出现bug,但是找不到在哪一行出错开启core dump,运行崩溃生成core文件gdb进行调试gdb core-file core,定位到具体哪一行出现bug。四、信号的处理我们之前说要在合适的时候处理信号这个合适的时候就是进程从内核态转到用户态做的信号检查。处理信号默认和忽略方法比自定义方法更加容易。内核态和用户态硬件中断--操作系统是怎么运行的外设上有数据时候发送高电平到中断控制器上绕后随之通知cpu,生成一个中断号cpu知道有外设已就绪但不知到是哪一个设备所以去中断控制器获取中断信号cpu拿着中断号访问查询中断向量表进而执行对应的方法。执行完毕恢复原来的上下文。这个方法是操作系统提供的。操作系统就是基于外部中断运行的。时间源集成到cpu内部每隔固定的时间如1ns向cpu发送中断信号这就是主频信号操作系统拿着这个中断号执行schedule方法进行已注册好的进程调度算法。所以操作系统就是一个死循环等着时间中断信号到达更新时间片检查该进程时间片这个时间片一到切换下一个进程。所以死循环也可能跑不完。比如除0错误访问野指针等这些软件导致硬件先出错了cpu自己能触发一个中断信号然后去访问查询对应的信号中断表执行对应的方法。这就是为什么操作系统会知道进程在哪里出错了。软中断由cpu通过软件触发的中断。向我们之前的系统调用在内核中会有一个系统调用表是一个系统调用函数指针表实质上操作系统不提供任何系统调用接口只提供系统调用号。像我们之前使用的fopen,close这些接口实际上都是glibc封装的。底层是用汇编实现的会给cpu发送系统调用号触发中断OS拿着系统调用号执行对应的系统调用。两个汇编指令32位下的int 指令64位下的syscallcpu识别到这两个指令就可以执行中断信号。系统调用的过程都是在进程空间里完成的所有的函数调用都是地址空间的跳转。系统调用就是基于int 0x80这种软中断来写的。详谈用户态和内核态有多少个进程就会有多少个用户页表。系统只有一份内核页表所有进程共用一份。cpu内部有cs段寄存器寄存器标志位由CS 段寄存器的低2 位决定的会记录当前状态是用户态还是内核态。如果这个标志位是3就是用户态只能访问cs段寄存器代码段中的用户区【0-3GB】标志位是0就是内核态以系统调用的方式将系统调用号传进寄存器切换地址空间映射内核页表查找对应的系统调用函数访问【3-4GB】CPLCurrent Privilege Level:当前权限级别0内核3用户捕捉信号的另一种方法sigaction()捕捉信号时个我们提供了屏蔽其他信号的能力包括自己。当信号处理完成时自动解除屏蔽可重入函数某一个函数方法被2个及以上执行流同时进入这个函数方法就被称为重入函数分为可重入函数和不可重入函数。不可重入函数一般函数体里面调用了malloc free的malloc也是用全局链表来管理堆的。调用了标准IO库函数绝大多数IO库的实现都是以不可重入的方式使用全局数据结构。可重入函数使用自己的临时变量不影响全局。volatile不管编译器怎么优化只要带上volatile关键字修饰的变量都要保证该变量内存空间的可见性。因为在编译器优化级别较高的情况下有的变量直接register到寄存器中不在进行访问其物理内存内存空间不可见。SIGCHID-17号信号

相关新闻

告别激活弹窗!开源KMS智能激活工具三步搞定Windows和Office永久激活

告别激活弹窗!开源KMS智能激活工具三步搞定Windows和Office永久激活

告别激活弹窗!开源KMS智能激活工具三步搞定Windows和Office永久激活 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 设计师阿琳最近快被烦死了——修图到一半,Photoshop …

2026/10/10 16:46:34 阅读更多 →
不用模拟器也能在 Windows 上装安卓应用:APK Installer 三步入门指南

不用模拟器也能在 Windows 上装安卓应用:APK Installer 三步入门指南

不用模拟器也能在 Windows 上装安卓应用:APK Installer 三步入门指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer APK Installer 是一款面向 Windows 10…

2026/10/8 18:51:52 阅读更多 →
猫抓 cat-catch 深度体验:网页视频下载,一个资源嗅探扩展就够了

猫抓 cat-catch 深度体验:网页视频下载,一个资源嗅探扩展就够了

猫抓 cat-catch 深度体验:网页视频下载,一个资源嗅探扩展就够了 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 某个周六晚…

2026/10/12 4:05:39 阅读更多 →

最新新闻

数据复制深度拆解:从HDFS块复制到CDC同步的机制、实践与容灾设计

数据复制深度拆解:从HDFS块复制到CDC同步的机制、实践与容灾设计

大数据领域做久了,你会发现一个很朴素但又绕不开的现实: 数据复制 几乎贯穿了所有核心系统的生命周期。无论是离线数仓里的表同步、实时链路里的CDC采集,还是跨机房容灾里的镜像复制,本质上都在做同一件事——把一份数据从A点搬…

2026/10/12 9:23:59 阅读更多 →
开源大模型权重质变:推理优化、量化与微调工程实践指南

开源大模型权重质变:推理优化、量化与微调工程实践指南

1. 从"权重开放"到"能力平权":一场静默的行业拐点 过去两年,我一直在跟踪各类开源模型权重发布后的实际落地情况。说实话,早期大部分所谓"开放权重"的模型,更多是实验室里的展示品——参数量大、推…

2026/10/12 9:23:59 阅读更多 →
配电网多目标Pareto重构:Matlab实现NSGA-II的实战经验与代码解析

配电网多目标Pareto重构:Matlab实现NSGA-II的实战经验与代码解析

配电网多目标Pareto重构,核心就一句话:通过改变分段开关和联络开关的开合状态,重新编排配电网的供电路径,让网损、电压质量、开关操作成本等多个目标同时尽可能好。这个问题我前后做了一段时间,用Matlab实现了多套智能…

2026/10/12 9:23:59 阅读更多 →
把手机变成AI服务器:openclaw-termux SSH远程访问配置实战教程

把手机变成AI服务器:openclaw-termux SSH远程访问配置实战教程

AI 应用LLM 网关大模型移动开发 【免费下载链接】openclaw-termux Run OpenClaw AI Gateway on Android — standalone Flutter app with built-in terminal, web dashboard, and one-tap setup. Also available as a Termux CLI package. 项目地址: https://gitcod…

2026/10/12 9:23:58 阅读更多 →
自己动手实现TreeMultiSet:基于TreeMap的有序可重复集合

自己动手实现TreeMultiSet:基于TreeMap的有序可重复集合

1. 从一个真实的数据统计需求说起去年帮一个做电商的朋友处理订单数据时&#xff0c;遇到一个挺典型的问题&#xff1a;他们需要统计每个商品在一天内的被下单次数&#xff0c;并且要按商品ID排序输出。第一反应是用TreeMap<Long, Integer>&#xff0c;key 是商品ID&…

2026/10/12 9:22:58 阅读更多 →
PS5折腾指南:系统配置、存储扩展、远程游玩与散热维护

PS5折腾指南:系统配置、存储扩展、远程游玩与散热维护

PS5到手三个月后&#xff0c;我发现自己陷入了一个尴尬循环&#xff1a;开机看一眼、随便通关一个进度、然后切出去看手机&#xff0c;主机外壳摸起来都能煎鸡蛋。直到我给自己定了个"AnyPS5"计划——不把这台机器当普通游戏机&#xff0c;而是当成一台可折腾的娱乐终…

2026/10/12 9:22:58 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天&#xff0c;画面可以做到绝对的锐利、平滑与无瑕。然而&#xff0c;当一张秋日手账插画或拍立得照片过于“平整无瑕”时&#xff0c;往往会散发出一种冰冷生硬的“数码塑料感&#xff08;Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中&#xff0c;横排&#xff08;Horizontal Layout&#xff09;早已经成为了绝对的主流。然而&#xff0c;当我们翻开泛黄的线装古籍、宋版木刻诗集&#xff0c;或是欣赏一张茶道雅集的手写便签时&#xff0c;那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点&#xff0c;很多人心里都会悄悄亮起一盏警示灯。 在心理学上&#xff0c;这种现象有一个专门的称谓——“周日夜晚焦虑症&#xff08;Sunday Scaries&#xff09;”。明天又是周一&#xff0c;闹钟又要重新在七点响彻卧房&#xff1b;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →