【Linux内核】中断和中断处理

中断上半部分

中断

1.计算机处理器的速度和外围硬件设备(例如键盘)的速度往往不在一个数量级上

2.我们可以让硬件完成任务时向内核发出一个信号,这就是中断机制,中断使得硬件得以发出通知给处理器

3.不同设备的中断都有一个唯一的数字标志,比如IRQ 1是键盘中断

4.中断的数字值有的是固定的,有的是可变的,PCI上面的中断就是动态分配的

5.中断不需要考虑也处理器时钟同步,相比之下,异常需要考虑与处理器时钟同步

6.响应中断时,内核会执行不同的中断处理程序,中断处理程序是驱动的一部分,驱动也是内核的一部分

7.中断处理程序运行在中断上下文中,该上下文中的执行代码不可阻塞,所以中断处理程序应该尽可能短的时间内完成运行,为了让中断能又好又快的运行,我们把中断切分为两部分:

  • 中断处理程序是上半部分★,处理能快速完成又不能拖延的工作
  • 然后下半部分开始执行允许延迟的工作

8.硬件对应的驱动程序需要通过request_irq注册一个中断处理程序

  • 可以设置是否在执行中断处理程序时禁用其他中断,但是一般不设置
  • 是否可以共享中断线等等
  • 在卸载驱动程序时,要调用free_irq来注销中断处理程序

9.编写中断处理程序

  • 中断处理程序要和request_irq里面handler要求的一致
  • 中断处理程序返回的值可能有两种情况
    • IRQ_NONE 检测到中断,但是中断对应的不是这个程序
    • IRQ_HANDLED 中断处理程序被正确调用
  • 处理中断时,同一中断线不能再处理其他中断
  • 共享中断线的中断处理程序有些特殊要求,否则不能共享了

10.当执行一个中断处理程序时,内核处于中断上下文,在中断上下文中,不能调用一些会睡眠的函数,中断上下文中的代码应该迅速,间接,因为它可能打断了其他代码甚至另一中断处理程序,我们应该把缓慢的工作放在下半部分执行

11.系统中与中断相关的统计信息位于/proc/interrupts文件中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值