Linux 内核学习的经典书籍及途径
2015-02-07 16:17
302 查看
from:http://www.zhihu.com/question/19606660 知乎
写补充说明
举报
添加评论 分享 • 邀请回答
按票数排序按时间排序
赞同78 反对,不会显示你的姓名
收起
源潮、蒋凌、高益达 等人赞同
说说我们以前的培训经验。先看Unix内核相关的书籍,了解内核的经典实现方法,然后再结合源码去研究Linux内核。这样做的原因是避免从一开始就陷入细节。
内核重点关注这几个部分:进程管理及调度,内存管理,文件及文件系统,Cache,I/O,SMP(多CPU)。
Unix内核推荐很老的一本书《UNIX操作系统设计》,英文原版的叫做《The Design of The UNIX Operating System》。重点关注这些章节(我手上拿的是英文版的):
进程管理及调度:
The Structure of Processes
Process Control
Precess Scheduling and Time
内存管理:
Memory Management Policies
文件及文件系统:
The Buffer Cache
Internal Representation of Files
System Calls for the File System
Linux内核就看那本经典的基于2.6版写的书《深入理解Linux内核》。这本书相当的枯燥,最好结合实际的代码看,可以了解它们是如何实现的。给几个建议先:
细看的时候,不用按章节的顺序去看,而是最好是从点到面,先了解一些基本的实现方法,再去结合代码把这些点穿起来。重点关注这些:进程(包括管理和调度),地址空间,内存管理,文件及VFS,Page Cache(页高速缓存),PFRA,I/O及设备驱动等等。
积极的去探索一些书上没有详细说明,但是内核中又实现了的;或者是那些内核代码已经有很大改变的部分。例如:电梯算法(CFQ,红黑树),通用Block层的I/O请求队列和调度,基于VFS之上的具体文件系统的实现(如ext2/3,YAFFS),页从分配到回收的整个过程,设备驱动的具体实现(如USB,存储设备)等等。
自己画图、作笔记,把重要知识点用自己能理解的方式全部记录下来,因为如果你不用,也许半年之后就忘的都差不多了。有一些简单的图片和笔记往往能快速的回忆起来。
这几本书作为辅助也相当的棒:《Linux设备驱动程序》,《深入理解计算机系统》,《Professional Linux Kernel Architecture》,还有相当经典的fudan_abc写的那一套Linux内核代码分析。
不过在做所有的这些之前,请把C语言学好,并且去了解一些简单的Shell的语法。推荐一本Shell的书籍:《UNIX Shells by Example, 4th Edition》。
发布于 2011-05-22 6 条评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同9 反对,不会显示你的姓名
收起
彭飞、stillman暫無、顾尘 等人赞同
书籍可以选择《Linux内核设计与实现》、《Linux内核源代码情景分析》、《深入理解Linux内核》等,使用Source Navigator或者其它内核阅读工具读内核代码,尝试自己编译内核。
参考:关于Linux内核学习的误区以及相关书籍介绍 http://www.hzlitai.com.cn/article/ARM9-article/system/1605.html
发布于 2011-04-22 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同2 反对,不会显示你的姓名
收起
args、譚珂 赞同
0.Kernighan的<<UNIX编程环境>>和他的<<C程序设计语言>> 1.莱昂氏的<<莱昂氏UNIX源代码分析>>,巴赫的<<UNIX操作系统设计>> 2. 国内出的分析早期内核的<<Linux内核完全剖析>> 3. 内核源码树里列了大部分比较经典的内核和驱动的书
发布于 2012-01-03 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同5 反对,不会显示你的姓名
收起
孙敬、谢路云、顾尘 等人赞同
我是根据楼上的帖子,然后迅速买了一本Robert love的《linux内核设计与实现》。觉得这本用来入门真的是很不错,比较通俗易懂。不像深入理解linux内核,直接看可能会觉得枯燥和有点难懂(俺看得心都碎了!),然后配合源码和自己改写,相信会好很多。 而且,我发现结合着lkd这本书看,然后再弄源码,会很有效果。要不只见树木不见森林。鸟哥那本私房菜固然好,但是是教你怎么用linux系统的。我拿来当工具书用:) 这个问题是个好帖子,我受益很多,先谢谢啦~ ---------------------------------------------------------------------------------------------- 分享一本书《深入分析linux内核源码》http://www.eefocus.com/html/09-06/415503100652pERV.shtml。
编辑于 2011-11-15 1 条评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同10 反对,不会显示你的姓名
收起
陈芳录、Kenneth Arrow、编程菜鸟 等人赞同
1.抛弃翻译教材。 2.linux源码树中的Documentation文件夹 3.最好先看深入理解计算机系统(CSAPP) 4.C语言过硬 5.从驱动入手。自己编译内核,动态加载驱动。linux device driver 第三版 6.Understanding linux kernel(这本有点老了) 7.Robert Love的两本书。。一个讲api的,一本linux kernel development第三版
发布于 2011-05-22 2 条评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同2 反对,不会显示你的姓名
收起
王真知、刘志达 赞同
推荐《追踪Linxu TCP IP代码运行》这本书,从实践出发;从tcp/ip逐渐扩展到虚拟文件系统,进程管理,内核启动等。
目前正在研究这块,有兴趣的可以一起交流: http://blog.chinaunix.net/space.php?uid=22359610
发布于 2011-06-16 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同2 反对,不会显示你的姓名
收起
甄志坚、刘晓翔 赞同
Kernel是好多年前看的了,印象最深刻的还是Robert Love的Linux Kernel Development。思路条理十分清楚,讲得非常到点,体现出作者功力不俗。看过这本开窍后,自己翻代码或者看其他材料都清晰很多。
发布于 2011-06-02 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同1 反对,不会显示你的姓名
收起
atomd 赞同
Understand the Linux Kernel, 但是建议阅读之前自己仔细研究kernel的build系统,以及EFL文件格式。
编辑于 2011-04-22 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同0 反对,不会显示你的姓名
收起
其实CSAPP这本书也很不错,以linux为例,可以作为学习操作系统、软硬件基本原理的通识书。
发布于 2012-06-22 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同2 反对,不会显示你的姓名
收起
赵亚东、王小龙 赞同
不要看中文版的 《深入理解linux内核》
发布于 2011-05-22 4 条评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同1 反对,不会显示你的姓名
收起
黄帝诏曰 赞同
楼主是想说如何比较无痛上手吗?
实成的避免陷入细节建议非常好:)
国内的书,我还没见到有像《自己动手写操作系统》那样的快速上手的宝贝。
书楼上都很多了,建议先把C和汇编学好点(-:
发布于 2012-01-03 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同1 反对,不会显示你的姓名
收起
杨通 赞同
我补充下: 学习操作系统理论的话, Andrew S.Tanenbaum的《操作系统设计与实现》,结合minix源码学,也不错。因为这是linus设计linux时参考的书。Tanenbaum就是linus的老师
编辑于 2014-12-07 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同1 反对,不会显示你的姓名
收起
杨通 赞同
就入门而言我推荐先研究一下mit的xv6系统也就是6.828课程课件,把它的源码好好读,并完成实验。过了这关你c语言,x86架构,汇编,操作系统核心理论啥的都可以了,之后开始看lkd吧。
发布于 2014-08-03 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同1 反对,不会显示你的姓名
收起
留侯 赞同
《深入Linux内核架构》和Linux内核源代码包里的文档。
发布于 2011-05-13 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同4 反对,不会显示你的姓名
收起
张广怡、黄飞、顾尘 等人赞同
关键词 赵炯;Linux内核完全剖析;0.11;
简介 网上有很多他这本PDF著作,当然啦,最推荐买一本,说实话,大学里这么多本书,这本是我觉得拿起来和放下都觉得有收获的一本;话说我们做坑爹操作系统多半靠这本大书了;
歪评 参加工作了研究内核机会很少,编译、升级内核机会倒是很多。。常用系统命令掌握了似乎也够了 至于鸟哥嘛,大家都推荐,一开始看他的网站觉得他挺厉害的,可能是书的语言偏台湾风、内容也有点旧吧,可能不如内核完全剖析吸引人,看一段懂一段来得痛快。咳嗽,纯个人意见。
编辑于 2013-11-29 2 条评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同0 反对,不会显示你的姓名
收起
发布于 2014-07-16 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同0 反对,不会显示你的姓名
收起
鸟哥那本私房菜非常适合入门,推荐
发布于 2012-11-29 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同0 反对,不会显示你的姓名
收起
如果是新手的话,鸟哥私房菜很不错。还有shell脚本。自己动手写操作系统。操作系统原理。
Linux 内核学习的经典书籍及途径?修改
修改写补充说明
举报
添加评论 分享 • 邀请回答
按票数排序按时间排序
18 个回答
什么是答案总结? 答案总结
修改赞同78 反对,不会显示你的姓名
时成,Emacser
收起源潮、蒋凌、高益达 等人赞同
说说我们以前的培训经验。先看Unix内核相关的书籍,了解内核的经典实现方法,然后再结合源码去研究Linux内核。这样做的原因是避免从一开始就陷入细节。
内核重点关注这几个部分:进程管理及调度,内存管理,文件及文件系统,Cache,I/O,SMP(多CPU)。
Unix内核推荐很老的一本书《UNIX操作系统设计》,英文原版的叫做《The Design of The UNIX Operating System》。重点关注这些章节(我手上拿的是英文版的):
进程管理及调度:
The Structure of Processes
Process Control
Precess Scheduling and Time
内存管理:
Memory Management Policies
文件及文件系统:
The Buffer Cache
Internal Representation of Files
System Calls for the File System
Linux内核就看那本经典的基于2.6版写的书《深入理解Linux内核》。这本书相当的枯燥,最好结合实际的代码看,可以了解它们是如何实现的。给几个建议先:
细看的时候,不用按章节的顺序去看,而是最好是从点到面,先了解一些基本的实现方法,再去结合代码把这些点穿起来。重点关注这些:进程(包括管理和调度),地址空间,内存管理,文件及VFS,Page Cache(页高速缓存),PFRA,I/O及设备驱动等等。
积极的去探索一些书上没有详细说明,但是内核中又实现了的;或者是那些内核代码已经有很大改变的部分。例如:电梯算法(CFQ,红黑树),通用Block层的I/O请求队列和调度,基于VFS之上的具体文件系统的实现(如ext2/3,YAFFS),页从分配到回收的整个过程,设备驱动的具体实现(如USB,存储设备)等等。
自己画图、作笔记,把重要知识点用自己能理解的方式全部记录下来,因为如果你不用,也许半年之后就忘的都差不多了。有一些简单的图片和笔记往往能快速的回忆起来。
这几本书作为辅助也相当的棒:《Linux设备驱动程序》,《深入理解计算机系统》,《Professional Linux Kernel Architecture》,还有相当经典的fudan_abc写的那一套Linux内核代码分析。
不过在做所有的这些之前,请把C语言学好,并且去了解一些简单的Shell的语法。推荐一本Shell的书籍:《UNIX Shells by Example, 4th Edition》。
发布于 2011-05-22 6 条评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同9 反对,不会显示你的姓名
Tuxify,故书不厌百回读
收起彭飞、stillman暫無、顾尘 等人赞同
书籍可以选择《Linux内核设计与实现》、《Linux内核源代码情景分析》、《深入理解Linux内核》等,使用Source Navigator或者其它内核阅读工具读内核代码,尝试自己编译内核。
参考:关于Linux内核学习的误区以及相关书籍介绍 http://www.hzlitai.com.cn/article/ARM9-article/system/1605.html
发布于 2011-04-22 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同2 反对,不会显示你的姓名
党志明,~!@#$%^&*()
收起args、譚珂 赞同
0.Kernighan的<<UNIX编程环境>>和他的<<C程序设计语言>> 1.莱昂氏的<<莱昂氏UNIX源代码分析>>,巴赫的<<UNIX操作系统设计>> 2. 国内出的分析早期内核的<<Linux内核完全剖析>> 3. 内核源码树里列了大部分比较经典的内核和驱动的书
发布于 2012-01-03 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同5 反对,不会显示你的姓名
曲小白
收起孙敬、谢路云、顾尘 等人赞同
我是根据楼上的帖子,然后迅速买了一本Robert love的《linux内核设计与实现》。觉得这本用来入门真的是很不错,比较通俗易懂。不像深入理解linux内核,直接看可能会觉得枯燥和有点难懂(俺看得心都碎了!),然后配合源码和自己改写,相信会好很多。 而且,我发现结合着lkd这本书看,然后再弄源码,会很有效果。要不只见树木不见森林。鸟哥那本私房菜固然好,但是是教你怎么用linux系统的。我拿来当工具书用:) 这个问题是个好帖子,我受益很多,先谢谢啦~ ---------------------------------------------------------------------------------------------- 分享一本书《深入分析linux内核源码》http://www.eefocus.com/html/09-06/415503100652pERV.shtml。
编辑于 2011-11-15 1 条评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同10 反对,不会显示你的姓名
刘晓翔,存储行业,iSCSI/网络/网卡驱动,研发工…
收起陈芳录、Kenneth Arrow、编程菜鸟 等人赞同
1.抛弃翻译教材。 2.linux源码树中的Documentation文件夹 3.最好先看深入理解计算机系统(CSAPP) 4.C语言过硬 5.从驱动入手。自己编译内核,动态加载驱动。linux device driver 第三版 6.Understanding linux kernel(这本有点老了) 7.Robert Love的两本书。。一个讲api的,一本linux kernel development第三版
发布于 2011-05-22 2 条评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同2 反对,不会显示你的姓名
朱勇,内核新手
收起王真知、刘志达 赞同
推荐《追踪Linxu TCP IP代码运行》这本书,从实践出发;从tcp/ip逐渐扩展到虚拟文件系统,进程管理,内核启动等。
目前正在研究这块,有兴趣的可以一起交流: http://blog.chinaunix.net/space.php?uid=22359610
发布于 2011-06-16 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同2 反对,不会显示你的姓名
思维在发酵,半退休中
收起甄志坚、刘晓翔 赞同
Kernel是好多年前看的了,印象最深刻的还是Robert Love的Linux Kernel Development。思路条理十分清楚,讲得非常到点,体现出作者功力不俗。看过这本开窍后,自己翻代码或者看其他材料都清晰很多。
发布于 2011-06-02 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同1 反对,不会显示你的姓名
冯东,Adobe 程序员
收起atomd 赞同
Understand the Linux Kernel, 但是建议阅读之前自己仔细研究kernel的build系统,以及EFL文件格式。
编辑于 2011-04-22 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同0 反对,不会显示你的姓名
韦冠楠
收起其实CSAPP这本书也很不错,以linux为例,可以作为学习操作系统、软硬件基本原理的通识书。
发布于 2012-06-22 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同2 反对,不会显示你的姓名
李凯,分布式存储工程师
收起赵亚东、王小龙 赞同
不要看中文版的 《深入理解linux内核》
发布于 2011-05-22 4 条评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同1 反对,不会显示你的姓名
彭实君,编程,数学
收起黄帝诏曰 赞同
楼主是想说如何比较无痛上手吗?
实成的避免陷入细节建议非常好:)
说说我们以前的培训经验。先看Unix内核相关的书籍,了解内核的经典实现方法,然后再结合源码去研究Linux内核。这样做的原因是避免从一开始就陷入细节。
国内的书,我还没见到有像《自己动手写操作系统》那样的快速上手的宝贝。
书楼上都很多了,建议先把C和汇编学好点(-:
发布于 2012-01-03 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同1 反对,不会显示你的姓名
周子隐,algorithm\kernel\network\nginx
收起杨通 赞同
我补充下: 学习操作系统理论的话, Andrew S.Tanenbaum的《操作系统设计与实现》,结合minix源码学,也不错。因为这是linus设计linux时参考的书。Tanenbaum就是linus的老师
编辑于 2014-12-07 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同1 反对,不会显示你的姓名
alogfans,Linux 爱好者,研究网络中
收起杨通 赞同
就入门而言我推荐先研究一下mit的xv6系统也就是6.828课程课件,把它的源码好好读,并完成实验。过了这关你c语言,x86架构,汇编,操作系统核心理论啥的都可以了,之后开始看lkd吧。
发布于 2014-08-03 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同1 反对,不会显示你的姓名
夕-_-夕,今天晚上吃什么好呢?
收起留侯 赞同
《深入Linux内核架构》和Linux内核源代码包里的文档。
发布于 2011-05-13 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同4 反对,不会显示你的姓名
樊天宇,今天也想敲代码
收起张广怡、黄飞、顾尘 等人赞同
关键词 赵炯;Linux内核完全剖析;0.11;
简介 网上有很多他这本PDF著作,当然啦,最推荐买一本,说实话,大学里这么多本书,这本是我觉得拿起来和放下都觉得有收获的一本;话说我们做坑爹操作系统多半靠这本大书了;
歪评 参加工作了研究内核机会很少,编译、升级内核机会倒是很多。。常用系统命令掌握了似乎也够了 至于鸟哥嘛,大家都推荐,一开始看他的网站觉得他挺厉害的,可能是书的语言偏台湾风、内容也有点旧吧,可能不如内核完全剖析吸引人,看一段懂一段来得痛快。咳嗽,纯个人意见。
编辑于 2013-11-29 2 条评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同0 反对,不会显示你的姓名
收起
匿名用户
现代操作系统 算法导论 intel的manual linux源代码发布于 2014-07-16 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同0 反对,不会显示你的姓名
陈小龙,工程师
收起鸟哥那本私房菜非常适合入门,推荐
发布于 2012-11-29 添加评论 感谢 分享 收藏 • 没有帮助 •
举报
赞同0 反对,不会显示你的姓名
安康,自由,阅读,运动,Google,IT,理论物理…
收起如果是新手的话,鸟哥私房菜很不错。还有shell脚本。自己动手写操作系统。操作系统原理。
相关文章推荐
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等) .
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等) .
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等) .
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等
- 好书推荐——关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)
- 学习linux入门经典书籍
- linux内核的经典书籍
- Linux学习经典书籍
- Linux学习经典书籍推荐..【Pnoter】