Linux设备驱动开发详解--笔记10--中断与时钟

来源:互联网 发布:景安网络免费服务器 编辑:程序博客网 时间:2024/06/16 00:02

中断:cpu在执行程序的过程中,出现了某些突发事件时cpu必须暂停执行当前的程序,转去处理突发事件,处理完毕后cpu又返回原程序被中断的位置并继续执行

 

根据中断入口跳转方法的不同,中断分为向量中断和非向量中断。

采用向量中断的cpu通常为不同的中断分配不同的中断号,当检测到某中断号的中断到来后,就自动跳转到与该中断号对应的地址执行。不同中断号的中断油不同的入口地址。

非向量中断的多个中断共享一个入口地址,进入该入口地址后再通过软件判断中断标志识别具体是哪个中断

也就是说,向量中断由硬件提供中断服务程序入口地址,非向量中断由软件提供入口地址

 

Linux将中断处理程序顶半部和底半部,顶半部完成尽可能少的比较紧急的功能,它往往只是简单的读取寄存器的中断状态并清除中断标志后进行“登记中断“的工作。”登记中断“指将底半部处理程序挂到底半部执行队列中去

 

底半部几乎做了中断处理程序所有的事情,而且可以被性的中断打断,这是和顶半部最大的不同

 

Linux实现的底半部的机制主要有tasklet、工作队列和软中断

 

硬中断、软中断和信号的区别:

硬中断时外部设备对cpu的中断,软中断通常是硬中断服务程序对内核的中断,而信号则是由内核(或其他进程)对某个进程的中断