请教各位一个问题:关于内核开发(二次开发)
-
- 帖子: 15
- 注册时间: 2008-11-19 23:13
请教各位一个问题:关于内核开发(二次开发)
大家好本人接触LINUX不久,C语言和数据结构基础甚好,我们实验室有个有名的教授,让我自己去看linux内核源代码,然后觉得自己可以了,去他那里做试题,如果通过了,然后可以在实验室学习和做些事情。考试题目:教授挑出一段代码,让我解释是什么意思和实现功能。
请问:内核源代码如此大的数据量,要如何看啊?最短要多久时间啊?教授是在难为我吗?
PS:软件工程本科 大四学生
谢谢
请问:内核源代码如此大的数据量,要如何看啊?最短要多久时间啊?教授是在难为我吗?
PS:软件工程本科 大四学生
谢谢
-
- 帖子: 15
- 注册时间: 2008-11-19 23:13
Re: 请教各位一个问题:关于内核开发(二次开发)
为什么只有浏览没有回帖啊????
- xhy
- 帖子: 3916
- 注册时间: 2005-12-28 1:16
- 系统: Ubuntu 12.10 X64
- 来自: 火星
Re: 请教各位一个问题:关于内核开发(二次开发)
2.6.27.5的内核源码就有160多万行了
如果要全看一遍,每天5000行的速度要将近一年,显然不可能
建议你围绕一个进程从创建到死亡的过程,揪出其中的代码阅读分析。
主要有 内存管理,进程创建,进程调度,中断和信号,文件系统等
直接看代码必然看不懂,深入理解Linux内核是必看的书,看这书之前必须把Unix环境看一遍,否则没有基础
看完这两本书可以啃代码了,vim+ctags+taglist+cscope是必备的,emacs也可,其余软件用于看内核代码约等于废物
内核中的数据结构不多,但是写的很精致,跟教材里的标准形式可能有些不同
普通数组,链表(指针跟数据分离的通用链表),堆,红黑树,B(+-*)树,hash表,AVL二叉树,优先队列等。
如果没别的事情耽搁,两个月足够你搞定。good luck
如果要全看一遍,每天5000行的速度要将近一年,显然不可能
建议你围绕一个进程从创建到死亡的过程,揪出其中的代码阅读分析。
主要有 内存管理,进程创建,进程调度,中断和信号,文件系统等
直接看代码必然看不懂,深入理解Linux内核是必看的书,看这书之前必须把Unix环境看一遍,否则没有基础
看完这两本书可以啃代码了,vim+ctags+taglist+cscope是必备的,emacs也可,其余软件用于看内核代码约等于废物
内核中的数据结构不多,但是写的很精致,跟教材里的标准形式可能有些不同
普通数组,链表(指针跟数据分离的通用链表),堆,红黑树,B(+-*)树,hash表,AVL二叉树,优先队列等。
如果没别的事情耽搁,两个月足够你搞定。good luck
目前负债150多万
-
- 帖子: 15
- 注册时间: 2008-11-19 23:13
Re: 请教各位一个问题:关于内核开发(二次开发)
全力以赴的!!!
加油了,谢谢大哥的指点,苟富贵勿会忘!
加油了,谢谢大哥的指点,苟富贵勿会忘!
-
- 帖子: 18
- 注册时间: 2007-10-19 0:02
- 来自: CTSU fo ess
Re: 请教各位一个问题:关于内核开发(二次开发)
2个月?难道是Bill Joy二世?xhy 写了: 如果没别的事情耽搁,两个月足够你搞定。good luck
understanding linux kernel只是一个参考书而已,除了代码必看必写,没有别的东西是必须的:)对于Linux内核这样集中了世界上众多优秀程序员结晶的代码,花上2年才入门也没有任何夸张的地方。内存管理,进程创建,进程调度,中断和信号,文件系统这只是许久以前操作系统关心的经典话题(当然现在也是性能的焦点地方),而现代的SMP,Concurrency,Parallel,Security等任何一个话题很少被教科书涉及到,但在操作系统的代码中她们的影响随处可见。
看Linux内核代码这样的事情,需要潜下心慢慢琢磨的,而且必须动手实践才能加以理解,我个人的观点是看是永远都只能得其下。
对于操作系统这样浩大的工程来说切记浮躁,“2月搞定”之类的言论估计只有Bill Joy这样的人有资格说,但是我想他肯定不会这样毫不负责任的说的。
- xhy
- 帖子: 3916
- 注册时间: 2005-12-28 1:16
- 系统: Ubuntu 12.10 X64
- 来自: 火星
Re: 请教各位一个问题:关于内核开发(二次开发)
两个月应付考试应该够了,不要高估考试的难度
我们操作系统是原版英文教材,英文试卷,即使算上课堂时间和考场时间,花了不到也不到20小时
SMP,并发,不是什么太难的事情,教材里都有,原理是差不多的,内核源码里多了些编码的技巧
并行和安全,教材里倒不是重点,考的可能性也不大,可以无视
lz是大四的,应该已经学过系统结构,组成原理,微机接口,对于ulk上的很多东西,只是复习一下
本质上,内核是算法和数据结构的东西,只是需要些计算机方面的基础知识,不是科班出身门槛会高一点
而lz有“甚好”的C语言和数据结构基础,又是大四的闲人,两个月怎么会不够呢
我们操作系统是原版英文教材,英文试卷,即使算上课堂时间和考场时间,花了不到也不到20小时
SMP,并发,不是什么太难的事情,教材里都有,原理是差不多的,内核源码里多了些编码的技巧
并行和安全,教材里倒不是重点,考的可能性也不大,可以无视
lz是大四的,应该已经学过系统结构,组成原理,微机接口,对于ulk上的很多东西,只是复习一下
本质上,内核是算法和数据结构的东西,只是需要些计算机方面的基础知识,不是科班出身门槛会高一点
而lz有“甚好”的C语言和数据结构基础,又是大四的闲人,两个月怎么会不够呢
目前负债150多万
-
- 帖子: 15
- 注册时间: 2008-11-19 23:13
Re: 请教各位一个问题:关于内核开发(二次开发)
哥哥,我一点都不闲!金融危机,我们也要参加招聘等等阿。找工作哦。xhy 写了:
而lz又是大四的闲人,两个月怎么会不够呢
选择了以后的道路如果是linux方向,那就就要放弃VC,JAVA等的工作和学习了哦。VC 有些开发的经验,至于linux 没有什么经验阿。
大学毕业选择一个什么样的工作和道路,方向还是挺关键的阿。
-
- 帖子: 15
- 注册时间: 2008-11-19 23:13
Re: 请教各位一个问题:关于内核开发(二次开发)
浏览60次,怎么才回复6次啊?
哥哥姐姐们,给点建议啊,让弟弟我少走点弯路。
十分感谢啊
哥哥姐姐们,给点建议啊,让弟弟我少走点弯路。
十分感谢啊
- qiang65
- 帖子: 168
- 注册时间: 2007-09-10 13:43
Re: 请教各位一个问题:关于内核开发(二次开发)
加油~~~~~~~~~我什么也不会,只好顶你的
-
- 帖子: 18
- 注册时间: 2007-10-19 0:02
- 来自: CTSU fo ess
Re: 请教各位一个问题:关于内核开发(二次开发)
我们上课用的是ULK英文原版3E,讲的是2.4内核(也就是是作业和实验要求的版本),除了上课,几乎大多数人都花上了不少业余时间在linux的代码上。2个月结课后我敢说大多人数人都会觉得2个月的时间太短,对于linux内核,也仅仅是入门,知道怎么走了而已,关注的大多数是一些经典的问题,比如说内存管理,进程调度之类的,而操作系统上的真正热点,只有自己到MIT,UCB,CMU,Utah等牛校和一些开源的OS站点上去‘开开眼界’而已。xhy 写了: 我们操作系统是原版英文教材,英文试卷,即使算上课堂时间和考场时间,花了不到也不到20小时
一切以应试为主,我真的无语了。。。xhy 写了: SMP,并发,不是什么太难的事情,教材里都有,原理是差不多的,内核源码里多了些编码的技巧
并行和安全,教材里倒不是重点,考的可能性也不大,可以无视
我不知道为什么有这么多人神化“UKL”这本书。这本书本身是优秀的自不比说,但名头大的书往往并不是适合每一个。我不知道UKL神话运动中到底有多少人一个字一个字去读了“UKL”,从头到底读完了的?还有,楼主看了UKL之后就真能入手了?没有gcc的C方言,AT&T汇编的背景,还有平时不怎么注重的宏在linux内核中满天飞,充满华丽技巧时运用时,还是这么自如的认为"C和数据结构甚好“?xhy 写了: lz是大四的,应该已经学过系统结构,组成原理,微机接口,对于ulk上的很多东西,只是复习一下
本质上,内核是算法和数据结构的东西,只是需要些计算机方面的基础知识,不是科班出身门槛会高一点
我个人认为内核的本质上,不是什么算法和数据结构,算法和数据结构都是用来描述一个数学模型,而这个模型恰好能解决问题或者利用好资源而已,所以我认为内核只是众多解决问题的模型集合,当然并不是简单的相加。而算法和数据结构本身也是很复杂难掌握,更难运用的工具,需要的不仅仅是一些基础知识而已。
操作系统教科书一般都偏重于算法,采用的数据结构等,重点是解释how it works,而现实中的操作系统往往是跟硬件打交道,也就是大多问题都和I/O有关,但这点在教科书上几乎不怎么讲的,顶多一个什么原理扔出来。不能从硬件角度出发,不能从现实的性能考虑,很难理解why it works this way
看到楼主仅仅是为了考试摸摸Linux,我个人认为还是不用放弃自己擅长的东西,比如Java,C#,VC之类的,不然丢了西瓜,捡芝麻。:)
-
- 帖子: 15
- 注册时间: 2008-11-19 23:13
Re: 请教各位一个问题:关于内核开发(二次开发)
一个职业方向问题,不知道哪个是芝麻哪个是西瓜,很多人都说linux很好很有前途,底层始终要比高层的更有前途。yetiboy 写了:xhy 写了:
看到楼主仅仅是为了考试摸摸Linux,我个人认为还是不用放弃自己擅长的东西,比如Java,C#,VC之类的,不然丢了西瓜,捡芝麻。:)
高层的东西很多人都破口大骂呢。 正因为大四,java,vc也不是精通,最多算的上熟悉。是不是我要种一颗瓜的种子,而现在必须扔掉芝麻呢?(VC,JAVA等)
过来人的哥哥姐姐们,人生道路是不是很多选择或是困扰呢??你们面临不知所挫的情况,或是迷茫的事情如何做的呢??
- ptptptptptpt
- 帖子: 3711
- 注册时间: 2006-09-19 18:16
Re: 请教各位一个问题:关于内核开发(二次开发)
打星际。steven_funy 写了:你们面临不知所挫的情况,或是迷茫的事情如何做的呢??
偶尔 cs
-
- 帖子: 39
- 注册时间: 2007-07-26 14:25
Re: 请教各位一个问题:关于内核开发(二次开发)
挑出一段代码,让我解释是什么意思和实现功能。
把linux的机制理解了,看代码理解意思和它的功能,这个不难吧?
你看linux源码难道不是理解他的功能吗?
教授又不是要你看功能写代码,而是要你看代码答功能
我觉得你C不错的话,看那个0.12的源码,+上一定的汇编能里,理解程序功能应该不是难事
我自己就比较苦,上学的时候汇编没仔细,直接学了高级语言,现在想看linux源码,得先回过头看汇编和c
把linux的机制理解了,看代码理解意思和它的功能,这个不难吧?
你看linux源码难道不是理解他的功能吗?
教授又不是要你看功能写代码,而是要你看代码答功能
我觉得你C不错的话,看那个0.12的源码,+上一定的汇编能里,理解程序功能应该不是难事
我自己就比较苦,上学的时候汇编没仔细,直接学了高级语言,现在想看linux源码,得先回过头看汇编和c