软中断与硬中断如何合二为一,形成一种全新的中断机制?

2026-04-12 03:580阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计870个文字,预计阅读时间需要4分钟。

软中断与硬中断如何合二为一,形成一种全新的中断机制?

1. 当网卡接收到从网络中发送过来的数据后,网卡会向CPU发送一个中断。当CPU接收到网卡的中断后,它会调用中断处理服务程序来处理数据。2. 由于处理硬件中断需要消耗CPU资源,因此会调用网卡驱动程序来驱动内核注册的中断处理服务。

1.当网卡接收到从网络中发送过来的数据后,网卡会向 CPU 发起一个硬件中断。当 CPU 接收到网卡的硬件中断后,便会调用网卡驱动向内核注册的中断处理服务

2.由于在处理硬件中断服务时会关闭硬件中断,所以在处理硬件中断服务的过程中,如果发生了其他的硬件中断,也不能得到有效的处理,从而导致硬件中断丢失的情况。为了避免这种情况出现,Linux 内核把中断处理分为:中断上半部和中断下半部,上半部在关闭中断的情况下进行,而下半部在打开中断的情况下进行。由于中断上半部在关闭中断的情况下进行,所以必须要快速完成,从而避免中断丢失的情况。而中断下半部处理是在打开中断的情况下进行的,所以可以慢慢进行。

收包流程:

IRQ

|--> napi_schedule

|--> __napi_schedule

|--> napi_struct加入poll_list中

|--> net_rx_action // 软中断

net_rx_action 中会对包的个数,以及软中断处理时间进行限制

|--> 驱动poll方法

|--> napi_gro_receive()

|--> netif_receive_skb()

|--> __netif_receive_skb()


网卡接收到数据包后,会通过硬件中断的方式,通知内核有新的数据到了。

阅读全文

本文共计870个文字,预计阅读时间需要4分钟。

软中断与硬中断如何合二为一,形成一种全新的中断机制?

1. 当网卡接收到从网络中发送过来的数据后,网卡会向CPU发送一个中断。当CPU接收到网卡的中断后,它会调用中断处理服务程序来处理数据。2. 由于处理硬件中断需要消耗CPU资源,因此会调用网卡驱动程序来驱动内核注册的中断处理服务。

1.当网卡接收到从网络中发送过来的数据后,网卡会向 CPU 发起一个硬件中断。当 CPU 接收到网卡的硬件中断后,便会调用网卡驱动向内核注册的中断处理服务

2.由于在处理硬件中断服务时会关闭硬件中断,所以在处理硬件中断服务的过程中,如果发生了其他的硬件中断,也不能得到有效的处理,从而导致硬件中断丢失的情况。为了避免这种情况出现,Linux 内核把中断处理分为:中断上半部和中断下半部,上半部在关闭中断的情况下进行,而下半部在打开中断的情况下进行。由于中断上半部在关闭中断的情况下进行,所以必须要快速完成,从而避免中断丢失的情况。而中断下半部处理是在打开中断的情况下进行的,所以可以慢慢进行。

收包流程:

IRQ

|--> napi_schedule

|--> __napi_schedule

|--> napi_struct加入poll_list中

|--> net_rx_action // 软中断

net_rx_action 中会对包的个数,以及软中断处理时间进行限制

|--> 驱动poll方法

|--> napi_gro_receive()

|--> netif_receive_skb()

|--> __netif_receive_skb()


网卡接收到数据包后,会通过硬件中断的方式,通知内核有新的数据到了。

阅读全文