linux中断和异常睡眠问题

中断和异常:

中断只代表异步中断,异常代表同步中断,这样系统调用是异常处理,不是中断处理。

这里异常处理是可以休眠block的,因为异常处理所需的数据是存储在异常栈中,而每个进程都有一个异常栈,所以异常处理和进程是相关联的,这样异常处理可以block,被调度出去???

同步的中断(比如系统调用、缺页异常)是代表当前进程的,本来就是可以block的。  我的理解是中断的发生是不和任何进程关联的,如果它被block,那么它的上下文肯定要被保存下来以恢复执行,但是怎么恢复它执行呢?只能是把中断产生那个时刻正在运行的进程的状态设置为block之类的,等重新调度。这对进程显然是不合理的:我运行得好好的,你中断优先级高,那我可以让你运行,你完了如果不发生调度,那么还是我运行。但是凭什么你中断被block就要把我block与之相对,系统调用可以被block,因为它关联到具体的一个进程。是进程本身的请求得不到满足,那么应该被block。

http://bbs.chinaunix.net/thread-2115820-2-1.html

http://blog.csdn.net/lanmanck/article/details/7282667

原文地址:https://www.cnblogs.com/kkshaq/p/4589242.html