网络数据包到达网卡后,先由网络驱动以DMA的方式将网卡上的帧写进内存(自己的ringbuffer)里面,然后向cpu的中断控制器发起一个中断信号(给cpu引脚电压变化),cpu就会执行网卡注册的中断处理程序然后发出一个软中断请求将后续的任务交给ksoftirq这个线程(改变内存变量的方式),调用poll收包然后把包交给tcp udp/ip协议栈处理(看标记位返回数据,操作缓冲区啥的)
调用read函数—>进入内核态—>到socket接收队列中查看是否有数据—>没数据或者数据不够多就这个进程就会进入socket的等待队列里—>让出cpu