沧州最新动态:如何高效进行tp5网站开发?

摘要:tp5网站开发步骤,沧州最新消息今天,网站定制牛七科技,创建网页链接1、数据如何从网卡到网络协议栈 1.1内核收包的过程 1、数据帧从外部网络到达网卡 2、网卡把数据帧从自己的缓存DMA(拷贝到)和内核共有的RingBuffer上 3、网卡
tp5网站开发步骤,沧州最新消息今天,网站定制牛七科技,创建网页链接1、数据如何从网卡到网络协议栈 1.1内核收包的过程 1、数据帧从外部网络到达网卡 2、网卡把数据帧从自己的缓存DMA(拷贝到)和内核共有的RingBuffer上 3、网卡发出硬中断通知CPU 4、CPU响应硬中断#xff0c;简单处理后发出软中断 5、k’softirqd线程处理软中断#xff0c;调…1、数据如何从网卡到网络协议栈 1.1内核收包的过程 1、数据帧从外部网络到达网卡 2、网卡把数据帧从自己的缓存DMA(拷贝到)和内核共有的RingBuffer上 3、网卡发出硬中断通知CPU 4、CPU响应硬中断简单处理后发出软中断 5、k’softirqd线程处理软中断调用网卡驱动注册的poll函数开始收包 6、帧被从RingBuffer上摘下来被保存为一个skb 7、协议层开始处理网络帧处理玩后的数据data被放到socket的接收队列中 8、内核唤醒用户进程 1.2 ksoftirqd内核线程的创建 Linux的软中断都是在专门的内核线程(ksoftirqd)中进行的。 该线程的数量等于设备的核数。 系统初始化的时候在kernel/smpboot.c中调用smpboot_register_percpu_thread,该函数进一步会执行到spawn_ksoftirqd位于kernel/softirq.c来创建出softirqd线程。 相关代码如下 static struct smp_hotplug_thread softirq_threads {.store ksoftirqd,.thread_should_run ksoftirqd_should_run,.thread_fn run_ksoftirqd,.thread_comm ksoftirqd/%u, };static __init int spawn_ksoftirqd(void) {cpuhp_setup_state_nocalls(CPUHP_SOFTIRQ_DEAD, softirq:dead, NULL,takeover_tasklets);BUG_ON(smpboot_register_percpu_thread(softirq_threads));return 0; } early_initcall(spawn_ksoftirqd); 当ksoftirqd被创建出来以后就会进入线程循环函数ksoftirqd_should_run和run_ksoftirqd了。接下来判断有没有软中断需要处理。软中断不只有网络软中断还有其他类型。
阅读全文