免费注册 查看新帖 |

Chinaunix

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

有奖线上连载讨论:我的内核学习之路-回忆录 活动结束 获奖名单公布 [复制链接]

论坛徽章:
0
101 [报告]
发表于 2011-09-02 11:53 |只看该作者
我一开始在学校学习重点放在java编程,只是玩一下linux的命令,到了公司接触了linux用gcc编译c写的程序完成工作,后面又要vc++做了一个项目,后面才接触开始真正接触linux(修改cgi开始,查看thttpd服务器源代码比较难懂)、交叉编译、用console查看打印信息等,发现开发环境比较复杂,代码不在自己pc上,全是摸索,幸好遇到不懂的问题可以问问同事。
我总结一下工作的心得和体会。
1.必须对linux熟悉,会用常用的命令查看信息。
2.必须熟悉gcc编译C语言程序和Makefile写法和技巧,你懂的。
3.对于网络开发,必须熟悉netfilter和iptables命令的使用。
4.多上cu,找最新的网络方面的书看看
5.多做实验,打印信息,看看是否与自己理解的符合
6.熟悉如何在内核增加模块,熟悉网络数据包在内核中的流程
推荐《linux网络编程》,结合书中的例子,用虚拟机实验一下源代码,记住提及的函数的使用方法。将代码和内核源代码,用source insight生成项目查看比较好查看理解。

学习Linux比windows麻烦很多,用vs写代码确实方便舒服,嵌入式更新固件也累,调试都是打印信息,gdb都不好用上,有没有熟悉linux调试技巧的童鞋?给点建议。

论坛徽章:
0
102 [报告]
发表于 2011-09-02 11:57 |只看该作者
回复 23# 塑料袋


    保证身体很重要~

论坛徽章:
0
103 [报告]
发表于 2011-09-02 11:59 |只看该作者
支持个,不懂编程的飘过...不过看了让人很有学习的劲头

论坛徽章:
1
天秤座
日期:2014-11-05 16:54:55
104 [报告]
发表于 2011-09-02 12:25 |只看该作者
不懂C没法看,,

论坛徽章:
0
105 [报告]
发表于 2011-09-02 12:26 |只看该作者
探讨内核学习之路

通常学习像爬山,开始缓,慢慢陡峭,最后到达山顶。
但是内核的学习路径不是。开始就是悬崖,能爬上去就能坚持,否则基本停留在原地。。。

经典的内核书籍有 深入理解linux内核(翻译的极差),情景分析(毛德操写的),内核详细注释(基于0.11版),不管那本树,看过的人都很多,能坚持看一个月以上的就只有十分之一了,能坚持半年以上的更少。

内核的学习曲线是九十度陡峭的,能建立基本的架构,看内核代码像普通的c代码一样,后面就后走了。
可惜这一步恰恰最难。。。

探讨一下内核的难度所在:
内核是一个整体,很难分割。比如看文件系统,vfs和具体文件系统,还行,可以看下去,
inode ,dentry概念出来了,有点难了,坚持吧。
咦, 怎么有address_space 了,这是干啥的?又出来alloc_page,跳到内存管理了,
越来越搞不明白了,完了,,放弃。。。

第二,前面帖子说了,国内的工作学习环境应用内核的太少(也有,下面再说),
大多数人学只是兴趣,难以致用,再加上出门就是悬崖,苦逼的学习需要极强的毅力坚持,
多半也就放弃了。。

论坛徽章:
0
106 [报告]
发表于 2011-09-02 12:38 |只看该作者
建议一下的学习之路哈:

1. 建立操作系统的基本概念,达到国内本科科班教育的水准。
  鉴于国内极差的教学水平和游乐园一样的学习氛围,不是达到大多数计算机本科生的
  操作系统理解水平。

2.  建立实际操作系统的概念和架构。
   
   前景分析这本书不适合这个阶段,情景分析是代码解读,太绕。
   深入理解linux内核也不适合,翻译的太差, 而且基本接近代码导读。
   详细注释这本书倒适合入门,可惜0.11太简陋,和现在的linux2.6版本差的太远。。。可以花一定时间看看,迅速建立架构。


3. 读代码,做试验。
   从内存管理,文件系统,中断异常,进程管理,设备模型,io体系结构等等分章节,分层面阅读代码,   然后修改内核代码,做试验,做项目。。

论坛徽章:
0
107 [报告]
发表于 2011-09-02 13:46 |只看该作者
回复 106# easyblue


兄弟发的几个贴说的很有道理啊。

看过很多人说学习kernel浮躁是大敌,实际上在我们这样的环境真正能不问待遇不去攀比,一心学习的人能有多少呢?

内核所牵涉的每一块都是非常庞大,就你说的例子,从vfs到alloc_pages,这里全部吃透就要花上非常多的时间。
一个人的精力总是有限的,若只求了解一个基本架构,可能并不需要很多时间,但是要深入一个子系统,那就要花上相当大的精力。
一个人若是在做项目又怎么能挤出那么大把的时间呢?

再说一个公司要是只是培养你(或者说一个可以让你有大把大把学习时间的公司),能给出多高的薪资呢。
一个人是不是能够不“浮躁”地一直安心踏实学习,不管同学们现在的工资比你高上一截。
攀比可能不算什么,但是我们确实需要钱,要住房子,要娶媳妇。
这么说确实很俗,但是很现实。
如果我能有一个比较安稳的环境,不必顾虑这些生活上的事(富二代)
我愿意每天把除了睡觉吃饭之外几乎所有的时间花在内核上,因为我喜欢做
但是想着这些,又不禁有些彷徨,有些浮躁

我觉得,出于兴趣学习内核是好的,如果为了钱就会显得“得不偿失”,学习内核性价比不行啊。

论坛徽章:
0
108 [报告]
发表于 2011-09-02 17:19 |只看该作者
在读书的时候,比较讨厌windows,我这个人,比较喜欢折腾,总是想知道为什么,在大二的时候,在图书馆借了毛德操的
"Linux内核源码情景分析",我记的是上下册,还续借了1次,但是还是没有好好,认认真真的看,现在想想,浪费了大好时光,工作后,买了本赵X的 0.11内核分析,现在也没细看,惭愧,惭愧

论坛徽章:
0
109 [报告]
发表于 2011-09-03 15:31 |只看该作者
本人也读过一点内核代码,但是我不知道怎么去用这些东西,是去修改,还是把相同的方法用到别的地方。

论坛徽章:
0
110 [报告]
发表于 2011-09-03 16:59 |只看该作者
开始学习linux  最近学了网络  应用 想以后做驱动和内核  希望前辈们多多指点
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP