1、简介:
中断的概念:
指CPU在执行过程中,出现某些突发事件急待处理,CPU暂停执行当前程序,转去处理突发事件,处理完后CPU又返回原程序被中断的位置继续执行。
中断的分类:
内部中断和外部中断:
内部中断:中断源来自CPU内部(软件中断指令、溢出、触发错误等);
外部中断:中断源来自CPU外部,由外设提出请求。
屏蔽中断和不可屏蔽中断:
可屏蔽中断:可以通过屏蔽字被屏蔽,屏蔽后,该中断不再得到响应;
不可屏蔽中断:不能被屏蔽。
向量中断和非向量中断:
向量中断:CPU通常为不同的中断分配不同的中断号,当检测到某中断号的中断到来后,就自动跳转到与该中断号对应的地址执行;
非向量中断:多个中断共享一个入口地址。进入该入口地址后再通过软件判断中断标志来识别具体哪个是中断。
也就是说向量中断由软件提供中断服务程序入口地址,非向量中断由软件提供中断入口地址。
小知识:Linux中查看/proc/interrupts文件可以获得系统中断的统计信息。如下图所示:
第一列是中断号 第二列是向CPU产生该中断的次数
2、Linux中断编程:
2.1、框架:
Linux将中断分为:顶半部(top half)和底半部(bottom half)