自己对学习内核比较感兴趣,但至今仍旧有个问题萦绕在我的心头,那就是学习完内核能干什么?到底有什么用?
通过今天无意间发现的一个类似话题的帖子,终于揭开我的心头之解。现摘录如下,以期对想了解的这个问题的同道中人有所帮助。
摘录如下:
1、在一些基于linux应用的研发领域: 存储,交换,防火墙等(当然也与嵌入相关),手持设备,... 都需要改写或定制linux,这时候熟悉linux内核是必须的.
2、通常网络的底层开发都要涉及内核。
3、首先,看内核可以是工作的需要,做内核开发,移植,编写驱动等等,这都是可能的。
很多人先问看这个以后能有什么回报。我觉的我可以从职业发展规划的角度考虑这个问题,先看清路再走不错,无可厚非,但是如何看清是个问题,这个问题我不想多做讨论,以前某位老兄发过一篇类似的帖子,大家争论了不少,每个人情况不同,自己的路,还是自己选择。
关于看内核code,从我的角度,我认为,对于做技术的我们来说,不仅仅是去了解linux内核的工作细节,看明白linux内核是如何管理内核的,对于你在linux下写个驱动什么的确实很有帮助,几个常用的接口很快就会用的非常熟练且正确。但是,我认为更重要的是去从软件设计的角度去思考linux的实现。要知其然而知其所以然。也许有一天,我们需要自己去设计一个内存管理程序,你不能说把linux移植过来吧,上面的接口很好使。这是从软件设计的角度去分析的。
另外,从语言角度,内核中不乏很多非常优美的code,敢问作为搞技术的你,学C语言学了多久了?用C语言用了多久了?你觉的你能看明白linux中所有的C语法吗?也许很多人可以,但是,我们仍然能从linux内核code中学习到很多非常好的用法。 另外,你觉的你Makefile学的怎么样? 你的脚本语言用的怎么样?你能看懂linux的kbuld系统中大部分的语句吗?kbuild中确实不乏很多很精彩的脚本用法的。
无论你是学习C语言,学习汇编,学习Makefile,学习脚本语言,你都可以从内核code中获益良多的。
另外,从写驱动的角度,内核的很多驱动程序可以作为很好的参考。也许你需要在windows上或者别的什么系统上写某个驱动,linux中没准就有现成的driver code,参考一下也会有所收获的。
其实无论学什么,学习的思路都是一样的,学习的态度和高度决定了很多。
4、先从基础开始,搞明白系统架构,操作系统的工作原理。把命令,文件系统,shell编程搞熟了,再看看内核,这样会对操作系统的工作原理会比较有底,如果是搞系统管理的话。
5、最最基本的,看内核可以让你理解一些原理,硬件系统以及OS;
再高一点可以学习一些数据结构的组织和使用。
阅读(4007) | 评论(1) | 转发(0) |