中断:cpu在执行程序的过程中,出现了某些突发事件时cpu必须暂停执行当前的程序,转去处理突发事件,处理完毕后cpu又返回原程序被中断的位置并继续执行
根据中断入口跳转方法的不同,中断分为向量中断和非向量中断。
采用向量中断的cpu通常为不同的中断分配不同的中断号,当检测到某中断号的中断到来后,就自动跳转到与该中断号对应的地址执行。不同中断号的中断油不同的入口地址。
非向量中断的多个中断共享一个入口地址,进入该入口地址后再通过软件判断中断标志识别具体是哪个中断
也就是说,向量中断由硬件提供中断服务程序入口地址,非向量中断由软件提供入口地址
Linux将中断处理程序顶半部和底半部,顶半部完成尽可能少的比较紧急的功能,它往往只是简单的读取寄存器的中断状态并清除中断标志后进行“登记中断“的工作。”登记中断“指将底半部处理程序挂到底半部执行队列中去
底半部几乎做了中断处理程序所有的事情,而且可以被性的中断打断,这是和顶半部最大的不同
Linux实现的底半部的机制主要有tasklet、工作队列和软中断
硬中断、软中断和信号的区别:
硬中断时外部设备对cpu的中断,软中断通常是硬中断服务程序对内核的中断,而信号则是由内核(或其他进程)对某个进程的中断