日期:2014-05-16  浏览次数:20695 次

请教内核高手,抽空解释一下系统中断调用处理流程
RT,我在Linux0.12的流程的时候,知道了信号是在时钟中断或者系统调用处理的时候 被 检测和处理的,这是为什么?
还有为什么在返回前需要判断任务是否就绪?而不是执行?如果不是普通用户进程就不会检测和处理信号,这是为什么?

------解决方案--------------------
为什么信号是在中断和系统调用返回时检测?
1. 因为信号有可能是在异常处理函数里面发送的;
2. 因为信号有可能是通过系统调用发送给其他任务的;
3. 信号有实时的含义(尽量实时):程序通常希望在发生这个信号代表的事件时,能够立即作出处理。只要在信号发生的地点后判断下是否有信号,就能尽量保证信号的实时性。

信号是用户态进程才具有的一种通信手段,用户态进程可以使用信号来异步通知事件;内核线程利用其他手段(不包括信号)来进行异步通信。