linux-do_signal
在 Linux 内核中do_signal是信号处理机制的核心发动机。它并不负责“发送”信号那是 send_signal 的事而是负责**“交付”Delivery**——即当一个进程从内核态返回用户态的临界时刻检查是否有挂起的信号并执行相应的处理动作。1. 核心触发时机返回用户态的前夜do_signal 不是被随机调用的它通常发生在以下路径系统调用返回执行完 sys_read 等调用准备返回时。中断/异常返回时钟中断或缺页异常处理完毕返回时。逻辑闭环 内核在从 entry_INT80_32 或 entry_SYSCALL_64 返回前会检查当前线程的 TIF_SIGPENDING 标志。如果置位则调用 do_signal。2. 源码逻辑拆解 (以 x86 架构为例)在内核源码 arch/x86/kernel/signal.c 中do_signal 的核心逻辑可以概括为以下步骤第一步获取待处理信号 (get_signal)内核会调用 get_signal 从进程的信号队列pending中取出一个信号。屏蔽检查如果信号被 sigprocmask 阻塞则跳过。默认行为处理如果信号的动作是 SIG_IGN忽略或 SIG_DFL默认且无害如 SIGCHLD内核直接在这里处理掉不打扰用户态。致命信号处理如果是 SIGKILL 或 SIGSTOP内核直接让进程终止或停止永远不会返回用户态。第二步处理用户自定义 Handler (handle_signal)如果信号绑定了用户态的处理函数通过 sigaction 注册do_signal 就会调用 handle_signal。第三步伪造栈帧 (The Signal Trampoline)这是最精妙的地方。由于处理函数在用户态内核不能直接跳转。保存上下文内核将当前的寄存器状态包括 EIP/RIP压入用户栈构建一个 sigframe。修改 EIP将内核栈回跳地址修改为用户态信号处理函数的入口。插入返回代码在用户栈里埋下一段特殊的指令sigreturn 系统调用。3. 为什么需要陷入和返回理解 do_signal 的关键在于信号处理函数运行在用户态但决策由内核态做出。执行路径变更原本 CPU 应该回到系统调用后的下一行指令执行但 do_signal 强行把 EIP 改成了处理函数的地址。执行 Handler用户执行处理逻辑。恢复现场 (sys_sigreturn)处理函数结束后执行之前埋下的 sigreturn。这会再次陷入内核由内核从用户栈读取 sigframe恢复原来的寄存器状态原来的 EIP。

相关新闻

20260309202450367-软件稀缺性的终结:AI 时代的数字助理与长尾革命

20260309202450367-软件稀缺性的终结:AI 时代的数字助理与长尾革命

告别应用商店:AI 时代的“阅后即焚”软件与个人知识重塑 最近读了在X上读到了 Andrej Karpathy 的一篇推文,深受启发。他为了将自己的静息心率从 50 降到 45,决定做一个为期 8 周的有氧运动实验。但他没有去应用商店寻找现成的 App&#xff0…

2026/5/17 11:04:03 阅读更多 →
写论文省心了!专科生专属AI论文写作软件 —— 千笔ai写作

写论文省心了!专科生专属AI论文写作软件 —— 千笔ai写作

你是否曾为论文选题发愁,苦于找不到合适的切入点?是否在撰写过程中屡屡受挫,反复修改仍不满意?又或是面对查重率和格式问题感到无从下手?对于专科生来说,论文写作不仅是学术能力的考验,更是时间…

2026/5/17 8:45:00 阅读更多 →
4步攻克VRM格式转换:从模型导入到跨平台适配的完整解决方案

4步攻克VRM格式转换:从模型导入到跨平台适配的完整解决方案

4步攻克VRM格式转换:从模型导入到跨平台适配的完整解决方案 【免费下载链接】VRM-Addon-for-Blender VRM Importer, Exporter and Utilities for Blender 2.93 or later 项目地址: https://gitcode.com/gh_mirrors/vr/VRM-Addon-for-Blender 在3D内容创作的跨…

2026/7/5 3:53:30 阅读更多 →

最新新闻

openEuler安全设施实战指南:从日志分析到入侵检测的10个最佳实践 [特殊字符]

openEuler安全设施实战指南:从日志分析到入侵检测的10个最佳实践 [特殊字符]

openEuler安全设施实战指南:从日志分析到入侵检测的10个最佳实践 🔒 【免费下载链接】security-facility The repository for security facility SIG 项目地址: https://gitcode.com/openeuler/security-facility 前往项目官网免费下载&#xff1…

2026/7/5 8:06:17 阅读更多 →
NestOS-Config核心架构解析:深入理解rpm-ostree与ignition配置

NestOS-Config核心架构解析:深入理解rpm-ostree与ignition配置

NestOS-Config核心架构解析:深入理解rpm-ostree与ignition配置 【免费下载链接】nestos-config nestos-config provides base manifest configuration for building NestOS. 项目地址: https://gitcode.com/openeuler/nestos-config 前往项目官网免费下载&am…

2026/7/5 8:04:16 阅读更多 →
ExtFUSE社区贡献指南:如何参与这个开源文件系统革命

ExtFUSE社区贡献指南:如何参与这个开源文件系统革命

ExtFUSE社区贡献指南:如何参与这个开源文件系统革命 【免费下载链接】extfuse Extension Framework for FUSE 项目地址: https://gitcode.com/openeuler/extfuse 前往项目官网免费下载:https://ar.openeuler.org/ar/ ExtFUSE(Extensi…

2026/7/5 8:00:16 阅读更多 →
如何让英雄联盟游戏体验提升3倍?探索LeagueAkari的智能辅助革命

如何让英雄联盟游戏体验提升3倍?探索LeagueAkari的智能辅助革命

如何让英雄联盟游戏体验提升3倍?探索LeagueAkari的智能辅助革命 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否曾因错过对局…

2026/7/5 8:00:16 阅读更多 →
OpenEuler SONIC内核补丁与标准Linux内核的7个主要差异:网络性能优化终极指南

OpenEuler SONIC内核补丁与标准Linux内核的7个主要差异:网络性能优化终极指南

OpenEuler SONIC内核补丁与标准Linux内核的7个主要差异:网络性能优化终极指南 【免费下载链接】sonic-linux-kernel The OpenEuler kernel patches used with SONIC 项目地址: https://gitcode.com/openeuler/sonic-linux-kernel 前往项目官网免费下载&#…

2026/7/5 8:00:16 阅读更多 →
如何轻松获取高质量音乐:六音音源修复版完整使用指南

如何轻松获取高质量音乐:六音音源修复版完整使用指南

如何轻松获取高质量音乐:六音音源修复版完整使用指南 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 想要免费享受高品质音乐吗?六音音源修复版为你提供了完美的解决方案&…

2026/7/5 7:58:16 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻