这几天对中断挺迷糊的,查看了一些资料,问了一些人,算是清楚了一点点皮毛吧,就把自己理解的那点程度总结了一下,如下,其中肯定有不确切的地方,如有哪位前辈看了,还请多多指教指教,有错误请及时指出,谢谢!
cpu工作方法分为两种,一种是轮询方式,另外一种是中断方式。轮询方式为按顺序检查各个设备是否需要使用cpu,比如先检查键盘是否有按键按下需要处理,接着检查鼠标是否移动,再接着检查串口是否有数据输出等等。这种工作方式简单稳定,但是效率不高,很多实时信息有可能得不到及时的处理。而中断的方式是cpu等待中断的发生,cpu有任务的时候执行任务,没有任务的时候就空闲。当有中断发生的时候,若cpu当前空闲,则由空闲转为执行相应的中断服务程序;中断发生时,cpu正在执行其他的程序(非中断服务程序),则cpu保存当前的状态,转而执行相应的中断服务程序,待中断服务程序执行完毕后再执行刚才未执行完毕的程序;中断发生时,cpu正在执行其他的中断服务程序,这时候要看所发生的中断的优先级是否高于当前执行的中断的优先级,若高于,则保存当前的状态,转而指向新发生的中断,执行完毕后再执行刚才未执行完的低优先级的中断服务程序,若低于,则继续执行当前正在执行的程序,新发生的中断进入等待,待当前程序执行完毕后,再去等待中的中断服务程序。这个过程叫做中断的响应。
中断方式又可以分为硬中断和软中断,对于硬中断是不可预知的,比如插上u盘的时候会产生一个硬件中断,插上网线的时候也会产生一个硬件中断来产生相应的中断处理程序等等。对于软中断则是由程序中的中断发生语句所引起的,能够知道中断在什么条件下发生,也可以设置中断的优先级。
阅读(857) | 评论(0) | 转发(0) |