Linux网络大师课:掌握底层知识,理解高性能原理
文章平均质量分 93
Lee达森
keep learning...
展开
-
Linux网络大师课:内核是如何与⽤户进程协作的?
3.1相关实际问题在上章中讲述了网络包如何从网卡送到协议栈的,接下来内核还有一项重要的工作,就是在协议栈接收处理完输入包以后,要能通知到用户进程,让用户进程能够收到并处理这些数据。进程和内核配合有很多种方案,本章只深入分析两种典型的。第一种是同步阻塞的方案(在Java中习惯叫B1O),一般在客户端使用。它的优点是使用起来非常方便,非常符合人的思维方式,但缺点就是性能较差。典型的用户进程代码如下。第二种是多路IO复用的方案,这种方案在服务端用得比较多。原创 2024-01-05 00:05:13 · 894 阅读 · 0 评论 -
Linux网络大师课:内核是如何接收⽹络包的
这里可以看到,list_add_tail修改了CPU变量softnet_data里的poll_list,将驱动napi_struct传过来的poll_list添加了进来。以上代码中,-igbopen函数调⽤了igb_setup_all_tx_resources和igb_setup_all_rx_resources. 在调⽤igb_setup_all_rx_resources这⼀步操作中,分配了RingBuffer,并建⽴内存和Rx队列的映射关系。在ip_route_input_mc。原创 2024-01-02 21:09:21 · 846 阅读 · 0 评论 -
Linux网络大师课:(一)写在前面
为什么要写这个教程平时⼤家都是⽤各种语⾔进⾏业务逻辑的代码编写,⽆论你⽤的是PHPGO,还是Java,都属于应⽤层的范畴。但是应⽤层是建⽴在物理层和内核层之上的。我把在应屏层的技术能⼒称为外功,把Linux内核、设备物理结构⽅⾯的技术能⼒称为内功。前⾯⼰经说了,⽆论是在职业⽣涯的哪个阶段,扎实的内功都很重要。那好,既然内功如此重要,那就找⼀些底层相关的资料加强学习就⾏了。但很遗憾,我觉得⽬前市⾯上的技术资料在内功⽅向上存在⼀些不⾜。先说⽹上的技术⽂章。原创 2024-01-02 16:48:56 · 923 阅读 · 0 评论