首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux内核开发的理论基础

Linux内核开发的理论基础
EN

Software Engineering用户
提问于 2013-11-26 23:45:27
回答 2查看 998关注 0票数 -1

KernelDevViewpoint (显然是一个严肃的源代码)使内核开发看起来像是一种可访问的艺术。据他们说:

与流行的观点相反,内核开发人员很少需要了解微积分级别的数学知识。您需要精通基本算术,并且必须了解布尔代数才能处理设备驱动程序。许多内核开发人员在工作中学到的一项技能是在代码所做的工作中构建状态机的能力。(...)

内核开发人员的技术技能包括C编程语言的经验和Git知识。

这是内核开发的基础吗?基本算术,布尔代数,C和Git?

显然,我不希望在十天内阅读"C“(或其他类似的书)并开始为Linux内核的开发做出贡献,但是,我想知道获得这样做的技能有多难呢?

EN

回答 2

Software Engineering用户

发布于 2013-11-27 00:07:18

这是内核开发的基础吗?基本算术,布尔代数,C和Git?

我从未对内核项目做出过贡献,但除非您正在处理某些部分,如线程锁、安全性等,否则您不需要高级数学。您需要知道如何与其他人一起工作,如何有效地沟通,以及如何使用带有公共存储库的版本控制系统,例如Git。你必须学习团队精神,并期望得到建设性的批评。在我所做的项目中,单元测试是很重要的,大部分时间都是单元测试和文档。

在许多项目上,不需要经过一层或多层的评审,就不能提交项目的更新。你必须通过证明你的技能来赢得信任。在大型项目中,不希望掌握所有的代码,您很可能会在工作的某个部分变得很好,并随着时间的推移学习其他部分。你会看到很多不同的风格和技能水平,除非他们有一套好的标准可遵循。

正如你所看到的,在好的项目中有很多的制衡,这不仅仅是编码。如果您认为您可以作出贡献,请更改并提交更新。希望它一开始就会被拒绝,然后听从评论,做出改变,很快你就会成为团队的一员。你得花很多时间。

票数 1
EN

Software Engineering用户

发布于 2013-11-27 00:34:05

尽管消息来源是值得尊敬的。我会说你只需要基本的算术,布尔代数,C和Git,这是一个粗略的概括。当您看到代码时,几乎所有的东西都简化为简单的普通C代码。但是代码实现了一些比基本算术要复杂得多的东西。下面是一些例子:

  1. 浮点仿真Linux是在没有fpu的i386上启动的。有人为fpu编写了一个仿真程序,其中包括几何。
  2. 算法分析在某种程度上,有人提出了一个AVL树内存分配器。为什么会有人这么做?因为为了平衡树,平均取O(1),最大取O(log n)。要想解决这个问题,需要的不仅仅是基本数学。
  3. 在linux上不行。请参阅http://www.ertos.nicta.com.au/research/l4.verified/,以了解在开发内核时如何使用正式方法。
票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/219606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档