信号
异步通信机制
不可靠/可靠
信号处理方式
忽略 // SIGILL 和 SIGSTOP 不可忽略
捕捉 // SIGILL 和 SIGSTOP 不可捕获
默认
// 信号处理对每一个信号有default(不是上面的默认)处理方式
// 而用户可以修改
// 也就是说如果一个信号如果默认为忽略,但是我可以将其改为 捕捉
常见信号默认用途
ctrl-c SIGINT 终止
除0 SIGFPE 终止
无效内存引用 SIGSEGV 终止
网络带外数据到来 SIGURG 忽略
写一个读终止的管道 SIGPIPE 终止
进程定时器超时 SIGALAM 终止
信号的发送
对一个进程发送一个信号的本质是 把信号挂载到目标进程的信号 pending 队列上去
信号的接收 (不管信号处理方式如何,信号肯定会被接收)
信号真正得到执行的时机是进程执行完异常,返回到用户态的时刻
内核进程是不响应信号的(因为它不会返回到用户态),除非它刻意的去查询
代码分析参考
send
__send_signal() -> complete_signal() -> signal_wake_up() -> signal_wake_up_state()
signal_wake_up_state
if (!wake_up_state(t, state | TASK_INTERRUPTIBLE)) kick_process(t);
用户进程的receive
__irq_usr
ret_to_user_from_irq
slow_work_pending
do_work_pending
do_signal
do_signal
如果是 system call 被信号中断,判断是否需要重启 system call
get_signal() // (2) 从线程的信号 pending 队列中取出信号, //
dequeue_signal 从信号pending队列中,取出优先级最好的信号
ka = &sighand->action[signr-1]; 从信号处理数组sighand中,取出信号对应的处理函数
ka->sa.sa_handler == SIG_IGN : continue // 忽略
ka->sa.sa_handler != SIG_DFL : break ; // break 返回之后 调用 handle_signal//捕获第一步
其他 // 默认
一部分 sig_kernel_ignore // SIGCONT SIGCHLD SIGWINCH SIGURG
一部分 sig_kernel_stop // SIGSTOP SIGTSTP SIGTTIN SIGTTOU
一部分 sig_kernel_coredump->do_coredump // SIGQUIT SIGILL SIGTRAP SIGABRT SIGFPE SIGSEGV SIGBUS SIGSYS SIGXCPU SIGXFSZ
一部分 do_group_exit
handle_signal() // 有对应的用户自定义处理函数,则执行用户态处理函数 // 捕获第二步
compat_setup_frame // 构造返回堆栈,将返回地址替换为 用户注册的信号处理函数
user_fastforward_single_step // 切换到用户态
重启被中断的system call
用户信号执行完毕如何返回?
内核线程 的 receive
if (signal_pending(current))
{
// 自定义信号处理函数
}
flush_signals(current);
上一篇:OK6410A 开发板 (八) 62 linux-5.11 OK6410A linux应用空间常见的异常情景及分析
下一篇:OK6410A 开发板 (八) 60 linux-5.11 OK6410A 异常相关初始化
推荐阅读最新更新时间:2024-11-06 15:30
设计资源 培训 开发板 精华推荐
- LTC3588-2 的典型应用 - 具有 14V 最小 VIN 的纳米级功率能量收集电源
- 桌面HUB+dial
- AM6TW-2405SH35Z 5V 6 瓦双路输出 DC/DC 转换器的典型应用
- STEVAL-LLL007V1,用于 LED1202 12 通道低静态电流 LED 驱动器的评估套件
- stm8s003-mini开发板
- MC56F83000-EVK: 面向MC56F83xxx数字信号控制器的开发板
- 电源热插拔控制器
- 使用单个电感器将正输入转换为负输出的反相 DC/DC 控制器
- LTC3118 的典型应用 - 具有低损耗双输入电源路径的 18V、2A 降压-升压型 DC/DC 转换器
- 板载link的stm32核心板
- LYTSwitch-1 LED驱动器 天生小体积,应用高效率,围观有好礼!
- 兆易创新 GD32E231 DIY 大赛,百套超值型开发板免费申请+重磅豪礼!
- 参赛冲击【万元大奖】啦|2023 DigiKey“智造万物,快乐不停”创意大赛
- 趣味电子技术史话之通信技术史——科技与人文的结合,传奇故事在这里!
- 报名赢【挂灯、浴巾】等好礼|TI MSPM0家用电器和电机控制应用详解
- 6月6日 Microchip 直播|利用单片机设计安全关键型应用时应采取的最佳实践方法
- 【6本精选 ADI 电子书】免费下载 ing
- 想要更直观的了解5G?观看罗德与施瓦茨主题演讲,填问卷赢好礼!
- PI更懂快速充电需求 下载产品资料赢好礼!
- 下载有好礼!TE 户外监控,创建安全稳定社会的重要保障和趋势之选!