繁体   English   中英

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

[英]Signal vs Exceptions vs Hardware Interrupts vs Traps

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

有人能给我清楚地说明信号、异常、硬件中断和陷阱之间的区别吗?

另外,我想知道kernel代码中这些块CPU抢占了哪一个?

示例会有所帮助。

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

异常:当处理器在执行指令时检测到错误条件时发生异常,异常被分类为故障陷阱中止,具体取决于它们的报告方式以及导致异常的指令是否可以在不丢失程序或任务的情况下重新启动。连续性。 (这些技术术语至少在 x86 上使用,可能在其他架构或一般情况下使用。)示例:除以零或页面错误。

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

有些人更普遍地使用这个术语,作为“例外”的同义词。 例如,您可能会说“MIPS add会陷入有符号溢出,因此编译器总是使用addu 。”

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


有关的:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM