在Linux和Windows下实现信号?

Gri*_*han 4 linux open-source operating-system linux-kernel systems-programming

我不喜欢在编程中使用信号.我主要使用C/C++和Python.但我很想知道如何在Linux(或Windows)中实际实现信号.

如果有任何注册信号需要处理,操作系统是否在信号描述符表中的每条CPU指令后检查?或者是流程经理/调度程序对此负责?

由于信号是异步的,CPU指令在完成之前是否会中断?

Ale*_*nze 6

操作系统绝对不会处理每个指令.没门.太慢了.

当CPU遇到问题(由0像师,访问受限制的资源,或者不是由物理内存备份的存储位置),它会产生一种特殊的中断,称为异常(不与C++/Java的混淆/ etc高级语言异常摘要).

操作系统处理这些异常.如果它是如此需要并且如果可能的话,它可以将异常反映回原始的过程.Windows中的所谓结构化异常处理(SEH)就是这种反思.应使用相同的机制实现C信号.