软中断,硬中断

软中断,也叫同步中断。软中断是由CPU执行中断产生指令时产生,是由程序预先实现好的,不是随机的。

硬中断,也叫异步中断。硬中断是由硬件设备依照CPU时钟信号产生的,即意味着中断发生具有随机性和突发性,能够在指令正在执行时发生。例如键盘中断。

 

软中断产生源有两种:

1、硬中断处理程序产生。即:将硬中断处理程序分成"上半部"和"下半部"。上半部在屏蔽中断的上下文中运行,用于完成关键性的处理动作,然后产生软中断。下半部就是软中断处理程序,对时间要求不是非常紧急,通常比较耗时的,因此不在硬中断服务程序中执行。

     如:打印机端口产生一个硬件中断时,会执行硬件中断处理程序,硬中断处理程序会产生一个软中断并送到操作系统内核里,在软中断处理程序中唤醒睡眠在打印任务队列的处理进程。

2、软件程序执行过程中,主动产生的软件中断。

     如:程序执行过程出现异常时,主动调用abort()时,产生SIGABRT软中断。

     如:执行系统调用sleep(),当睡眠时间到达时,通过软中断触发该进程被唤醒。

 

中断抢占:

1、硬中断可以被另一个优先级更高的硬中断“中断”,不会被同级(同一种硬中断)或低级的硬中断“中断”,更不会被软中断“中断”。

2、软中断可以被硬中断“中断”,但是不会被其它软中断“中断”。

3、在一个CPU上,软中断总是串行执行。所以在单处理器上,对软中断的数据结构进行访问不需要进行任何同步处理。但是,多个CPU可以同时执行软中断。

4、由硬中断产生的软中断,在硬中断执行完成后,会马上执行软新产生的软中断。但是,如果有其它软中断正在执行,为了保证上述第2点,会先判断当前是否在中断上下文中。如果是在中断上下文中,说明有其它中断正在执行,则不再执行该新产生的软中断,软中断处理程序需要依赖OS重新调度。(有疑问,不确定,欢迎大家指点)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值