转fudan_abc之Linux内核修炼之道
文章平均质量分 79
victorzhangl
这个作者很懒,什么都没留下…
展开
-
Linux内核修炼之道 之 前言
<br />至此落笔之际,恰至Linux问世18周年,18年的成长,如梦似幻,风雨颇多,感慨颇多。<br />犹自忆起多年以前一位前辈训导时的箴言:今天的必然正是由之前一系列的偶然所决定的。过去的某年某月,我偶然初识Linux就身陷其中,至今仍找不到出去的路,而正是这次乃至之后的多次偶然相联合,从而决定了今日的我要在此写下这些话。那么,当您偶然地拿起这本书,偶然地看到这段话,您是否会问自己:这样的偶然又会导致什么样的必然?<br />如果您依然决定继续这次的偶然之旅,那么首先请认识两个人,准确的说是转载 2010-08-08 15:51:00 · 466 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(17)——子系统的初始化:以PCI子系统为例
<br />由Kconfig这张地图的分布来看,PCI这块儿的代码应该分布在两个地方,drivers/pci和arch/i386/pci,两岸三地都属于一个中国,不管是drivers/pci那儿的,还是arch/i386/pci那儿的,也都只属于一个PCI子系统,本着一个中国的原则,咱们要统筹的全面的考察分析位于两个地方的代码,于是,这些远远突破了五位数的代码左看右看横看竖看都显得那么的阴森恐怖,不过人家咋说也是整个一PCI子系统,就像走在T台上的芙蓉姐姐和杨二车那姆一样,看起来恐怖但也是很有内转载 2010-08-08 16:03:00 · 394 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(18)——选择发行版
<br />学习内核首先要会使用它,依照一个由上至下循序渐进的过程,在能够熟练的使用Linux操作系统之后再去研究内核中的实现。因此,了解并选择一个发行版进行安装使用便是一个不能回避的过程。 <br /> 目前已经有超过600个Linux发行版,可以在http://en.wikipedia.org/wiki/List_of_Linux_distributions上看到它们的列表,其中,有多于300个正处于活跃的开发中,不断的改进。 <br /> 对新人来说,在众多的发转载 2010-08-08 16:04:00 · 331 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(19)——不稳定的内核API
<br />刚才欣闻在SB会试运行期间,参观的上海市民情绪非常稳定的,很好很舒服的展示了自己的风采。于是我们要在这里要反思一下,为什么内核的API就不能同样的稳定?<br />开源社区正以极快的速度向内核中添加新功能,同时又在努力让修补bug的步伐跟上去,放慢开发速度看上去是不太可能的:首先Linux不能在技术上落后,否则就会失去要求越来越苛刻的商业用户;其次是因为Linux需要推动开发者社区的发展,不断增加新功能可以使开发者不感到厌倦,否则他们就可能转移到其它项目,另外也能在现有开发者年老或退出的时候吸引转载 2010-08-08 16:04:00 · 344 阅读 · 0 评论 -
Linux内核修炼之道》精华分享与讨论(20)——学会使用Git
<br />作为一名人民的好干部,如果希望被惦记,可以学我们的郑书记,将自己和蔼可亲的光辉形象搬上台历;作为一名有梦想有追求而又不知道如何出名的人,你可以参考对岸的“超想被包养”社团。而作为一个内核爱好者,要想成为一名内核开发者,为内核贡献自己的代码,我们必须要能够与其他众多的内核开发者协同工作,这就意味着应该能够使用内核的版本控制工具Git管理内核代码。<br />1. 什么是Git<br />Git是Linus专门为内核而开发的一个开放源码的版本控制软件,如下图所示,Git的主页http://git转载 2010-08-08 16:05:00 · 368 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(22)——方法论
这应该是这个系列的最后一篇了,书么很快就能买到了,呵呵,接下来应该会写些android方面的东东吧。<br />******************************************************************************************什么是方法论<br />方法论给人的第一感觉就是它是一个玄之又玄的很朦胧的东西,显然,学习本身就是一件很玄乎的事情,有些人整天潇潇洒洒没见怎么用心就能够获得很好的成绩,而有些人则相反,投悬梁锥刺骨也还是成绩平平收获平平。转载 2010-08-08 16:06:00 · 348 阅读 · 0 评论 -
《Linux内核修炼之道》 之 高效学习Linux驱动开发
<br />这本《Linux内核修炼之道》已经开卖(网上的链接为: 卓越、当当、china-pub ),虽然是严肃文学,但为了保证流畅性,大部分文字我还都是斟词灼句,反复的念几遍才写上去的,尽量考虑到写上去的每段话能够让读者产生什么疑惑,然后也都会紧接着尽量的去进行解释清楚,中间的很多概念也有反复纠结过怎么解释能够更容易的理解,力求即使对于初学者也可以有很少阻碍的一气读完。同时我也把书中一部分自己的感悟抽出来整理了精华版,share出来。当然水平有限,错漏之处有发现而修订时遗漏的,也有尚没有转载 2010-08-08 16:07:00 · 400 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(7)——分析内核源码如何入手?(下)
<br />下面的分析,米卢教练说了,内容不重要,重要的是态度。就像韩局长对待日记的态度那样,严谨而细致。<br />只要你使用这样的态度开始分析内核,那么无论你选择内核的哪个部分作为切入点,比如USB,比如进程管理,在花费相对不算很多的时间之后,你就会发现你对内核的理解会上升到另外一个高度,一个抱着情景分析,抱着0.1内核完全注释,抱着各种各样的内核书籍翻来覆去的看很多遍又忘很多遍都无法达到的高度。请相信我!<br />让我们在Linux社区里发出号召:学习内核源码,从学习韩局长开始!<br />转载 2010-08-08 15:57:00 · 519 阅读 · 0 评论 -
《Linux内核修炼之道》精华版 之 方法论(提供pdf下载)
<br />到目前为之,博客上分享的精华篇都可以归为方法论的范畴,在很多时候,都是方法论要比细节紧要得多。而这些精华篇又可细分为三个专题:Linux大史记;内核学习的方法论;驱动开发的方法论。Linux大史记<br />除去那些精彩的“门”,我们生活中乏味的事情太多了,所以不希望再去按惯例花个一二页的篇幅乏味的写个“Linux简介”,就将几天中出去溜弯的时间贡献了出来,逐年逐月的搜集整理了一些Linux成长过程中所发生的重要的事情,抑或一些非常有趣儿的事情。<br />开始时本以为这是一件很转载 2010-08-08 16:01:00 · 1367 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(15)——子系统的初始化:内核选项解析
<br />首先感谢国家。其次感谢上大的钟莉颖,让我知道了大学不仅有校花,还有校鸡,而且很多时候这两者其实没什么差别。最后感谢清华女刘静,让我深刻体会到了素质教育的重要性,让我感到有责任写写子系统的初始化。<br />各个子系统的初始化是内核整个初始化过程必然要完成的基本任务,这些任务按照固定的模式来处理,可以归纳为两个部分:内核选项的解析以及那些子系统入口(初始化)函数的调用。<br />内核选项<br />Linux允许用户传递内核配置选项给内核,内核在初始化过程中调用parse_args函数对这些选项转载 2010-08-08 16:02:00 · 349 阅读 · 0 评论 -
Linux内核修炼之道》精华分享与讨论(21)——二分法与printk()
<br />人生就是一个茶几,上面摆满了杯具。内核也是一个大茶几,不过它上面的杯具是一个个的bug。确定bug什么时候被引入是一个很关键的步骤,在这个定位bug的过程中,不论有意或无意,都会很自然地用到二分查找的方法。二分查找法的基本原理<br />对于二分查找法,我们不会也不应该会感到陌生。作为一种高效的查找算法,它曾出现在我们的数据结构课堂里,出现在一次又一次的面试里,更是会频繁地应用在我们的代码里。在我们所接触到的各种算法里,它可以说是最为大众化、最充满生活智慧的一个,很多人并转载 2010-08-08 16:06:00 · 363 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(14)——内核中的链表
<br />早上上班坐地铁要排队,到了公司楼下等电梯要排队,中午吃饭要排队,下班了追求一个女孩子也要排队,甚至在网上下载个什么门的短片也要排队,每次看见人群排成一条长龙时,才真正意识到自己是龙的传人。那么下面咱们就说说队列(链表)。<br />使用链表的目的很明确,因为有很多事情要做,于是就把它放进链表里,一件事一件事的处理。比如在USB子系统里,U盘不停的提交urb请求,USB键盘也提交,USB鼠标也提交,那USB主机控制器咋应付得过来呢?很简单,建一个链表,然后你每次提交就是往里边插入,然后USB主转载 2010-08-08 16:01:00 · 433 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(12)——设备模型(下)
<br />设备模型拍得再玄幻,它也只是个模型,必须得落实在具体的子系统,否则就只能抱着个最佳技术奖空遗恨。既然前面已经以USB子系统的实现分析示例了分析内核源码应该如何入手,那么这里就仍然以USB子系统为例,看看设备模型是如何软着陆的。<br />内核中USB子系统的结构<br />我们已经知道了USB子系统的代码都位于drivers/usb目录下面,也认识了一个很重要的目录——core子目录。现在,我们再来看一个很重要的模块——usbcore。你可以使用“lsmod”命令看一下,在显示的结果里能够找到有转载 2010-08-08 16:00:00 · 286 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(1)——缅怀已逝的十八年(1991~1998)
<br />至此落笔之际,恰至Linux问世18周年,18年的成长,风雨颇多,感慨颇多,谨以这些许年来的点滴之事为Linux的成人礼添彩。<br />如果你尚未与Linux亲密接触过,那么希望这里的内容可以成为你初识Linux的见证。如果你已经是个Linux达人,那么就选个安静的早晨,抑或下午,陪我一起缅怀下这过去的十八年吧。<br />Linux诞生记<br />1987年<br /> MINIX诞生,而我也已端坐于学堂之中,隐去一身的稚气,能够摇头晃脑的吟诵几句诗赋了。若真是冥冥中自有定数的话,或许转载 2010-08-08 15:53:00 · 272 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(2)——缅怀已逝的十八年(1999~2002)
<br />提前发生的革命<br />1999年<br /> 1月,“Linux 2.2已经发布,我终于可以松口气了”创造者Linus Torvalds说。<br /> 3月,首届LinuxWorld讨论会和博览会在加洲的圣何塞举行,作为Linux第一个大的商业化的贸易展示活动,它无疑向世界昭示了Linux的到来。<br /> 8月,SG宣布了与Red Hat的合作关系,并且开始大规模的为内核的发展做贡献。Red Hat进行了首次公开募股,股价马上涨到了50美元,在那个时候这个价似转载 2010-08-08 15:54:00 · 346 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(3)——缅怀已逝的十八年(2003~2006)
<br />Ubuntu 4.10<br />2003年<br /> 1月,NEC宣布将在其手机中使用Linux,代表着Linux成功进军手机领域。<br /> 6月,IDC分析师称,2003年Linux服务器在西欧的销售量将达到18.2万台,到2007年,销售量将增至这个数字的三倍,销售收入将翻一番,达到19亿美元。<br /> 8月,韩国国家航空公司和IBM联合发布声明,表示韩国航空公司将把该公司的核心业务移植到IBM的eServer服务器当中完成,其中操作系统则采用Linux。<br转载 2010-08-08 15:55:00 · 307 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(4)——缅怀已逝的十八年(2007~2009)
<br />来自微软的指控<br />2007年<br /> 1月,虚拟人生游戏(Second Life)客户端开源。两大Linux领导社团OSDL和Free Standard Group宣布合并为新的Linux Foundation(Linux基金会),此举将促进社区的资源整合,也使Linux在企业市场能够更加高效地参与竞争。<br /> 2月,Bill Xu发起了一个“致招商银行的公开信”的行动,希望用这种方式促使招商银行改变在公众服务中使用专属软件的作法,取消客户端上的Acti转载 2010-08-08 15:55:00 · 408 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(5)——Kernel地图:Kconfig与Makefile
<br />Makefile不是Make Love<br />从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉。毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了,现在想来依然觉得丢人。<br />毫不夸张地说,Kconfig和Makefile是我们浏览内核代码时最为依仗的两个文件。基本上,Linux内核中每一个目录下边都会有一个Kconfig文件和一个Makefile文件。 对于一个希望能够在Linux内核的汪洋代码里看到一丝曙光的人来说转载 2010-08-08 15:56:00 · 359 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(6)——分析内核源码如何入手?(上)
<br />透过现象看本质,兽兽门无非就是一些人体艺术展示。同样往本质里看过去,学习内核,就是学习内核的源代码,任何内核有关的书籍都是基于内核,而又不高于内核的。<br />既然要学习内核源码,就要经常对内核代码进行分析,而内核代码千千万,还前仆后继的不断往里加,这就让大部分人都有种雾里看花花不见的无助感。不过不要怕,孔老夫子早就留给我们了应对之策:敏于事而慎于言,就有道而正焉,可谓好学也已。这就是说,做事要踏实才是好学生好同志,要遵循严谨的态度,去理解每一段代码的实现,多问多想多记。如果抱着走马观转载 2010-08-08 15:57:00 · 340 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(8)——内核学习的心理问题
<br />对于学习来说,无论是在学校的课堂学习,还是这里说的内核学习,效果好或者坏,最主要取决于两个方面——方法论和心理。注意,我无视了智商的差异,这玩意儿玄之又玄,岔开了说,属于迷信的范畴。<br />前面又是Kernel地图,又是如何入手,说的都是方法论的问题,那么这里要面对的就主要是心理上的问题。<br />而心理上的问题主要有两个,一个是盲目,就是在能够熟练适用Linux之前,对Linux为何物还说不出个道道来,就迫不及待的盲目的去研究内核的源代码。这一部分人会觉得既然是学习内核,那么耗费时间转载 2010-08-08 15:58:00 · 201 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(9)——内核学习的相关资源
<br /> “世界上最缺的不是金钱,而是资源。”当我在一份报纸上看到这句大大标题时,我的第一反应是——作者一定是个自然环保主义者,然后我在羞愧得反省自身的同时油然生出一股对这样的无产主义理想者无比崇敬的情绪来。<br /> 于是,我继续往下看,“因此在XXX还未正式面市之时,前来咨询的客户已经不少,这些有眼光的购房者明白,谁能在目前最好的购房机会下最大化地占有绝版资源,谁就掌控了未来财富流向。”(为了避免做广告的嫌疑,请允许我使用XXX代替该楼盘的名字。)顿时,我悟道了!<br />转载 2010-08-08 15:58:00 · 373 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(10)——模块机制与“Hello World!”
<br />有一种感动,叫内牛满面,有一种机制,叫模块机制。显然,这种模块机制给那些Linux的发烧友们带来了方便,因为模块机制意味着人们可以把庞大的Linux内核划分为许许多多个小的模块。对于编写设备驱动程序的开发者来说,从此以后他们可以编写设备驱动程序却不需要把她编译进内核,不用reboot机器,她只是一个模块,当你需要她的时候,你可以把她抱入怀中(insmod),当你不再需要她的时候,你可以把她一脚踢开(rmmod)。 <br />于是,忽如一夜春风来,内核处处是模块。让我们从一个伟大的例转载 2010-08-08 15:59:00 · 327 阅读 · 0 评论 -
Linux内核“问题门”——学习问题、经验集锦(持续更新中……)
<br />陈宪章说:“学贵有疑,小疑则小进,大疑则大进。疑者,觉悟之机也,一番觉悟一番长进。”<br />培根说:“多问的人将多得。”<br />还在学校的时候导师在激情讲演之后对着会议室里形态各异但均静默不语的我们痛心疾首的说:“会提问题很重要啊,同志们!不会提问题怎么有资格做研究!”<br />这样铿锵有力的训诫今日想起仍觉深受刺激,于是就要不可避免得要做出一些反应来。不过一是因为咱这年代还没有非主流的说法,二是因为也没有冯仰妍同学的性别优势,不可能受到刺激就整出个门来。咱能够做到的最大反应也就是转载 2010-08-08 15:59:00 · 321 阅读 · 0 评论 -
《Linux内核修炼之道》精华分享与讨论(11)——设备模型(上)
<br />对于驱动开发来说,设备模型的理解是根本,毫不夸张得说,理解了设备模型,再去看那些五花八门的驱动程序,你会发现自己站在了另一个高度,从而有了一种俯视的感觉,就像凤姐俯视知音和故事会,韩峰同志俯视女下属。<br />顾名而思义就知道设备模型是关于设备的模型,既不是任小强们的房模,也不是张导的炮模。对咱们写驱动的和不写驱动的人来说,设备的概念就是总线和与其相连的各种设备了。电脑城的IT工作者都会知道设备是通过总线连到计算机上的,而且还需要对应的驱动才能用,可是总线是如何发现设备的,设备又是如何和转载 2010-08-08 16:00:00 · 265 阅读 · 0 评论 -
《Linux内核修炼之道》 之 高效学习Linux内核
<br />世界悲结束了,章鱼哥也退役了,连非诚勿扰中的拜金女也突然的少了很多。这本《Linux内核修炼之道》在卓越、当当、china-pub上也已经开卖了,虽然是严肃文学,但为了保证流畅性,大部分文字我还都是斟词灼句,反复的念几遍才写上去的,尽量考虑到写上去的每段话能够让读者产生什么疑惑,然后也都会紧接着尽量的去进行解释清楚,中间的很多概念也有反复纠结过怎么解释能够更容易的理解,力求即使对于初学者也可以有很少阻碍的一气读完。同时我也把书中一部分自己的感悟抽出来整理了精华版,share出来。当然转载 2010-08-08 16:07:00 · 643 阅读 · 0 评论