Linux中断中不可睡眠的原因

Linux中断中不可睡眠的原因:
1、在硬中断处理的过程中,部分时候是屏蔽中断的,如果此时睡眠,cpu被调度出去,导致系统无法响应所有中断。
2、系统中是以进程为调度单位,中断不能作为调度单位,如果中断睡眠,被调度出去,将无法调度回来。
    (这一条,应该是设计上的制限,设计时,就没考虑让中断睡眠)
3、中断处理的,一般都是紧急的必须很快处理完成的事务。如果中断处理过程中睡眠了,被调度出去,会导致当前中断不能及时处理完成,会影响到系统的正常运行。
    例如,如果rtc中断中被调度出去,导致系统时钟不能及时更新,调度器失去了调度依据。
    
中断处理过程:
1.进入中断处理程序--->2.保存关键上下文---->3.开中断(sti指令)--->4.进入中断处理程序的 handler--->5.关中断(cli指令)---->6.写EOI寄存器(表示中断处理完成)---->7.开中断。

参考文章:
https://blog.csdn.net/mihouge/article/details/44198375
https://blog.csdn.net/maray/article/details/5770889
https://www.cnblogs.com/nufangrensheng/p/3691127.html

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值