基于各种参考,我 在Linux中 对 信号的 主观定义 是“用于将特定事件的发生通知进程的触发器。此处的事件可能是指软件异常。此外,信号也可以用于IPC机制。 ” 我的问题是
中断可以看作是CPU与OS内核之间通信的一种方式。信号可以看作是OS内核与OS进程之间通信的一种手段。
中断可能由CPU(异常-例如:除以零,页面错误),设备(硬件中断-例如:可用输入)或CPU指令(陷阱- 例如:系统调用,断点)启动。它们最终由CPU管理,后者“中断”当前任务,并调用OS内核提供的ISR /中断处理程序。
信号可以由OS内核(例如:SIGFPE,SIGSEGV,SIGIO)或进程(kill())启动。它们最终由OS内核管理,由OS内核将它们传递到目标线程/进程,并调用通用操作(忽略,终止,终止和转储核心)或进程提供的信号处理程序。