所谓中断是指CPU在执行过程中,出现某些突发时间急待处理,CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回原程序被中断的位置并继续执行。
中断分为(根据中断源来分):
内部中断(软件中断指令,溢出,除法错误等)【例如操作系统从用户态切换到内核态需借助CPU内部的软件中断】。
外部中断(中断源来自CPU外部,由外设提出请求)。
中断分为(根据是否可屏蔽): 可屏蔽中断 不可屏蔽中断
非向量中断:多个中断共享一个地址。
(由软件判断中断标志来识别具体是哪个中断)。
非向量中断服务程序典型结构:
irq_handler()
{
...
int int_src=read_int_status(); //读硬件的中断相关寄存器
switch(int_src)
//判断中断源
{
case DEV_A:
dev_a_handler();
dev_b_handler();
...
default:
}
...
}