怎么阅读 Linux 内核源马

经常在后台收到读者的交流,Linux 源码那么庞大,飞哥你是如何读的呢?由于问这个问题的太多,我想有必要专门写一篇文章聊一聊。

首先,我先说一点,其实我本人不是搞内核相关工作的。我和大多数同学都一样,从事的也是应用层上的开发,负责的是后端模块。

那我为什么要研究源码这个之前我说过,是因为我在多年的工作中遇到的很多问题都是底层相关的。不深入底层看一看,感觉永远是在隔靴挠痒,永远理解不到问题的本质。(这里说的底层其实也不只是包括 Linux 内核,还包括一些硬件的组成原理啥的)。

飞哥走过的弯路

虽然咱们今天的主题是源码,不过我并不建议你一开始就陷入到源码里,这也是我走过的弯路。

在我刚开始想深入挖掘网络性能的时候,我买来了《深入理解 LINUX 内核》《深入理解 Linux 网络技术内幕》等几本书。这本书里介绍了内核中各个组件,如网卡设备、邻居子系统、路由等,把相关源码都讲了一遍。

我啃了好长时间,但结果是看完以后感觉还是一团浆糊。尤其是到了工作中具体的一个实际问题的时候,发现根本还是理解不了网络模块到底是怎么运作的。比如一个包到底是如何从网卡到应用程序中的,这些书看半天还是弄不明白这个问题。就更别提后续搞一些网络优化的事情了。

到了后来,我改变了战术,才算是柳暗花明又一村,找到了真正正确、高效的方法。

产生问题

我所找到的正确方法就是,以工作中的实际问题为核心

回头想想我们看源码的目的是啥呢,是要把 Linux 搞明白?我想不是,把 Linux 搞明白只是途径,而我们的真正目的是为了提高我们手头的工作。

比如,我想观察我的服务中 Linux 的收包的过程是否出现了问题,以及想尝试在这个接收过程中都有哪些优化方法。基于这个工作中的需求出发,然后我就四处开始翻资料,打算要把 Linux 是如何接收和处理一个网络包彻底搞搞清楚。包括我之前看过的源码的书,也查了好多网络上的文章。最后终于摸出了个十之八九,总结出了图解Linux网络包接收过程。

再比如我手头的项目中很多地方需要维持长连接,那么我就想搞明白一台 Linux 服务器最多能支撑多少个 TCP 连接?这种问题更是,几乎没有任何书,任何资料,任何

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值