什么是中断
中断(Interrupt)是一种在计算机中被广泛应用的一种重要的技术,它是一种CPU事件处理机制。其本质是一个电信号,这个信号由某个硬件或软件产生并由处理器处理。当处理器接收到中断信号时会暂停当前任务,跳到一个叫中断服务例程(ISR)的一段程序中处理中断,当中断被处理完成后,CPU将回到原来的任务继续工作。与中断相对的事件处理机制是轮询,顾名思义就是不断的询问相关的硬件是否做好准备。
中断的一个比较常见的例子是磁盘读写。我们都知道,磁盘的速度与CPU的速度不在一个数量级上面(ms和ns的区别),当CPU希望从磁盘上面拷贝一个或多个扇区到内存时,如果采用轮询的方法,CPU需要在这个过程中不断的将数据从磁盘读入寄存器,再从寄存器写入到内存中。需要注意的是CPU与磁盘的速度有着巨大的差异,两者相差将近6个数量级,这样会使得CPU在把大部分的时间都花在等待磁盘响应上面,这无疑是一种浪费——在磁盘读写期间CPU完全可以进行其他的运算,却浪费在了无意义的等待上面。而如果使用中断的方法,CPU将会把磁盘请求发送给一个叫DMA控制器的硬件,然后把当前任务挂起,先执行其他任务。DMA会“接管”这个工作,有它负责代替CPU完成轮询的工作,并通过总线直接将数据写到内存上面。复制完成后,它会触发一个中断通知CPU已经复制完成,CPU响应后就可以继续执行请求磁盘读写的任务。这样一来,CPU就不再需要等待拖拉的磁盘了。事实上,现代计算机都离不开中断,我们对计算机的任何的一个操作(包括鼠标或键盘),都会触发相应的中断,系统调用也需要通过中