有矢而发,触类旁通[内核学习的方法论]

原创 2004年12月29日 20:51:00
有矢而发,触类旁通[内核学习的方法论]
有矢而发,触类旁通 

--------------------------------------------------------------------------------


一.研究内核的目的 
欲举其事,先正其道。要谈论内核的研读以及交流心得,前提必须得有一个恰当准确的目的,方能收获良多。
很多人都有这样一个疑惑,为什么要研究内核呢?我们又不是内核开发者(或许你将来就会成为Linus的助手:-)。此言差矣,众所周知,Linux包含两层含义,一是内核,二是发行版本,前者乃核心精华,后者则是应用方案,二者皆不可废。知前者而略后者,思而不学也;略前者而知后者,学而不思也。

学习是循序渐进的,我们学习Linux,首先接触的就是各具特色的发行版本,简单轻松地入门,在学习的过程中逐渐对Linux框架有了一个初步的认识,浅白地说,就是懂得了Linux世界的游戏规则。在你自身能力提高的同时,你会发现,进步的速率似乎在下降,为什么呢?那是因为你开启的只是自己的记忆力而非智力,游戏规则是核心的高层封装,它给予用户乃至程序员的接口是友好的(相信很多人都陶醉于unix的工具哲学吧),而这类接口经多年的黑客熏陶,已经变得十分成熟,我等只需识记便可。举个例子吧,发行版本之间最大的差异就是它们各自的FHS(文件目录框架)以及软件包管理机制,如gentoo的portage(port树)以及emerge,再如Debian的apt-get,用户只要精通此二处,即可在该发行版本的世界里驰骋无束,而精通的途径却都一样,那就是识记规则。当你已经对这些规则滚瓜烂熟时,你会发现,自己只是从用户角度看问题,而不是从开发者的角度看问题,两者的差异在于你在Linux世界里是否具有创新力。

对比国内外的Linux开源社区,不难发现,我们的水平依然很低,很多创新点都是外国开源社区所占据的,我们只能跟着走,处于被动的局面。还是举例来说明问题吧,比如你是一个lfs爱好者,初学者则按lfs文档行事,而老鸟们呢,则参阅lfs hints来改造自己的系统,殊不知,此二者都非国人所力,lfs文档是外国人开发的,lfs hints也是外国人写的。在这里并不是说我们不应该引进技术,而是从中看到,我们的确缺乏创新力;再比如新内核采纳的udev(大家应该不会陌生吧),它只是一个逻辑I/O层规则,乃是devfs进化而来,大家同在开源社区下学习,为什么外国人能思考出创新的udev呢?归根到底,那是我们不重视最底层的研究,立足于高层封装看问题,与使用微软的玩具软件何异?我们老是谈论要自己的发行版本,可是有没有想过,发行版本不仅仅是把现成的内核用shell和X包装起来而已,如果是这样的话,redhat也不会成为世界上最流行的发行版本之一(redhat在开源社区大多数项目中都占有一席位,每每以创新技术来退出新的发新版本)。


可见,立足于内核看问题,目的有二:
1.学一当十,把握创新的主动权
2.知其然而知其所以然,从深层次理解Linux,使之在发行版本的日常操作能触类旁通,游刃自如

二.研究内核的境界
读-->练-->开发 
现在国人研读内核的境界大多在于读(包括我自己:-),而我们的最终境界是开发,也就是成为内核的开发者之一,这样才真正使中国的Linux事业独立自主!

三.研究内核的态度
Linux内核发展了十年有余,体系变得十分庞大,可谓盘根错乱,我们读它,往往很难直接掌握全局,结合我们的实际情况,最好是从日常使用Linux发行版本的过程中,遇到一些很奇妙的问题,就应该结合它来研读内核的相关项,触类旁通。比如说,开机遇到kernel panic的问题,我们就应该找到,在init/main.c中的init函数就有这样一句话,然后顺着这个思路找出解决办法,最终发现原来必要的文件系统模块必须编译进内核(自举性矛盾),又比如说,我们要改造发行版本的运行级别脚本,就应该注意到,有些脚本是运行在内核态的(如linuxrc),大多数脚本是运行在用户态的(rcX.d),了解了大方向,就好编码了。
游击散打,逐渐包围大中心

当然,内核研读还得有好用的工具辅助才行,还要有资料(站在巨人的肩膀上,看得更远嘛),这些我都会用置顶帖给出。

有矢而发,触类旁通。希望大家多多交流,共同进步。

=======================================================================
看着这篇贴子 还转 真有点违背了贴子的原意, 算是给自己日后想在看了看吧……

有矢而发,触类旁通[内核学习的方法论]

一.研究内核的目的  欲举其事,先正其道。要谈论内核的研读以及交流心得,前提必须得有一个恰当准确的目的,方能收获良多。  很多人都有这样一个疑惑,为什么要研究内核呢?我们又不是内核开发者(或许你将...
  • bingheliushui520
  • bingheliushui520
  • 2014年03月29日 22:26
  • 583

有矢而发,触类旁通[内核学习的方法论]<强烈推荐>

一.研究内核的目的 欲举其事,先正其道。要谈论内核的研读以及交流心得,前提必须得有一个恰当准确的目的,方能收获良多。很多人都有这样一个疑惑,为什么要研究内核呢?我们又不是内核开发者(或许你将来就会成为...
  • acool555
  • acool555
  • 2005年03月13日 03:01
  • 816

有矢而发,触类旁通[内核学习的方法论]-- 转载自黄嘴企鹅Linux内核研究小组

原文:http://blog.chinaunix.net/space.php?uid=136448&do=blog&id=2879379 黄嘴企鹅论坛Linux内核版主的文章,很有引导性和启发性...
  • gchww
  • gchww
  • 2012年05月22日 14:21
  • 4731

《周鸿祎-我的互联网方法论》读书笔记

《周鸿祎-我的互联网方法论》 读书笔记
  • lutianfeiml
  • lutianfeiml
  • 2016年03月18日 22:25
  • 824

IT人的学习方法论(全)

1 学习的方向07年的时候曾经讲过一节Webcast,名叫《使您成为Windows专家的一些学习习惯》。直到最近,还经常收到听众关于这一节课反馈和心得的电子邮件,可见学习方法论是大家非常关心的问题。因...
  • ago52030
  • ago52030
  • 2010年04月02日 18:59
  • 21721

我的学习方法论

我的学习方法论   1、信心比黄金重要100倍。 2、我要学比方法重要100倍。 3、明白我为什么要学比我要学更重要。 4、讨论学习上的知识点,会记得更快。 5、教会别人,就是帮助自己复习...
  • readysmile
  • readysmile
  • 2014年06月16日 23:25
  • 275

我的心得五:一个没有方法论的人生,该有多么混乱

一个没有方法论的人生,该有多么混乱。     第一点:一个人,贵在有自己批判性的独立的思考和思想,否则,轻而易举地就可以被人强奸思想,跟动物有什么区别,比如一群鸭子,只要有一只带头,其他的一定跟着一...
  • xushaozhang
  • xushaozhang
  • 2017年03月04日 13:48
  • 310

工作中的方法论

方法论的重要性,不言而喻。 对方法论的提炼,就是个人不断成长过程。 方法论有别于方法,方法论往往道理浅显,但是灵活运用非常难,并且是做事中能够解决一列问题的指导原则,而方法是如何做完成一件或类...
  • destiny_AC
  • destiny_AC
  • 2015年03月08日 22:22
  • 3663

学习方法论---知其所以然(以算法学习为例)

学习方法论---知其所以然(以算法学习为例)
  • Ssecond
  • Ssecond
  • 2016年10月01日 18:16
  • 184

系统架构设计方法论

系统架构设计方法论 软件架构设计方法体系涵盖了预想架构(PA)概念架构(CA)细化架构(RA)三个阶段和一个贯穿环节。 一、预备架构 预备架构阶段主要是通过系统的理解需求和挖掘潜在需求以...
  • u012921921
  • u012921921
  • 2016年11月07日 20:29
  • 2187
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:有矢而发,触类旁通[内核学习的方法论]
举报原因:
原因补充:

(最多只允许输入30个字)