中断机制:cpu在执行指令的时候,收到某个中断信号转而去执行预先设定好的代码,然后再回到原指令流中继续执行。
中断作用:
1)外设异步通知cpu;
2)cpu之间发送消息;
3)处理cpu异常;
4)处理系统调用。
中断上下文和进程上下文:首先,这两个上下文都处于内核中。进程上下文包含进程执行中CPU的所有寄存器中的值、进程的状态以及堆栈中的内容。中断上下文包含硬件传递过来的参数和内核需要保存的一些其他环境(主要是当前被打断执行的进程环境)。进程上下文可休眠,可调度,可响应中断,进程上下文不可休眠,不可调度,屏蔽中断。
中断类型:同步中断和异步中断。同步中断属于进程上下文,执行的和进程相关的指令;异步中断属于中断上下文。异步中断的处理有以下两种方法:
1)立即完全处理:适用于简单好处理的异步中断;
2)立即预处理+稍后完全处理:适用于处理起来比较耗时的中断。
立即完全处理和立即预处理都叫做中断预处理,稍后完全处理叫做中断后处理。中断预处理的实现方法就是直接处理(硬中断),中断后处理有两种实现方法,一是直接中断后处理,有软中断和tasklet,二是线程化中断后处理,有workqueue和中断线程。本来异步中断处理是把中断处理完毕的,整个过程是屏蔽中断的。现在把中断分成了两部分,前半部分屏蔽中断,叫硬中断,处理与硬件相关的紧急部分;后半部分不再屏蔽中断,叫软中断,处理后续的事情。由于软中断不再屏蔽中断,所以提高了系统对中断的响应。
注意硬件中断,软件中断,硬中断,软中断是不同的概念,主要指的是中断的产生方式和处理方式。
不同的中断信号需要有不同的处理方式,系统是靠中断向量号来区分不同的中断信号的。每一个中断信号都会有一个中断向量号,中断向量号是一个整数。cpu收到一个中断信号会根据这个中断的向量号查询中断向量表进而获取相应的处理函数。
如何根据中断信号匹配中断向量号呢,对于cpu异常来说,其向量号是根据cpu架构标准规定的,对于外设来说,其中断向量号是由设备驱动动态申请的;对于ipi中断和指令中断来说,其向量号是由内核规定的。