linux硬中断和软中断的区别

https://zhuanlan.zhihu.com/p/586121191?utm_id=0

https://zhuanlan.zhihu.com/p/157741043

软中断是软件实现的中断,也就是程序运行时其余程序对它的中断;而硬中断是硬件实现的中断,是程序运行时设备对它的中断

硬中断可以直接中断CPU。它会引起内核中相关的代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。

当设备上有数据到达网卡的时候,会给CPU的相关引脚上触发一个电压变化,以通知CPU有数据到达了网卡,来处理数据,cpu会立即暂停手中的工作,来处理这些数据。

CPU简单处理下数据,会触发软中断(Linux各个协议栈函数处理数据),处理完后会把对应的数据放进对应的socket里面去,并且把已经挂起的对应的socket所在的进程激活

注:Linux在硬中断里只完成简单必要的工作,剩下的大部分的处理都是转交给软中断的

硬中断处理过程真的是非常短。只是记录了一个寄存器,修改了一下下CPU的poll_list,然后发出个软中断。就这么简单,硬中断工作就算是完成了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容