Skip to content

Commit 99da109

Browse files
committed
Site updated: 2020-06-09 11:14:16
1 parent 7b2a89a commit 99da109

File tree

4 files changed

+4
-0
lines changed

4 files changed

+4
-0
lines changed
244 Bytes
Binary file not shown.

img/howTolearnlinux.jpeg

224 KB
Loading

index.html

79 Bytes
Binary file not shown.

search.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5638,6 +5638,10 @@
56385638
<h4 id="第四个坡:阅读-Linux-内核代码,聚焦核心逻辑和场景"><a href="#第四个坡:阅读-Linux-内核代码,聚焦核心逻辑和场景" class="headerlink" title="第四个坡:阅读 Linux 内核代码,聚焦核心逻辑和场景"></a>第四个坡:阅读 Linux 内核代码,聚焦核心逻辑和场景</h4><p>在了解内核机制的时候,你肯定会遇到困惑的地方,因为理论的描述和提炼虽然能够让你更容易看清全貌,但是容易让你忽略细节。我在看内核原理的书的时候也遇到过这种问题,有的地方实在是难以理解,或者不同的书说的不一样,这时候该怎么办呢?其实很好办,Linux 是开源的呀,我们可以看代码呀,代码是精准的。哪里有问题,找到那段代码看一看,很多问题就有方法了。另外,当你在工作中需要重点研究某方面技术的时候,如果涉及内核,这个时候仅仅了解原理已经不够了,你需要看这部分的代码。但是开源软件代码纷繁复杂,一开始看肯定晕,找不着北。这里有一个诀窍,就是一开始阅读代码不要纠结一城一池的得失,不要每一行都一定要搞清楚它是干嘛的,而要聚焦于核心逻辑和使用场景。一旦爬上这个坡,对于操作系统的原理,你应该就掌握得比较清楚了。就像蒸馒头的人已经将面粉加工流程烂熟于心。这个时候,你就可以有针对性地去做课题,把所学和你现在做的东西结合起来重点突破。例如你是研究虚拟化的,就重点看 KVM 的部分;如果你是研究网络的,就重点看内核协议栈的部分。在专栏里,我在讲述 Linux 原理的同时,也会根据场景和主要流程来分析部分代码,例如创建进程、分配内存、打开文件、读写文件、收发网络包等等。考虑到大量代码粘贴会让你看起来比较费劲,也会占用大量篇幅,所以我采取只叙述主要流程,只放必要的代码,大部分的逻辑和相互关系,尽量通过图的方式展现出来,给你讲解。这里也推荐一本书, <strong>《LINUX 内核源代码情景分析》</strong>。这本书最大的优点是结合场景进行分析,看得见、摸得着,非常直观,唯一的缺点还是内核版本比较老。</p>
56395639
<h4 id="第五个坡:实验定制化-Linux-组件"><a href="#第五个坡:实验定制化-Linux-组件" class="headerlink" title="第五个坡:实验定制化 Linux 组件"></a>第五个坡:实验定制化 Linux 组件</h4><p>已经没人能阻挡你成为内核开发工程师了纸上得来终觉浅,绝知此事要躬行。从只看内核代码,到上手修改内核代码,这又是一个很大的坎。这相当于蒸馒头的人为了定制口味,要开始修改面粉生产流程了。因为 Linux 有源代码,很多地方可以参考现有的实现,定制化自己的模块。例如,你可以自己实现一个设备驱动程序,实现一个自己的系统调用,或者实现一个自己的文件系统等等。这个难度比较大,涉及的细节比较多,上一个阶段,我的建议是不计较一城一地的得失,不需要每个细节都搞清楚,这一个阶段要求就更高了。一旦代码有一个细微的 bug,都有可能导致实验失败。</p>
56405640
<h4 id="第六个坡:面向真实场景的开发"><a href="#第六个坡:面向真实场景的开发" class="headerlink" title="第六个坡:面向真实场景的开发"></a>第六个坡:面向真实场景的开发</h4><p>实践没有终点说了这么多,我们都只是走出了万里长征第一步。我始终坚信,真正的高手都是在实战中摸爬滚打练出来的。如果你是运维,仅仅熟悉上面基本的操作是不够的,生产环境会有大量的不可控因素,尤其是集群规模大的更是如此,大量的运维经验是实战来的,不能光靠读书。如果你是开发,对内核进行少量修改容易,但是一旦面临真实的场景,需要考虑各种因素,并发与并行,锁与保护,扩展性和兼容性,都需要真实项目才能练出来。</p>
5641+
<div align=center>
5642+
5643+
<p><img src="/img/howTolearnlinux.jpeg" alt=""></p>
5644+
</div>
56415645
]]></content>
56425646
<tags>
56435647
<tag>技术</tag>

0 commit comments

Comments
 (0)