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

r8uurelv  于 2022-12-03  发布在  Linux
关注(0)|答案(1)|浏览(141)

我读了this的答案,我以为我有了一个清晰的想法。但后来this的答案又把我弄糊涂了。
有人能给予我一个清晰的画面之间的区别信号,异常,硬件中断和陷阱?
另外,我想知道这些块中有哪些CPU抢占的内核代码?

示例会很有帮助。

y53ybaqx

y53ybaqx1#

·中断由硬件为处理器内核外部的事件生成。这些中断本质上是异步的,这意味着处理器不知道何时会生成中断。这些中断也称为硬件中断。例如:键盘在屏幕上键入字符时产生的中断,或定时器中断。
·例外情况:当处理器在执行指令时检测到错误条件时会发生异常,根据报告异常的方式以及导致异常的指令是否可以在不损失程序或任务连续性的情况下重新启动,异常被分类为故障陷阱中止。(这些技术术语至少在x86上使用,也可能在其他体系结构上使用,或一般情况下使用。)示例:除以零,或页面错误。

Traps:基本上是一条指令,告诉内核从用户模式切换到内核模式。在系统调用期间,TRAP指令将强制内核代表进程执行内核(内核模式)内的系统调用代码。2陷阱是一种异常。

x86 int 0x80“软件中断”指令是一个陷阱,与外部中断不同。x86使用单一的处理程序表来处理中断和异常;其他《国际审计准则》也可以这样做。
有些人更广泛地使用这个术语,作为“异常”的同义词。例如,你可能会说“MIPS add将在有符号溢出时捕获,所以编译器总是使用addu”。
·信号:信号由内核或进程生成(kill系统调用)。它们最终由操作系统内核管理,该内核将它们传递给目标线程/进程。例如,除以零指令将导致内核传递SIGFPE信号(算术异常)到运行它的进程。(例如,x86 #DE错误由内核处理,为当前进程生成软件SIGFPE。)
相关:

相关问题