第二十二节、中断基础概念
本节用于介绍中断基础概念
1、什么是中断?
CPU在正常运行期间,由外部或者内部引起的事件,让CPU停下当前正在运行的程序,转而去执行触发他的中断所对应的程序,这个就是中断。
举例:
我现在正在厨房做饭,突然电话响了,然后我关火去接电话,接完电话在回去开火继续做饭,这个过程就是中断的一个过程。
在这个看似简单的过程中,却涉及到了中断的几个过程,我们一起来看一下:
<1>电话铃声响了:中断请求
<2>我要去接电话:中断响应
<3>我关掉火:保护现场
<4>我接电话的过程:中断处理
<5>接完电话回到厨房开火:恢复现场
<6>继续做饭:中断返回
<7>如果我不接电话:中断屏藏
2、什么是中断上下文,为什么会有中断上下文?
中断的存在可以极大的提高CPU的运行效率,但是中断会打断内核进程中的正常调度和运行,所以为保证系统实时性,中断服务程序必须足够简短,但实际应用中某些时候发生中断时必须处理大量的事物,这时候如果都在中断服务程序中完成,则会严重降低中断的实时性,基于这个原因,linux系统提出了一个概念:把中断服务程序分为两部分:中断上文和中断下文。
中断上文:完成尽可能少切比较急的任务,中断上文的特点就是响应速度快。
中断下文:处理中断剩余的大量比较耗时间的任务,而且可以被新的中断打断。
举例:
我现在正在厨房做饭,突然电话响了,然后我关火去接电话,快递员打电话让我下楼去拿快递,接完电话叫我女朋友去下楼拿快递,然后我在回去开火继续做饭,这个过程就是中断上下文。
分析:
快递员打电话让我下去拿快递,这个事情很紧急,所以要快速处理,这个就是要在中断上文中完成。但是下楼拿快递这个过程非常耗时间,所以叫女朋友去拿快递,这个就是中断下文。下楼拿快递很耗时间,如果我不叫女朋友去帮我拿而是自己拿,等我拿完饭回来我锅里的菜是不是就凉了呀,同理,如果你在中断里面做很耗时间的时间,系统就会崩溃。
如果女朋友在去拿快递的过程中,突然口渴了,要去超市买水,所以,中断下半部分是可以被中断打断的。
总之:
中断上文越快越好,中断下文可以做比较耗时间的事情,但是你不能死循环。
3、Linux中断可以嵌套吗?
以前是可以,现在不可以。