# 操作系统中断
操作系统中断
中断的分类
中断按照触发的来源可以分为两类,内部中断和外部中断。其中内部中断实在cpu内部引起的,也就是说是由当前的进程触发的所以也叫异常。而外部中断也就是由cpu以外的设备触发的。
外部中断和内部中断
为什么要有外部中断呢?实际上我们可以由cpu来管理所有的设备,比如IO设备。
但是现在就会存在一个问题,IO的响应十分的慢,而cpu的处理十分的快,所以我们就不希望缓慢的IO影响快速的cpu,我们希望cpu能够在他本来等待IO的时间里去干更多的事情。
所以我们的IO设备内部自己就拥有一块控制芯片,他接受了这个IO任务。在他将这任务完成了以后就通过中断通知cpu。
所以我们也就很容易明白外部中断是异步的,而内部中断由于是当前的运行进程引发的,所以很明显是同步的。
中断的处理流程
首先从指令的角度来看起。
当一条指令执行完成以后,cpu检查是否有需要处理的中断。如果需要处理的中断就保存当前重要的上下文信息(并非完整的上下文信息),然后对照中断向量表(中断向量表是由操作系统预设的,也就是软件提供的)查找对应的中断处理程序,并设置下一条指令为中断处理程序的起始指令。这些都是硬件自动完成的。
中断处理程序首先保存当前的上下文环境(更完整的),然后处理中断请求。处理完成之后,回复我们保存的之前的运行时环境,简单来说就是处理了一个中断以后一切又回归的原来的位置。这是软件处理的。
在这里我可以觉得cpu的运行从计算机开机的那一刻起完全就是事件驱动的了。