请教各位一个问题:关于内核开发(二次开发)

内核编译和嵌入式产品的设计与开发
回复
steven_funy
帖子: 15
注册时间: 2008-11-19 23:13
送出感谢: 0
接收感谢: 0

请教各位一个问题:关于内核开发(二次开发)

#1

帖子 steven_funy » 2008-11-23 23:00

大家好本人接触LINUX不久,C语言和数据结构基础甚好,我们实验室有个有名的教授,让我自己去看linux内核源代码,然后觉得自己可以了,去他那里做试题,如果通过了,然后可以在实验室学习和做些事情。考试题目:教授挑出一段代码,让我解释是什么意思和实现功能。

请问:内核源代码如此大的数据量,要如何看啊?最短要多久时间啊?教授是在难为我吗?

PS:软件工程本科 大四学生

谢谢
steven_funy
帖子: 15
注册时间: 2008-11-19 23:13
送出感谢: 0
接收感谢: 0

Re: 请教各位一个问题:关于内核开发(二次开发)

#2

帖子 steven_funy » 2008-11-23 23:13

为什么只有浏览没有回帖啊????

:em20
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星
送出感谢: 1 次
接收感谢: 0

Re: 请教各位一个问题:关于内核开发(二次开发)

#3

帖子 xhy » 2008-11-23 23:23

2.6.27.5的内核源码就有160多万行了

如果要全看一遍,每天5000行的速度要将近一年,显然不可能

建议你围绕一个进程从创建到死亡的过程,揪出其中的代码阅读分析。

主要有 内存管理,进程创建,进程调度,中断和信号,文件系统等

直接看代码必然看不懂,深入理解Linux内核是必看的书,看这书之前必须把Unix环境看一遍,否则没有基础

看完这两本书可以啃代码了,vim+ctags+taglist+cscope是必备的,emacs也可,其余软件用于看内核代码约等于废物


内核中的数据结构不多,但是写的很精致,跟教材里的标准形式可能有些不同

普通数组,链表(指针跟数据分离的通用链表),堆,红黑树,B(+-*)树,hash表,AVL二叉树,优先队列等。



如果没别的事情耽搁,两个月足够你搞定。good luck
目前负债150多万
steven_funy
帖子: 15
注册时间: 2008-11-19 23:13
送出感谢: 0
接收感谢: 0

Re: 请教各位一个问题:关于内核开发(二次开发)

#4

帖子 steven_funy » 2008-11-24 11:46

全力以赴的!!!

加油了,谢谢大哥的指点,苟富贵勿会忘!
yetiboy
帖子: 18
注册时间: 2007-10-19 0:02
来自: CTSU fo ess
送出感谢: 0
接收感谢: 0

Re: 请教各位一个问题:关于内核开发(二次开发)

#5

帖子 yetiboy » 2008-11-24 23:05

xhy 写了: 如果没别的事情耽搁,两个月足够你搞定。good luck
2个月?难道是Bill Joy二世?

understanding linux kernel只是一个参考书而已,除了代码必看必写,没有别的东西是必须的:)对于Linux内核这样集中了世界上众多优秀程序员结晶的代码,花上2年才入门也没有任何夸张的地方。内存管理,进程创建,进程调度,中断和信号,文件系统这只是许久以前操作系统关心的经典话题(当然现在也是性能的焦点地方),而现代的SMP,Concurrency,Parallel,Security等任何一个话题很少被教科书涉及到,但在操作系统的代码中她们的影响随处可见。

看Linux内核代码这样的事情,需要潜下心慢慢琢磨的,而且必须动手实践才能加以理解,我个人的观点是看是永远都只能得其下。
对于操作系统这样浩大的工程来说切记浮躁,“2月搞定”之类的言论估计只有Bill Joy这样的人有资格说,但是我想他肯定不会这样毫不负责任的说的。
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星
送出感谢: 1 次
接收感谢: 0

Re: 请教各位一个问题:关于内核开发(二次开发)

#6

帖子 xhy » 2008-11-24 23:43

两个月应付考试应该够了,不要高估考试的难度

我们操作系统是原版英文教材,英文试卷,即使算上课堂时间和考场时间,花了不到也不到20小时

SMP,并发,不是什么太难的事情,教材里都有,原理是差不多的,内核源码里多了些编码的技巧

并行和安全,教材里倒不是重点,考的可能性也不大,可以无视

lz是大四的,应该已经学过系统结构,组成原理,微机接口,对于ulk上的很多东西,只是复习一下

本质上,内核是算法和数据结构的东西,只是需要些计算机方面的基础知识,不是科班出身门槛会高一点

而lz有“甚好”的C语言和数据结构基础,又是大四的闲人,两个月怎么会不够呢
目前负债150多万
steven_funy
帖子: 15
注册时间: 2008-11-19 23:13
送出感谢: 0
接收感谢: 0

Re: 请教各位一个问题:关于内核开发(二次开发)

#7

帖子 steven_funy » 2008-11-25 10:33

xhy 写了:
而lz又是大四的闲人,两个月怎么会不够呢
哥哥,我一点都不闲!金融危机,我们也要参加招聘等等阿。找工作哦。

选择了以后的道路如果是linux方向,那就就要放弃VC,JAVA等的工作和学习了哦。VC 有些开发的经验,至于linux 没有什么经验阿。

大学毕业选择一个什么样的工作和道路,方向还是挺关键的阿。
steven_funy
帖子: 15
注册时间: 2008-11-19 23:13
送出感谢: 0
接收感谢: 0

Re: 请教各位一个问题:关于内核开发(二次开发)

#8

帖子 steven_funy » 2008-11-25 22:42

浏览60次,怎么才回复6次啊?
哥哥姐姐们,给点建议啊,让弟弟我少走点弯路。


十分感谢啊
头像
qiang65
帖子: 168
注册时间: 2007-09-10 13:43
送出感谢: 0
接收感谢: 0

Re: 请教各位一个问题:关于内核开发(二次开发)

#9

帖子 qiang65 » 2008-11-25 23:00

加油~~~~~~~~~我什么也不会,只好顶你的
yetiboy
帖子: 18
注册时间: 2007-10-19 0:02
来自: CTSU fo ess
送出感谢: 0
接收感谢: 0

Re: 请教各位一个问题:关于内核开发(二次开发)

#10

帖子 yetiboy » 2008-11-25 23:41

xhy 写了: 我们操作系统是原版英文教材,英文试卷,即使算上课堂时间和考场时间,花了不到也不到20小时
我们上课用的是ULK英文原版3E,讲的是2.4内核(也就是是作业和实验要求的版本),除了上课,几乎大多数人都花上了不少业余时间在linux的代码上。2个月结课后我敢说大多人数人都会觉得2个月的时间太短,对于linux内核,也仅仅是入门,知道怎么走了而已,关注的大多数是一些经典的问题,比如说内存管理,进程调度之类的,而操作系统上的真正热点,只有自己到MIT,UCB,CMU,Utah等牛校和一些开源的OS站点上去‘开开眼界’而已。
xhy 写了: SMP,并发,不是什么太难的事情,教材里都有,原理是差不多的,内核源码里多了些编码的技巧

并行和安全,教材里倒不是重点,考的可能性也不大,可以无视
一切以应试为主,我真的无语了。。。
xhy 写了: lz是大四的,应该已经学过系统结构,组成原理,微机接口,对于ulk上的很多东西,只是复习一下

本质上,内核是算法和数据结构的东西,只是需要些计算机方面的基础知识,不是科班出身门槛会高一点
我不知道为什么有这么多人神化“UKL”这本书。这本书本身是优秀的自不比说,但名头大的书往往并不是适合每一个。我不知道UKL神话运动中到底有多少人一个字一个字去读了“UKL”,从头到底读完了的?还有,楼主看了UKL之后就真能入手了?没有gcc的C方言,AT&T汇编的背景,还有平时不怎么注重的宏在linux内核中满天飞,充满华丽技巧时运用时,还是这么自如的认为"C和数据结构甚好“?

我个人认为内核的本质上,不是什么算法和数据结构,算法和数据结构都是用来描述一个数学模型,而这个模型恰好能解决问题或者利用好资源而已,所以我认为内核只是众多解决问题的模型集合,当然并不是简单的相加。而算法和数据结构本身也是很复杂难掌握,更难运用的工具,需要的不仅仅是一些基础知识而已。

操作系统教科书一般都偏重于算法,采用的数据结构等,重点是解释how it works,而现实中的操作系统往往是跟硬件打交道,也就是大多问题都和I/O有关,但这点在教科书上几乎不怎么讲的,顶多一个什么原理扔出来。不能从硬件角度出发,不能从现实的性能考虑,很难理解why it works this way

看到楼主仅仅是为了考试摸摸Linux,我个人认为还是不用放弃自己擅长的东西,比如Java,C#,VC之类的,不然丢了西瓜,捡芝麻。:)
steven_funy
帖子: 15
注册时间: 2008-11-19 23:13
送出感谢: 0
接收感谢: 0

Re: 请教各位一个问题:关于内核开发(二次开发)

#11

帖子 steven_funy » 2008-11-26 23:49

yetiboy 写了:
xhy 写了:

看到楼主仅仅是为了考试摸摸Linux,我个人认为还是不用放弃自己擅长的东西,比如Java,C#,VC之类的,不然丢了西瓜,捡芝麻。:)
一个职业方向问题,不知道哪个是芝麻哪个是西瓜,很多人都说linux很好很有前途,底层始终要比高层的更有前途。

高层的东西很多人都破口大骂呢。 正因为大四,java,vc也不是精通,最多算的上熟悉。是不是我要种一颗瓜的种子,而现在必须扔掉芝麻呢?(VC,JAVA等)
过来人的哥哥姐姐们,人生道路是不是很多选择或是困扰呢??你们面临不知所挫的情况,或是迷茫的事情如何做的呢??
头像
ptptptptptpt
帖子: 3711
注册时间: 2006-09-19 18:16
送出感谢: 0
接收感谢: 1 次

Re: 请教各位一个问题:关于内核开发(二次开发)

#12

帖子 ptptptptptpt » 2008-11-27 16:55

steven_funy 写了:你们面临不知所挫的情况,或是迷茫的事情如何做的呢??
打星际。

偶尔 cs
七分之雨后
帖子: 39
注册时间: 2007-07-26 14:25
送出感谢: 0
接收感谢: 0

Re: 请教各位一个问题:关于内核开发(二次开发)

#13

帖子 七分之雨后 » 2008-12-02 10:01

挑出一段代码,让我解释是什么意思和实现功能。

把linux的机制理解了,看代码理解意思和它的功能,这个不难吧?

你看linux源码难道不是理解他的功能吗?

教授又不是要你看功能写代码,而是要你看代码答功能


我觉得你C不错的话,看那个0.12的源码,+上一定的汇编能里,理解程序功能应该不是难事

我自己就比较苦,上学的时候汇编没仔细,直接学了高级语言,现在想看linux源码,得先回过头看汇编和c
回复

回到 “内核及嵌入式开发”