免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux
打印 上一主题 下一主题

[实践] Linux内核设计的艺术,说说您在源码学习中的人和事(获奖名单已公布-2014-3-13) [复制链接]

论坛徽章:
1
金牛座
日期:2014-03-21 18:22:34
11 [报告]
发表于 2013-06-27 15:57 |只看该作者
表示刚开始读关于linux 的书籍,楼下来

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
12 [报告]
发表于 2013-06-27 19:26 |只看该作者
1、说说您当初学习Linux内核源码是从看那本书开始的,还是直接看源码?
我接触的比较晚,从《Linux内核源代码情景分析》开始看的,边看书边看代码
后来买了《Linux内核设计与实现》,就是橘黄色那本,买了《深入理解Linux内核》禽兽出版社出版的
再后来由于工作需要,《Linux Device Driver》禽兽出版社出版的,《构建嵌入式Linux系统》禽兽出版社出版的
后来又有新书出来了《精通Linux设备驱动程序》阿三写的 《深入Linux内核架构》红皮很厚的那个, 都是粗略的看,没有深入的去研究
工作用到的时候,仔细读读代码,然后就写了,主要还是driver部分多一些,由于兴趣,fs部分代码也研究了点。

2、说说您的Linux内核源码学习经验
没啥经验,没有实际项目来做引导,学了也记不住,没啥用,比如想了解一下某部分的实现,好奇的时候,可以看一下,了解一下,也许其他人有更多的经验

3、Linux内核的设计对您的工作有何指导意义?
工作中很多地方也用到了对应的实现方式,比如在bootloader里面搞个fs,做个bootloader部分的简单的fs,增加用户体验之类的,参考了fs部分的代码
后来做NAS的时候,好多思想也都是参考的Linux的fs目录下的实现来做的,原理都差不多
还有很多都是基本的思想部分,也参考了,呵呵

论坛徽章:
1
白羊座
日期:2013-08-22 17:30:33
13 [报告]
发表于 2013-06-27 20:06 |只看该作者
本帖最后由 cjdao 于 2013-06-27 20:10 编辑

我手头上跟linux内核相关的书:
1.《Linux内核设计与实现》
2.《Linux设备驱动程序 第3版》
3.《Linux设备驱动开发详解》
4.《深入Linux设备驱动程序内核机制》
5.《Linux那些事儿之我是USB》
6.《Linux内核修炼之道》
7.《深入理解LINUX内核》
8.《深入Linux内核架构》
9.《Linux内核完全剖析》
10.《Linux内核源代码情景分析(上册)》
---------------------------------------------------------------------------------------------------------------
忘了最先入手的哪本了,这些书都没看全,每本都是看一些没看一些的,有的一个问题对比着看。说说个人感觉比较好的几本:
o《深入Linux内核架构》
《深入Linux内核架构》与《深入理解LINUX内核》相比, 《深入Linux内核架构》更注重软件设计层面的东西,而且所对应的内核版本也比较新--2.6.24,《深入理解LINUX内核》更注重实现层面的讲解,所以对x86架构的知识关注的也比较多.现在看的以《深入Linux内核架构》为主......
o《Linux内核源代码情景分析(上册)》
《情景》这边书也是比较注重实现层面的讲解,与《深入理解LINUX内核》相比,其讲解方式更符合人的思维习惯,所以读起来也比较带劲,比较遗憾的是内核是2.4的
o《深入Linux设备驱动程序内核机制》
《深入Linux设备驱动程序内核机制》是讲解驱动编程比较不错的一本书,与《Linux设备驱动程序 第3版》(简称ldd3)相比, ldd3很多时候看起来只是在告诉你内核api怎么用,看久了有点审美疲劳,ldd3时不时会告诉你某些api的使用的一些比较隐蔽的注意事项但不告诉你为什么会这样,这些注意事项积累多了会让你觉得很琐碎。所以看了ldd3再看《机制》会有心中明亮的感觉.
------------------------------------------------------
内核学习的经验
基本上谈不上有什么经验.因为内核这块跟工作的关系不大,所以都是平时业余时间在看,而且看得断断续续的。感觉没啥成果,一直都在门槛上。感觉光看书没什么大用,看懂了过后也会忘记。偶尔以为看懂了,看一下代码结果是各种打击。主要的还是除了看书外,还要多进行自己的总结,然后将自己的理解记录下来,如写博客之类的;当然代码也得硬着头皮去看,书也一样,不能一遍过就算了,得反复反复的看!
------------------------------------------------------
内核学习的意义
对于工作上的,多少有些意义,对于内核里的一些小部件,如链表,这些设计如此精妙的东西,毫不犹豫的实行了'拿来主义',直接加入工作的代码中!

论坛徽章:
0
14 [报告]
发表于 2013-06-27 20:52 |只看该作者
本帖最后由 superwiles 于 2013-06-27 20:53 编辑

1、说说您当初学习Linux内核源码是从看那本书开始的,还是直接看源码?

     02年前后  从 Linux内核源代码情景分析(上、下),毛德操,胡希明 ,  《undertand  Linux  kernel 》 两个版本开始,
     毛老师的这本书现在还是很有价值的, 后来陆陆续续看了  《Linux kernel development》 两个版本 ,
       《LDD3》
     05年Mel Gorman的 《Linux virtual memory management》,  08年《professional Linux kernel》 也比较全面
     还有李云华先生写的 一本 《 独辟蹊径品内核》 代码版本新一些,也有一些独到之处

      03.04年开始做一些arm linux的bsp工作开始查看代码.

      楼主这本代码版本是0.11, 还算是学习,入门型的,年代久远,

2、说说您的Linux内核源码学习经验
         
     1。如果我今天回到10年前,我觉得学习任何OS之前, CPU手册一定先要读明白吧, 多任务OS 本质是对CPU的虚拟化, CPU有很多硬件机制是为了配合OS完成这件事
     所以CPU的手册要读明白这个是基本的要求, 其次是涉及到IO, X86的平台 PCI Express 的 spec也是一定要搞明白的,起码TLP  和配置。  其次是chipset的手册
     这些资料都是唾手可得的,可惜很少有人去下功夫看。   当然x86手册非常浩繁, 第三卷应该是软件开发者的重点

     2。启动过程不必太看重, 很多人很喜欢研究启动过程,启动过程里面有一些技巧和一些历史遗留问题的处理,不是首要的问题。 首要问题是搞定内存管理, 内存管理是OS根本
         内存管理有两个抓手,一个是对物理页的管理, 一个是页表的管理以及虚地址分配,如果对处理器手册读的比较通,这块不是问题,现在加入apic之后, 中断也是mem write。
         内存管理通了,就是一通百通,进城也是建立在内存管理之上的东西, 搞定中断和 pci 后   IO也没问题, 其它的很多工具比如锁,各类数据结构 看看怎么用就可以。 很多linker的技巧知道就行

   
     3。基础设施之外,深入一个子系统  基础设施毕竟大多已经成熟,可以深入和自己业务相关的子系统

     4。熟悉并发掘内核中的设计模式 。 这个在lwn上有专门的文章讨论过,很不错。

3、Linux内核的设计对您的工作有何指导意义?

       虚拟化和 内存管理是我目前工作的主要方向,  我觉得内核不太能指导什么,处理器是推动力, 内核更多的是利用处理器提供的功能。当然内核也有一些不错的部分,比如crypto子系统。
       从纯软件来说,内核中的很多设计模式很有借鉴意义。

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
15 [报告]
发表于 2013-06-27 20:56 |只看该作者
把mm看了几遍,找能做的做

论坛徽章:
32
CU大牛徽章
日期:2013-05-20 10:45:13每日论坛发贴之星
日期:2015-09-07 06:20:00每日论坛发贴之星
日期:2015-09-07 06:20:00数据库技术版块每日发帖之星
日期:2015-12-13 06:20:0015-16赛季CBA联赛之江苏
日期:2016-03-03 11:56:13IT运维版块每日发帖之星
日期:2016-03-06 06:20:00fulanqi
日期:2016-06-17 17:54:25IT运维版块每日发帖之星
日期:2016-07-23 06:20:0015-16赛季CBA联赛之佛山
日期:2016-08-11 18:06:41JAVA
日期:2016-10-25 16:09:072017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:33:21
16 [报告]
发表于 2013-06-28 01:16 |只看该作者
我提供一个试读版,162页。

Linux内核设计的艺术.2Ed(试读版).pdf (4.7 MB, 下载次数: 268)

论坛徽章:
32
CU大牛徽章
日期:2013-05-20 10:45:13每日论坛发贴之星
日期:2015-09-07 06:20:00每日论坛发贴之星
日期:2015-09-07 06:20:00数据库技术版块每日发帖之星
日期:2015-12-13 06:20:0015-16赛季CBA联赛之江苏
日期:2016-03-03 11:56:13IT运维版块每日发帖之星
日期:2016-03-06 06:20:00fulanqi
日期:2016-06-17 17:54:25IT运维版块每日发帖之星
日期:2016-07-23 06:20:0015-16赛季CBA联赛之佛山
日期:2016-08-11 18:06:41JAVA
日期:2016-10-25 16:09:072017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:33:21
17 [报告]
发表于 2013-06-28 01:29 |只看该作者
1、说说您当初学习Linux内核源码是从看那本书开始的,还是直接看源码?
以前看过《Linux内核技术手册》/《Linux Kernel in a Nutshell》中英文版,该书比较基础,看完后我对Linux内核有一定的认识,谈不上很深。
Linux内核的中英文书籍都有不少,比如《Linux内核设计与实现》、《Linux内核源代码情景分析》上/下、《深入理解Linux内核》、《Linux内核源代码完全注释》、《Linux内核分析及编程》等,其中有两本曾经在书店站着粗读过,略有收获。

2、说说您的Linux内核源码学习经验
要学习Linux内核源码,最好是具备以下几个基础:
1)C语言编程基础
2)计算机操作系统原理
3)计算机组成原理

3、Linux内核的设计对您的工作有何指导意义?
我并没有从事Linux内核剪裁、定制等方面的工作,所以对Linux内核源码深入的不多。对我来说,熟悉Linux的设计有助于加深对Linux系统的认识和管理,很多Linux设置或配置可以做到知其然而知其所以然,对项目开发、部署、维护等都是很有用的。

论坛徽章:
0
18 [报告]
发表于 2013-06-28 10:12 |只看该作者
图书馆借过第一版,价格还是挺贵的,0.11与现在的内核差距又有点大

论坛徽章:
3
亥猪
日期:2013-08-28 12:50:23白羊座
日期:2013-11-25 12:55:50酉鸡
日期:2014-02-12 10:46:13
19 [报告]
发表于 2013-06-28 10:17 |只看该作者
就好比我们现在在bash下写脚本,打命令行,初级的时候可能遇不到什么问题,后来用上变量、通配符什么的一不小心就出错,论坛上就时有遇到类似问题的。如果对bash对一个命令从获取输入到解析到执行的这个过程有一个了解的话,知道变量扩展、路径扩展的先后顺序的话,就会对非预期的表现能做出分析,或者说直接能避免出现非预期的操作了。同样的,对于几个命令嵌套使用的时候,经常会遇到特殊字符使用上出现非预期的表现,如果对嵌套命令的特殊字符转义熟悉了解的话,就能分析出要加几重的转义,或者知道为什么要加这么多的反斜杠了。

有点儿共鸣!小弟受教了

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
20 [报告]
发表于 2013-06-28 12:11 |只看该作者
回复 5# linggang_123
目前正在啃着0.11版内核呢,开啃三月了,赵炯老师的书确实挺适合刚开始看内核。。。
顶。。


0.11内核地区是值得看,但不适合看太久,大体了解后,看看相对新的内核版本的学习资料
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP