信号、异常、硬件中断、陷阱

Ram*_*man 3 linux cpu kernel interrupt

我读了这个答案,我想我有了一个清晰的想法。但这个答案又让我困惑了。

有人可以给我一个清晰的图片来说明信号、异常、硬件中断和陷阱之间的区别吗?

另外,我想知道这些块CPU抢占的内核代码中有哪些?

例子会很有帮助。

bit*_*ter 6

\xe2\x80\xa2中断由硬件为处理器核心外部的事件生成。\n这些中断本质上是异步的,这意味着处理器不知道何时生成中断。这些也称为硬件中断。示例:键盘产生的中断,用于在屏幕上键入字符,或定时器中断。

\n

\xe2\x80\xa2异常:当处理器在执行指令时检测到错误条件时,就会发生异常,并根据报告方式以及导致异常的指令是否可以重新启动而被分类为故障陷阱中止失去计划或任务的连续性。(这些技术术语至少在 x86 上使用,也许是其他架构或一般情况下使用。)示例:除以零,或页面错误。

\n

\xe2\x80\xa2 Traps:基本上是一条告诉内核从用户模式切换到内核模式的指令。示例:在系统调用期间,TRAP 指令将强制内核代表进程执行内核(内核模式)内的系统调用代码。\nTrap 是一种异常。
\nx86 int 0x80“软件中断”指令是一个陷阱,不像外部中断。x86 对中断和异常使用单个处理程序表;其他 ISA 也可能这样做。

\n

有些人更普遍地使用这个术语,作为“例外”的同义词。例如,您可能会说“MIPSadd将捕获有符号溢出,因此编译器始终使用addu.”

\n

\xe2\x80\xa2信号:信号由内核或进程(系统调用)生成kill。它们最终由操作系统内核管理,并将它们传递到目标线程/进程。例如,除以零指令将导致内核向运行它的进程传递 SIGFPE 信号(算术异常)。(例如,x86 #DE 故障由内核处理,为当前进程生成软件 SIGFPE。)

\n
\n

有关的:

\n\n

  • 1. 中断可以由硬件发出。2. 异常不是同步的。3.所有的东西都可以陷入内核。4. 信号并不总是由内核生成(进程间信号也会发生)。 (3认同)