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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。