一尘不染

发出信号并中断比较

linux

基于各种参考,我 在Linux中信号的 主观定义
是“用于将特定事件的发生通知进程的触发器。此处的事件可能是指软件异常。此外,信号也可以用于IPC机制。 ” 我的问题是

  • 我假设只有异常(软件中断)是通过信号通知的。
  • 信号的各种来源是什么?在我看来,内核始终是信号的来源。(用于IPC时除外)
  • 信号处理程序和ISR之间的区别?
  • 信号屏蔽和中断屏蔽之间的区别?

阅读 212

收藏
2020-06-07

共1个答案

一尘不染

中断可以看作是CPU与OS内核之间通信的一种方式。信号可以看作是OS内核与OS进程之间通信的一种手段。

中断可能由CPU(异常-例如:除以零,页面错误),设备(硬件中断-例如:可用输入)或CPU指令(陷阱-
例如:系统调用,断点)启动。它们最终由CPU管理,后者“中断”当前任务,并调用OS内核提供的ISR /中断处理程序。

信号可以由OS内核(例如:SIGFPE,SIGSEGV,SIGIO)或进程(kill())启动。它们最终由OS内核管理,由OS内核将它们传递到目标线程/进程,并调用通用操作(忽略,终止,终止和转储核心)或进程提供的信号处理程序。

2020-06-07