当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 13 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 请教各位一个问题:关于内核开发(二次开发)
帖子发表于 : 2008-11-23 23:00 

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

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

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

谢谢


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 请教各位一个问题:关于内核开发(二次开发)
帖子发表于 : 2008-11-23 23:13 

注册: 2008-11-19 23:13
帖子: 15
送出感谢: 0 次
接收感谢: 0 次
为什么只有浏览没有回帖啊????

:em20


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 请教各位一个问题:关于内核开发(二次开发)
帖子发表于 : 2008-11-23 23:23 
头像

注册: 2005-12-28 1:16
帖子: 3916
地址: 火星
系统: Ubuntu 12.10 X64
送出感谢: 1
接收感谢: 0 次
2.6.27.5的内核源码就有160多万行了

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

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

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

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

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


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

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



如果没别的事情耽搁,两个月足够你搞定。good luck


_________________
目前负债150多万


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 请教各位一个问题:关于内核开发(二次开发)
帖子发表于 : 2008-11-24 11:46 

注册: 2008-11-19 23:13
帖子: 15
送出感谢: 0 次
接收感谢: 0 次
全力以赴的!!!

加油了,谢谢大哥的指点,苟富贵勿会忘!


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 请教各位一个问题:关于内核开发(二次开发)
帖子发表于 : 2008-11-24 23:05 

注册: 2007-10-19 0:02
帖子: 18
地址: CTSU fo ess
送出感谢: 0 次
接收感谢: 0 次
xhy 写道:
如果没别的事情耽搁,两个月足够你搞定。good luck


2个月?难道是Bill Joy二世?

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

看Linux内核代码这样的事情,需要潜下心慢慢琢磨的,而且必须动手实践才能加以理解,我个人的观点是看是永远都只能得其下。
对于操作系统这样浩大的工程来说切记浮躁,“2月搞定”之类的言论估计只有Bill Joy这样的人有资格说,但是我想他肯定不会这样毫不负责任的说的。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 请教各位一个问题:关于内核开发(二次开发)
帖子发表于 : 2008-11-24 23:43 
头像

注册: 2005-12-28 1:16
帖子: 3916
地址: 火星
系统: Ubuntu 12.10 X64
送出感谢: 1
接收感谢: 0 次
两个月应付考试应该够了,不要高估考试的难度

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

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

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

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

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

而lz有“甚好”的C语言和数据结构基础,又是大四的闲人,两个月怎么会不够呢


_________________
目前负债150多万


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 请教各位一个问题:关于内核开发(二次开发)
帖子发表于 : 2008-11-25 10:33 

注册: 2008-11-19 23:13
帖子: 15
送出感谢: 0 次
接收感谢: 0 次
xhy 写道:

而lz又是大四的闲人,两个月怎么会不够呢


哥哥,我一点都不闲!金融危机,我们也要参加招聘等等阿。找工作哦。

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

大学毕业选择一个什么样的工作和道路,方向还是挺关键的阿。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 请教各位一个问题:关于内核开发(二次开发)
帖子发表于 : 2008-11-25 22:42 

注册: 2008-11-19 23:13
帖子: 15
送出感谢: 0 次
接收感谢: 0 次
浏览60次,怎么才回复6次啊?
哥哥姐姐们,给点建议啊,让弟弟我少走点弯路。


十分感谢啊


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 请教各位一个问题:关于内核开发(二次开发)
帖子发表于 : 2008-11-25 23:00 
头像

注册: 2007-09-10 13:43
帖子: 168
送出感谢: 0 次
接收感谢: 0 次
加油~~~~~~~~~我什么也不会,只好顶你的


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 请教各位一个问题:关于内核开发(二次开发)
帖子发表于 : 2008-11-25 23:41 

注册: 2007-10-19 0:02
帖子: 18
地址: CTSU fo ess
送出感谢: 0 次
接收感谢: 0 次
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之类的,不然丢了西瓜,捡芝麻。:)


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 请教各位一个问题:关于内核开发(二次开发)
帖子发表于 : 2008-11-26 23:49 

注册: 2008-11-19 23:13
帖子: 15
送出感谢: 0 次
接收感谢: 0 次
yetiboy 写道:
xhy 写道:


看到楼主仅仅是为了考试摸摸Linux,我个人认为还是不用放弃自己擅长的东西,比如Java,C#,VC之类的,不然丢了西瓜,捡芝麻。:)


一个职业方向问题,不知道哪个是芝麻哪个是西瓜,很多人都说linux很好很有前途,底层始终要比高层的更有前途。

高层的东西很多人都破口大骂呢。 正因为大四,java,vc也不是精通,最多算的上熟悉。是不是我要种一颗瓜的种子,而现在必须扔掉芝麻呢?(VC,JAVA等)
过来人的哥哥姐姐们,人生道路是不是很多选择或是困扰呢??你们面临不知所挫的情况,或是迷茫的事情如何做的呢??


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 请教各位一个问题:关于内核开发(二次开发)
帖子发表于 : 2008-11-27 16:55 
头像

注册: 2006-09-19 18:16
帖子: 3711
送出感谢: 0 次
接收感谢: 3
steven_funy 写道:
你们面临不知所挫的情况,或是迷茫的事情如何做的呢??


打星际。

偶尔 cs


_________________
Ubuntu 系统备份、恢复、克隆、批量部署、制作 live 系统


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 请教各位一个问题:关于内核开发(二次开发)
帖子发表于 : 2008-12-02 10:01 

注册: 2007-07-26 14:25
帖子: 39
送出感谢: 0 次
接收感谢: 0 次
挑出一段代码,让我解释是什么意思和实现功能。

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

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

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


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

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


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 13 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译