Linux Kernel ,在我坚持不懈地努力下终于有了松动的迹象
以前总以为要看懂Linux Kernel ,就必须花上好几年时间,去把 Understanding Linux Kernel这样的大部头书看完三本才能有点头绪。需要花费3年以上的苦功才能看懂大概,其实也没有这么夸张。现在的心情肯定是很多大牛都曾经经历过的一个阶段,离真得读懂Linux内核也许还差得远,不过我现在总算是撬了一条缝出来,还是很激动。
只要有 操作系统、 数据结构、 C语言、 汇编语言(80x86即可,现在才发现汇编语言才是真叫多,一种cpu就是一种汇编语言,差别还挺大,几乎要重学一半的知识) 再来点微机原理与接口之类的硬件知识,就能对付着看简单的Linux 内核的书了。
电子工业的 Linux内核分析及高级编程
机械工业出版社 Linux内核编程
这两本书不算厚,但是让我有了看懂Linux内核的希望
看那个深入理解LINUX内核(第三版) 只会让人望而却步,不知所以
现在在看 LInux内核进程调度, Linux内核分析及高级编程,没有吓唬人的废话,直奔主题,
分析task_struct 结构体,介绍其中重要的数据成员,还有组织task_struct 的 find_task_pid() 和
for_each_task(),不过是前者是哈希表,后者是双向链表遍历,Linux内核也没有使用什么高深莫测的编程
技术。不像那个国际混乱C语言大赛。
只不过由于Linux内核过于庞大,数据结构实在太繁杂,内核定义的函数也实在太多,让人就是看一
小段,总会一句都看不懂。要么是某个数据成员不知是出自哪里,要么是调用的那个系统函数不知是什么作用,但是C语言的各种用法,大多还是见过的。
真是受不了 o'reilly 坚果系列了,不知是翻译,还是文化差异,读起来总是很别扭。
还是中国人写的东西读起来舒服。
现在就读
电子工业的 Linux内核分析及高级编程
机械工业出版社 Linux内核编程
虽然两本书都太薄了,但是我能读懂,直接把2.6内核的主要内容剥出来摆在读者面前,我觉得比那些大部头的不知所云的废话书好多了。
大家学Linux内核也别图简单去学0.11版的了,直接上2.6版的,难度也不见得增加多少,一步到位。学了早期版本,反而要记更多的改变,还不如不学早期版本。
huyongzs 于 2008-10-01 18:23:26发表:
操作系统、 数据结构、 C语言、 汇编语言 ,微机原理与接口之类的硬件知识
-----------------------------------------
要真正看懂linux内核代码,这些都最好学习一下,最起码能看得懂这些书籍才有可能。很多人为什么达不到这个水准?不是这些科目难而是不得要领不知道这些科目,所以浪费了太多时间。楼主直奔主题所以速度超快。
那些用了好几年的大多都是自学或者没有真明白的老师,自己摸索又没摸对门路所以才会用好几年时间,弯路走的太多。
另外我觉得应该再加上一门《unix环境高级编程》,最起码要明白unix普通应用程序的编写方法。在这里多下下功夫,写一写小程序,小项目,然后做做数据结构的编程题,这样子根基会更牢固。毕竟只看书也不行。
另外整篇文章让我觉得楼主很有技术前途
nnbbyzx 于 2008-10-01 16:03:08发表:
upupupup!! +U
spadgeletov 于 2008-09-15 02:13:01发表:
想请教楼主,您是学啥专业的?
我是自动化专业的,除了数据结构和操作系统没学,其他都学过。我对linux又浓厚的兴趣,基本上,我开电脑都不进xp,直接进ubuntu , 除了单片机开发等电子类设计不能在ubuntu下做,还有不能打游戏,其他觉得都行。
现在,想真正了解LINUX内核了,我想做嵌入式linux开发。
如果可以,email交个朋友,hn.love@gmail.com
xiangzi011 于 2008-09-13 11:39:58发表:
谢谢 楼主的建议