1. 所谓中断是指CPU在执行程序的过程中,出现了某些突发事件时CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回原程序被中断的位置并继续执行。
根据中断的来源,中断可分为内部中断和外部中断,内部中断的中断源来自CPU内部(软件中断指令、溢出、除法错误等,例如,操作系统从用户态切换到内核态需借助CPU内部的软件中断),外部中断的中断源来自CPU外部,由外设提出请求。
2. 定时器在硬件上也依赖中断来实现,工作原理:它接收一个时钟输入,当时钟脉冲到来时,将目前计数值增1并与预先设置的计数值比较,若相等,证明计数周期满,产生定时器中断并复位目前计数值。
3. Linux将中断处理程序分解为两个半部:顶半部和底半部。顶半部完成尽可能少的比较紧急的功能,底半部完成中断事件的绝大多数任务。
4. Linux中断编程:
申请和释放中断:reques_irq() free_irq()
使能和屏蔽中断:void disable_irq(intirq);
Void disable_irq_nosync(int irq);
Voidenable_irq(int irq);
5. linux系统实现底半部的机制主要有tasklet、工作队列和软中断。
6. 硬中断、软中断和信号的区别:
硬中断是外部设备对CPU的中断,软中断通常是硬中断服务程序对内核的中断,而信号则是由内核(或其他进程)对某个进程的中断。
7.内核中的延时是忙等待或者睡眠等待,为例充分利用CPU资源,使系统有更好的吞吐性能,在对延迟时间的要求并不是很精确的情况下,睡眠等待是值得推荐的。