
信号产生到触发过程
发布日期:2021-05-08 05:54:25
浏览次数:21
分类:精选文章
本文共 684 字,大约阅读时间需要 2 分钟。
信号是怎么产生的
信号可以由内核或进程产生。在 UNIX 系统中,信号是操作系统用来通知进程某些事件的机制。进程可以通过特定的系统调用请求内核生成信号。信号怎么发送到进程
信号的发送过程需要经历内核和进程的双向通信。在早期 UNIX 版本中,信号是通过内核直接发送到目标进程的。但在后来的 Linux 系统中,信号的传递机制得到了改进。内核到接受进程
在早期 UNIX 版本中,进程需要维护一个未处理信号的位图。当内核发送信号时,如果目标进程已经处理了该信号,信号会被丢弃。这样的信号称为不可靠信号(Undependable Signals)。每次执行完信号处理函数后,进程需要重复注册信号处理表,这会导致默认行为恢复。在后来的 Linux 版本中,内核改进了信号传递机制。信号被保存到信号队列中。但为了兼容早期版本对 0-31号信号的处理,Linux 系统仍然保留了对这些信号的原样处理。
信号处理过程
在处理信号时,内核会切换进程的执行状态。当进程从内核态切换到用户态之前,系统会检查是否有待处理的信号。如果有且该信号未被阻塞,进程会调用相应的信号处理函数。在信号处理函数执行完毕后,进程会再次进入内核态。内核会检测是否有未处理完毕的信号,并恢复用户栈的执行环境。
信号处理的几种处理方式
信号处理有三种主要方式: 1. **默认操作**:系统会根据信号类型执行预定义的处理动作。 2. **用户自定义操作**:进程可以通过信号处理函数定义自己的处理逻辑。 3. **忽略**:某些信号(如 SIGKILL 和 SIGSTOP)无法被忽略,必须由进程处理。发表评论
最新留言
很好
[***.229.124.182]2025年04月11日 05时06分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
VTK:可视化之RandomProbe
2019-03-09
block多队列分析 - 2. block多队列的初始化
2019-03-09
Java时间
2019-03-09
不编译只打包system或者vendor image命令
2019-03-09
The wxWindows Library Licence (WXwindows)
2019-03-09
leetcode——第203题——虚拟头结点
2019-03-09
【编程】C语言入门:1到 100 的所有整数中出现多少个数字9
2019-03-09
MySQL----基础及常用命令
2019-03-09
flink启动(二)
2019-03-09
软件架构设计和MESH经验之谈
2019-03-09
关于宝塔面板安装的mysql用Navicat连接出现2003的错误解决
2019-03-09
Windows2016 FTP用户隔离
2019-03-09
js传入参数是中文的时候出现 “******”未定义错误
2019-03-09
吴恩达机器学习课程笔记(英文授课) Lv.1 新手村(回归)
2019-03-09
pair的用法
2019-03-09
SQL基本操作命令
2019-03-09
C# WinForm程序退出的方法
2019-03-09
onFailure unexpected end of stream
2019-03-09
Flex 布局的自适应子项内容过长导致其被撑大问题
2019-03-09
PL/SQL 动态Sql拼接where条件
2019-03-09