软中断与硬中断介绍

描述

  • 硬中断是由外部事件引起的因此具有随机性和突发性;硬中断是否可以嵌套的,是否有优先级(由硬件设计体系决定)。

  • 软中断是执行中断指令产生的,无面外部施加中断请求信号,因此中断的发生不是随机的而是由程序安排好的。

  由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包

  的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。

  为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间

  就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(sofTIrq)来完成。

  这里解释了我们之前在GIC中断系列中对于中断的两个stage的文字。原来这个中断两个阶段是这个意思。

  • 软中断是执行中断指令产生的,而硬中断是由外设引发的。

  • 硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。

  • 硬中断是可屏蔽的,软中断不可屏蔽。

  • 硬中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。

  • 软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。

  中断嵌套、软中断指令

  1、中断嵌套

  Linux下硬中断是可以嵌套的,但是没有优先级的概念,也就是说任何一个新的中断都可以打断正在执行的中断,但同种中断除外。软中断不能嵌套,但相同类型的软中断可以在不同CPU上并行执行。

  2、软中断指令、

  int是软中断指令。

  中断向量表是中断号和中断处理函数地址的对应表。

  int n - 触发软中断n。相应的中断处理函数的地址为:中断向量表地址 + 4 * n。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分