免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
20
CU大牛徽章
日期:2013-04-17 11:48:26羊年新春福章
日期:2015-03-10 22:39:202015年中国系统架构师大会
日期:2015-06-29 16:11:282015亚冠之平阳省
日期:2015-07-31 09:19:042015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-09-30 06:20:002015亚冠之柏太阳神
日期:2015-10-19 20:29:5915-16赛季CBA联赛之天津
日期:2016-11-29 14:03:4315-16赛季CBA联赛之北控
日期:2016-12-24 20:51:492015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-12 20:58:532014年中国系统架构师大会
日期:2014-10-14 15:59:00
51 [报告]
发表于 2013-07-02 22:03 |只看该作者
学习Linux内核,对于深入理解Linux操作系统具有重要的意义。比如,对于运维工程来说,需要了解Linux操作系统的各个参数,如内核的转发,TCP的发送接收缓冲区的调整,用户可以打开的最大文件数等,对于这些参数,如果没有看过Linux内核原码,对这些参数的了解只是停留在表面,如果认真阅读Linux内核源码,则会有深入的理解。所谓知其然而知其所以然也。

论坛徽章:
20
CU大牛徽章
日期:2013-04-17 11:48:26羊年新春福章
日期:2015-03-10 22:39:202015年中国系统架构师大会
日期:2015-06-29 16:11:282015亚冠之平阳省
日期:2015-07-31 09:19:042015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-09-30 06:20:002015亚冠之柏太阳神
日期:2015-10-19 20:29:5915-16赛季CBA联赛之天津
日期:2016-11-29 14:03:4315-16赛季CBA联赛之北控
日期:2016-12-24 20:51:492015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-12 20:58:532014年中国系统架构师大会
日期:2014-10-14 15:59:00
52 [报告]
发表于 2013-07-02 22:04 |只看该作者
回复 50# Hongqiyaodao


    兄弟你是从开发转到运维吧,我觉得从开发转到运维是一个很不错的转变

论坛徽章:
0
53 [报告]
发表于 2013-07-04 10:10 |只看该作者
写的很不错,很专业!

论坛徽章:
3
金牛座
日期:2013-08-26 10:25:02摩羯座
日期:2013-09-09 15:14:322015年亚洲杯之约旦
日期:2015-05-06 09:33:56
54 [报告]
发表于 2013-07-04 17:53 |只看该作者
觉得太深层次了,自己啃不动啊。

论坛徽章:
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
55 [报告]
发表于 2013-07-05 14:39 |只看该作者
回复 16# jieforest


看到下载数量上了100,很欣慰,也不枉我辛苦整理了这个试读版。

   

论坛徽章:
20
CU大牛徽章
日期:2013-04-17 11:48:26羊年新春福章
日期:2015-03-10 22:39:202015年中国系统架构师大会
日期:2015-06-29 16:11:282015亚冠之平阳省
日期:2015-07-31 09:19:042015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-09-30 06:20:002015亚冠之柏太阳神
日期:2015-10-19 20:29:5915-16赛季CBA联赛之天津
日期:2016-11-29 14:03:4315-16赛季CBA联赛之北控
日期:2016-12-24 20:51:492015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-12 20:58:532014年中国系统架构师大会
日期:2014-10-14 15:59:00
56 [报告]
发表于 2013-07-05 23:09 |只看该作者
这是一本很不错的书,特别适合内核新手入门

论坛徽章:
0
57 [报告]
发表于 2013-07-07 21:11 |只看该作者
本帖最后由 liuxuejin 于 2013-07-07 21:13 编辑

1、说说您当初学习Linux内核源码是从看那本书开始的,还是直接看源码?
我接触内核的第一本书是unix操作系统设计与实现,尽管这本书非常的老了,描述也是system V 的知识,
但是阅读本书 却使我对我内核有了大致的逻辑认识,尤其是文件系统那块。
后来做毕业设计,论文是 linux文件系统的增强与实现,为了写代码我购买了 LINUX内核源代码情景分析
这是一本大部头的书籍,描述的非常通俗易懂,对我的帮助也非常的大。
其实学习linux源代码 还有一个很重要的途径就是阅读IBM 网站上的一些文章,非常有帮助。
写的也浅显易懂。靠着这些理论知识 边啃linux的源代码 边写论文。搞完了毕业设计了
内核的知识也学了不少了。后来工作大半年后 你们出了第一版 青色封面的 我又购买了。
在这里啰嗦一下:内核版本的内核问题汇总非常值得仔细阅读,感谢Godbach。
第一个内核代码 拦截linux系统调用 就是来自 Godbach的代码。呵呵



2、说说您的Linux内核源码学习经验
1.内核学习我觉得最主要是先把框架 也就是原理搞清楚再去阅读代码,如果连原理都不知道
看源码 无疑是看天书。
2.好的工具  sourceinsight 来阅读源码 不要小看这些细节,看起源码 效率高不少。
一下几个经验是 一些前辈总结下来的,我也记录下来分享给大家:
3.我们要解决内核运行时那一堆指来指去的指针的问题。这个是我自已调试用的土方法,我就用dump_stack在关键的地方打印出顺序就行了。因为我们做的是嵌入式设备,很多时候不能用KGDB这些高级工具在线调,而且这种方法基本不增加其它的性能开销。

论坛徽章:
0
58 [报告]
发表于 2013-07-07 21:12 |只看该作者

4.有多个定义不知道用哪个。这个基本是因为LINUX支持的CPU比较多造成的。
我们可以用GDB静态分析,也可以用objdump和nm等工具来精确定位一些函数和变量,也可以根据宏来一步一步分析,比如是mips的那么我们就进mips看,这样一步一步来。

5.具备一些意识,你现在面对的是操作系统,不仅仅是只有C文件和头文件的应用,
MAKEFILE,链接文件,Kconfig都应该是你的朋友。
尤其在看一个模块或者一小部分你感兴趣的代码的时候,
首先可以用MAKEFILE和KCONFIG来缩小你需要关注的范围。

6.多阅读大侠的博客和和论坛交流很重要,毕竟搞内核的人不错 你不可能像java一样
有问题 百度就能搞到答案。


3、Linux内核的设计对您的工作有何指导意义?
认识了内核的设计可以使我更清晰的理解linux的原理,尤其是文件系统的设计,
运用c语言却写出了面向对象的代码。理解了linux的内核设计
,在思考的问题的时候 更能顺着linux的设计来理解问题。

论坛徽章:
0
59 [报告]
发表于 2013-07-08 19:59 |只看该作者
说 linux内核的设计是一门艺术,我个人感觉一点也不夸张。里面很多地方都用到了很深刻的哲学思想,具体到每个学科,有控制方面的,计算机方面的,数学方面的。。。。但谁能想到,0.1的内核源码居然是linus在大学时代的产物,也就是出自一个20岁左右的孩子,天才也。
要想彻底搞懂内核源码,难度是非常大的,估计也没几个人能彻底搞懂,一方面是难度确实大,另一方面,很多人的工作也不需要把源代码全弄明白,除非是设计操作系统的人有这个必要。但是,把内核的思路理清楚,把重要的数据结构弄清楚,对于从事linux相关工作,特别是嵌入式linux开发的人员来讲是非常有必要的。
源码的认识过程,一开始是无从下手,慢慢的会对一些常用的数据结构开始熟悉,再后来根据函数名,能大体有个思路,再假以时日,就可以深入细节了。
具体能悟到什么程度,那就看个人造化了。毕竟只有一个linus。

论坛徽章:
0
60 [报告]
发表于 2013-07-09 09:39 |只看该作者
1、说说您当初学习Linux内核源码是从看那本书开始的,还是直接看源码?
最初学习内核是从<<linux内核完全注释>>开始(后来出了linux内核完全剖析,也一起买了)。一边看书,一边用SourceInsight对照着源代码看,效果还是不错的。大致知道了启动过程中的模式切换,最初的init进程。然后又看了内存管理,文件系统,disk驱动相关的东西。麻雀虽小,但是基本知道了内核所应有的模块和基本框架。

2、说说您的Linux内核源码学习经验
(1) 学习内核,我觉得应该由小入大。首先了解内核的基本部件和框架,然后根据自己感兴趣的内容,再深入进去。没有兴趣,就不能够长期的坚持下去。
(2) 可以先了解Linux内核的最初版本,大致了解内核框架,需要做哪些事情,如何实现。然后再去看<<深入理解Linux内核>>和<<Professional Linux Kernel Architecture>>,它们都更细致地描述了相对较新的内核版本的各个组成部分。
(3) 仅仅看是不够的,应该亲自动手做点事情。那么推荐<<自己动手写OS>>(或者第二版Orange)。如果时间不多,那么可以参考网页http://skelix.net/skelixos/index_zh.html,也是描述自己如何动手操作硬件,包括启动,中断,驱动,I/O等等。
(4) 如果有时间,推荐看一看<<The Design of the UNIX Operating System>>,这真的是不可多得的好书。当初看文件系统和Cache实现部分,看得如痴如醉,写得太好了。无论你以后是否做内核开发,都具有相当的指导意义。描述行云流水,精确到位,滴水不漏。

3、Linux内核的设计对您的工作有何指导意义
(1) 如果你做内核开发,那么能让你更清楚地知道,自己应该如何修改代码,修改的代码会以预期的行为运行。而不会不知道会踏空。
(2) 如果你不做内核开发,那么也能增强你的系统知识和逻辑。在你遇到疑难杂症的时候,往往能让你拨开乌云,看见曙光。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP