一、什么是信号?
1.概述
信号量,是操作系统提供的一种用来传递特定消息的机制。通过这种方式,操作系统可以将程序运行过程中发生的各种特殊情况转发给程序,并执行相应的服务函数。
信号的出现是随机的,通过轮询的方式进行判断会消耗大量的CPU资源,所以采用异步事件处理方式,程序告诉操作系统,当某个信号到来时,应该以怎样的方式去处理,也就是当检测到信号到来,操作系统调用相应的服务函数。
2.信号与软件中断
软件中断则是指由计算机软件,通过 int 等机器指令引起的 CPU 执行流程的临时转移过程。比如系统调用,用户程序通过软件中断从用户态进入内核态,并使用内核提供的系统调用函数。
信号与软中断类似,当特定事件发生时,操作系统将对应的信号值发送给相关程序。如果应用程序未设置信号对应的处理程序,操作系统会执行默认处理程序,通常是终止程序。信号处理过程中,存在着 CPU 从用户程序到信号处理程序的执行流程转移。
3.在 C 代码中与信号交互
4.可重入函数
5.多线程应用的信号处理