Linux网络驱动数据包接收机制解析
第四章 系统软件平台开发
图4-13 Linux网络驱动程序体系结构
数据包的接收
当来自网络的数据到达网络设备时,网络设备通常有两种途径来接收数据,即轮询方式和中断方式。Linux网络设备采用中断方式接收数据,避免了轮询方式对CPU资源的占用。
-
轮询方式:系统每隔一定的时间就检测一次网络设备,即使无数据到达,也不断地查询,这增加了CPU负担,延迟对紧急数据的响应。
-
中断方式:当物理设备接收到数据时,即触发一个中断信号告知系统。系统收到信号后,根据中断类型调用相应的中断服务程序。这种方式有效提升了CPU的利用率。
当前无论是Linux平台还是Windows平台,网络驱动程序基本都采用中断方式。该方式依赖于硬件中断机制,当新数据到达物理设备时,触发中断请求并发送给系统。系统接收到中断请求后,会调用注册的中断服务程序以响应请求。为了确保系统识别中断号与对应的中断处理程序,网络设备初始化时使用request_irq
函数注册中断号和相应的中断子程序。缺少这一过程,网络设备将无法正常接收数据。
4.82MB
文件大小:
评论区