layout | title | category | description | tags |
---|---|---|---|---|
post |
中断处理 |
中断和异常 |
中断处理... |
中断处理 |
内核只要给引起异常的进程发送一个信号就可以处理异常,如果程序自己不处理异常,那么就让内核处理,内核通常会杀死进程。但是这种方法并不适合中断,因为经常会出现一个进程被挂起好久后中断才达到,或者切换到另外一个进程,所以当中断到来的时候,一个可能完全无关的进程正在运行,所以给当前进程发送一个信号是没有用的。
例如当程序员在一个编辑器开发程序,需要输入,这个时候进程切换到一个浏览器的Tab,这个时候程序员通过键盘输入产生了一个中断,这个中断响应在浏览器上是毫无作用的,所以需要其他方法来处理中断。中断处理依赖于中断类型,主要有三种中断:
I/O中断
某些I/O设备需要关注,相应的中断处理程序必须查询设备以确定适当的操作过程。
时钟中断
某种时钟1产生一个中断,这种中断高速内核一个固定的时间间隔已经过去,这些中断大部分是作为I/O中断来处理的。
多处理器中断
多处理系统中一个CPU对另一个CPU发出一个中断。
其中时钟中断以后再说,这里主要记I/O中断和多处理中断。
Footnotes
-
例如一个本地的APIC时钟或者一个外部时钟,会在时钟笔记里记录。 ↩