学习Linux内核源代码需要一些什么基础?

2012-05-28 11:17:46 +08:00
 shine_lee
现在正在看的书是鸟哥linux,几本c,汇编,还需要哪些基础知识?
再推荐几本书吧
非常感谢!
7084 次点击
所在节点    程序员
13 条回复
shiweifu
2012-05-28 11:22:27 +08:00
tcpl看完了,再看《现代操作系统》,再学习一些att汇编、数据结构,就可以了吧……


PS:我买的linux源码解析之类的书现在还在吃灰……祝lz好运
sivacohan
2012-05-28 11:53:42 +08:00
组队一起看。
ipoh
2012-05-28 11:54:25 +08:00
现代处理器的工作原理
zellux
2012-05-28 11:59:40 +08:00
对 C 和汇编有一定基础的直接看《Linux 内核完全剖析》(http://book.douban.com/subject/3229243/) 就好了,这本书分析的是 0.12 版本的内核,适合入门。看完了再看 ULK 就容易理解了。
liwei
2012-05-28 12:06:52 +08:00
我觉得最好有实际的需求或者跟工作有关这样看起来才不会觉得无聊

linux内核方面有很多书可以参考:
linux kernel development 是对内核的整体概览对内核重要的部分都有所涉及,但是深度不够 可以作为入门内核的开始

linux内核情景分析 中文的看起来比较舒服,讲解也很详细,不过是讲2.4内核的 其实影响也不大 代码虽然有变化但是基本的思想还是一致的,这个作为入门和深入都是不错的

understanding the linux kernel 对内核的几个子系统都有比较深入的描述 啃起来比较难 需要随着对内核的不断理解多看几遍

linux device driver 这是一本偏重实践的书 主要讲解llinux的驱动开发

对内核熟悉了之后 你就可以选择自己感兴趣的方面来深入啦

understanding linux network internals 讲网络方面比较权威的一本书

understanding linux virtual memory menagement 内存管理方面

当然对内核最详细的描述莫过于内核代码本身
ipoh
2012-05-28 12:09:57 +08:00
读内核最好有硬件基础、学过操作系统原理。现代大学里教os原理都与实际脱节,但是不学这个只会C和汇编去看源码也会很痛苦。不懂得硬件知识在读源码时候又会有很多疑惑。
而且这个东西很难实践,往往看了后面前面的东西会忘记。不过看完收获会很大,是一种内力的提升。
shine_lee
2012-05-28 12:19:21 +08:00
@ipoh @liwei 确实对学习内核有点缺乏动力呀...有没有什么实践的方法能提升兴趣的??
shine_lee
2012-05-28 12:20:18 +08:00
@shiweifu
@sivacohan
@ipoh
@zellux
非常感谢!
liwei
2012-05-28 12:31:22 +08:00
@shine_lee 内核中各个子系统之间分的还是比较清晰的 找个自己感兴趣的子系统研究一下

先不急着看代码,先要搞清楚找个子系统是要解决什么问题,解决这个问题一般有哪些方法,linux中是如何解决的,内核代码中有个Documents目录可以参考

弄清楚上面那些然后就可以读读代码看看,订阅一下这个方面的邮件列表,看看大家在讨论的关于这个子系统的问题 一开始你很有可能看不懂他们在讨论什么 不用着急随着你对这个子系统的了解的深入 你就会慢慢看懂啦 然后就可以从简单的问题开始为linux做贡献了
shiweifu
2012-05-28 12:58:57 +08:00
http://book.douban.com/subject/3670621/

lz先看看这个培养点兴趣?
Ranler
2012-05-28 13:05:06 +08:00
比较新的Kernel书是Professional Linux Kernel Architecture,基于2.6.24版本,我也断断续续在看
shine_lee
2012-05-28 13:07:17 +08:00
@shiweifu 兴趣相当大,但是有点遥不可及的感觉...
vultr
2017-01-18 14:13:12 +08:00
Professional Linux Kernel Architecture 能坚持把这本书看完的,英文水平一定很好。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/37595

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX