科普系列之Linux内核中断

    可以认为,Linux操作系统内核的主要职责在于配合中央处理器CPU管理外部硬件设备(简称外设),如硬盘,键盘,鼠标啊等等。为了达到管理的成效,kernel务必与各个外设进行沟通。沟通方式无外乎两种:轮询和中断。

      所谓轮询, 就是CPU不断地去查询外设的状态。这个不现实。因为如果是通过kernel发出请求并不断轮询的话,然而CPU比外设的运行速度快很多,CPU在KERNEL死等那段时间里啥也不能干,很明显是对宝贵的CPU资源的浪费。最好的方式,当然是,kernel 发出一个请求给外设后,直接切到下一个外设任务或服务于其他外设请求。然后,当请求被外设处理完后, 外设如果需要CPU进行回应或者反馈,就给CPU发出相应的通知信号.CPU 在收到该feedback后,根据任务优先级,可以暂挺目前正在进行的工作,转而处理外设发出的信号。此种处理方式,称之为中断。显然,中断方式更高效,更灵活。

       CPU一般只有很少的引脚,而与之通信的外部设备却很多,因此一般在CPU与现代外部设备之间多了一个中介层:中断控制器。该中断控制器一般可以通过处理器进行编程配置,因此也成为programmable interrupt controller(可编程中断控制器PIC),其一般接到CPU专门用于处理中断的INT 引脚上。

        总之: 基于中断的设备驱动程序指的是硬件设备在需要服务时,向CPU发一个中断信号,引发中断服务处理程序的执行。相对于轮询方式,这种方式大大提高了系统资源的利用率,使内核不必一直等到设备执行完任务后才有事可干,而是在设备工作期间内核就可以转去处理其他事务,直到收到中断请求信号时再回头响应设备。

     在Linux系统中,我们并不是直接从中断向量表调用设备驱动程序的中断服务子程序,而是由Linux系统来接收硬件中断,再由系统来调用中断服务子程序。中断可以在任何一个进程运行时产生,因此在中断服务程序被调用时,不能依赖于任何进程的状态,也就不能调用任何与进程运行环境有关的函数。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值