我们本次开源专访的对象是一位认真钻研技术的工程师,谢宝友,他目前任职中兴通讯操作系统团队,他个人在业余时间前后共花费了6年时间完成了对Linux内核Linux 2.6.12内核源代码注释工作。

我们本次开源专访的对象是一位认真钻研技术的工程师,谢宝友,目前任职中兴通讯操作系统团队。他个人在业余时间前后共花费了6年时间完成了对Linux内核Linux 2.6.12内核源代码注释工作。近一个月之前,谢宝友( @kernel-hacker)发布的一条关于Linux 2.6.12内核源代码注释文件的微博,被转载近200次。该微博为大家介绍了包括内存、调度、文件系统等模块在内的Linux 2.6.12内核源代码注释文件,目前该内核源码注释已经托管到CSDN CODE

CSDN CODE地址: https://code.csdn.net/chenyu105/linux_kernel_2-6-11-12_comment

谢宝友(右二)和同事们的合影

下面是采访内容整理。

CSDN:先请您对自己和您的工作做下介绍。

谢宝友:我是一名老中专,1996年毕业于四川省税务学校税收专业,现供职于中兴通讯操作系统团队,对操作系统内核有较强的兴趣,专职于操作系统内核已经有六年时间。

在日常工作中,主要工作是对Linux内核进行分析,解决遇到的标准内核故障;并向项目组提出应用程序优化措施。当然,团队有时也会抓壮丁,去帮其他项目做一些虚拟化、Android相关的工作。我现在还没有达到“内核菜鸟”的水平,因此也就没有将关注的领域扩展到其他方面。在工作中,自己也从头编写过一款自主知识产权的嵌入式操作系统。

CSDN:您是从何时开始做开发相关工作?现在还写代码吗?

谢宝友 :从1999年开始,我就拥有了第一份正式的“程序员”工作。十五年来,从来没有离开过代码,算是一个标准的程序员吧。有几次转管理岗位的机会,我婉言谢绝了。林语堂老先生在《吾国与吾民》这本书中提到:国人最大的特点在于“死”要面子。在技术领域,这实在没有必要。

CSDN:内核代码注释,您花了多长时间,又是如何完成的?其中有什么特别有趣或难忘的经历?

谢宝友:2008年,出于对操作系统技术的爱好,我进入中兴通讯操作系统团队并开始接触Linux内核。在我的坚持下,部门领导把我分配到了内核组。从此,开始了长达6年的内核代码注释过程。其中,前三年是收获最大的一段时期,这期间看了《深入理解LINUX内核》、《深入理解LINUX网络内幕》、《深入理解LINUX虚拟内存管理》、《LINUX设备驱动程序》这几本经典内核书籍,共做了2200页、87万字的word笔记

在学习内核的过程中,最难忘的经历是刚开始看《深入理解LINUX内核》这本书时,真有一种雾里看花的感觉。足足一个月,才将《中断和同步》看完,这真是一种折磨。但是就在某一天,团队遇到一个非常诡异的故障,已经查了两个月,部门领导知道我当时正在看内核的书籍,于是报着试一试的心态让我加入了攻关团队。没想到,故障真被解决了!其原因竟然还真的与中断处理流程有关(☺)。不由得让人感叹:天下没有让人白读的书。

CSDN:您最初为何要着手做Linux内核源码注释这项工作?是什么让您坚持了这么久来完成这项工作?

谢宝友:兴趣是最好的老师,乔帮主曾经说过:随心所想。如果我们真正喜欢某一件事情,就追随自己内心真实的想法,实践它。在智商、情商、逆商这三者中,最重要的是逆商。一旦决定做某件事情,就认真的做下去。

至于如何坚持下来,当然,最初做Linux内核注释工作不仅仅是出于对内核的爱好,也是工作的需要。后来发现,将注释的代码和学习笔记共享给同事和朋友,是一件令人快乐的事情。用“赠人玫瑰,手有余香”来形容再合适不过了。同时,能够将个人兴趣与工作结合起来,对我们每个人,对我们所在的企业来说,都是一件值得高兴的事情。

内核学习有一个非常陡峭的学习曲线。一旦越过了某个临界点,您就能发现不一样的风景,想不坚持下去都不容易。非常庆幸的是,在学习半年后,我找到了这样的临界点,在学习和工作中,都找到了一种快乐的感觉。

这项工作主要是利用业余时间完成的。几年来,每天晚上一般会抽出两到三个小时来看书、读代码。可惜的是,在工作三年后,随后工作任务越来越重,最近三年的时间不能保证每天抽三个小时来做这件事情了。

CSDN:您是独自完成的这项工作吗?有没有小伙伴陪您一起做?

谢宝友:目前已经公布的针对Linux内核2.6.11.12的代码注释,以及今年内会继续公布的针对2.6.24版本的代码注释,主要是个人完成的。公布出来的目的,就是想更多的朋友参与进来。

这两年还翻译了《深入理解并行编程》一书,这是与鲁阳、陈渝两位兄弟一起合作完成的。

CSDN:您在开源方面还有哪些参与?

谢宝友:我是中国开源软件推进联盟专家委员会的成员。中国开源软件推进联盟是在工信部指导下,由业界著名企业合作成立的非盈利性组织。个人接触开源软件就是从进入中兴通讯操作系统团队开始的。

CSDN:您如何评价中国目前的开源环境?您认为中国开源若要取得良好发展还需要在哪些方面做出努力?

谢宝友:在中国,无论是企业还是个人,生存压力都不小,国内开源环境还算不上理想,这和国情分不开。中国开源若要取得良好发展,离不开企业和个人的努力。对个人来说,参与开源能够提升个人技能,扩大个人在业界的影响。实际上,我所了解到的国内一些年薪百万左右的大牛,正是凭借自己在开源社区的贡献才被猎头关注到的。

因此,个人认为首先需要企业和个人得到发展,减轻生存压力;其次,需要企业和个人转变开源观念,这是中国开源取得良好发展的两个重要因素。

CSDN:程序员常自我调侃为“码农”,这个身份带给人很多的痛苦和欢乐,您如何看待这一职业身份?

谢宝友:这个问题应该怎么回答呢?在刚进入这一行时,那时“码农”还不是“码农”,叫“程序员”。在成都,每个月可以拿800至2000的高薪。在北京,则可以拿到4000左右,这足足能够在知春路买一个多平方的房子了。不知道从哪一天起,“程序员”变成“码农”了,甚至听说变成“码灰”了:)

但是请听我讲一个故事。2000年的时候,我的老板曾经说:“现在的软件行业,看起来还不错。但是要不了两年,就会成为夕阳产业,甚至雪崩,和房地产一个结局!”。

业界也比较流行30岁、35岁程序员的说法,但是我也听说:目前世界上还有这样一个程序员,他做了30年软件,至今还在做磁带机!IBM的paul,就是那个维护Linux RCU(Read-Copy Update)的大牛,他也做了31年软件了。前两年他还在感叹很难找到一个完整的半天时间,舒舒服服的写点代码。

再举一个国内的例子吧。我最好的朋友,吴涛先生,那个发明易语言的家伙,他91年就在Z80上编写软件了,这个月我还和他讨论过代码方面的事情。

也许,我们可以把这些35岁的故事当成谣言!

谢宝友:会说话的Linux内核的更多相关文章

  1. linux 内核大牛-谢宝友

    http://blog.chinaunix.net/uid/25845340.html 谢宝友:毕业于四川省税务学校税收专业,现供职于中兴通讯操作系统团队,对操作系统内核有较强的兴趣.专职于操作系统内 ...

  2. 谢宝友: 手把手教你给Linux内核发patch

    本文系转载,著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 谢宝友 来源: 微信公众号 linux阅码场 (id: linuxdev) 本文简介       本文一步一 ...

  3. 谢宝友 LINUX 内核专家-----LINUX内核注释

    http://download.csdn.net/user/xiebaoyou http://blog.chinaunix.net/uid/25845340.html

  4. 宋宝华: Linux内核编程广泛使用的前向声明(Forward Declaration)

    本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者:宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 前向声明 编程定律 先强调一点:在一切可 ...

  5. Linux内核探索之路——关于方法

    转载自:http://blog.chinaunix.net/uid-20608849-id-3014502.html   Linux内核实践之路 -给那些想从Linux内核找点乐趣的人 一个不能回避的 ...

  6. linux 内核分析工具 Dtrace、SystemTap、火焰图、crash等

    << System语言详解 >> 关于 SystemTap 的书. 我们在分析各种系统异常和故障的时候,通常会用到 pstack(jstack) /pldd/ lsof/ tc ...

  7. [转]透过 Linux 内核看无锁编程

    非阻塞型同步 (Non-blocking Synchronization) 简介 如何正确有效的保护共享数据是编写并行程序必须面临的一个难题,通常的手段就是同步.同步可分为阻塞型同步(Blocking ...

  8. 如何参与Linux内核开发(转)

    本文来源于linux内核代码的Document文件夹下的Hoto文件.Chinese translated version of Documentation/HOWTO If you have any ...

  9. 如何参与linux 内核开发

    如果想评论或更新本文的内容,请直接联系原文档的维护者.如果你使用英文 交流有困难的话,也可以向中文版维护者求助.如果本翻译更新不及时或者翻 译存在问题,请联系中文版维护者.   英文版维护者: Gre ...

随机推荐

  1. STM32F4 External event -- WFE 待机模式

    The STM32F4xx are able to handle external or internal events in order to wake up the core (WFE). The ...

  2. 【Go命令教程】12. go tool pprof

    我们可以使用 go tool pprof 命令来交互式的访问概要文件的内容.命令将会分析指定的概要文件,并会根据我们的要求为我们提供高可读性的输出信息. 在 Go 语言中,我们可以通过标准库的代码包 ...

  3. stanford CS DB 课程 数据库系统实现

    http://infolab.stanford.edu/db_pages/classes.html   CS145: Introduction to Databases   CS245: Databa ...

  4. This function or variable may be unsafe Consider using xxx instead

    问题: 在Visual C++ 6.0 以下执行正常的代码放到Visual Studio 20xx系列里就跑不动了,有时候会提演示样例如以下错误: error C4996: 'fopen': This ...

  5. 查看内核页表kernel_page_tables (aarch32)

    作者 彭东林 pengdonglin137@163.com   平台 Linux-4.10.17 Qemu + vexpress-ca9     概述 通过配置内核,会在/sys/kernel/deb ...

  6. 使用FTP发布和更新Windows Azure网站

    在Windows Azure中,FTP的用户名和密码与管理门户的用户名和密码不一样,需要另外设置. →依次点击左侧的"网站",网站名称,右侧的"设置部署凭据", ...

  7. JavaScript进阶系列04,函数参数个数不确定情况下的解决方案

    本篇主要体验函数参数个数不确定情况下的一个解决方案.先来看一段使用函数作为参数进行计算的实例. var calculate = function(x, y, fn) { return fn(x, y) ...

  8. Step Detector and Step Counter Sensors on Android

    Step Detector and Step Counter Sensors on Android 时间 2014-03-31 11:56:00 Tech Droid 原文  http://techd ...

  9. Swift - transform.m34动画示例

    Swift - transform.m34动画示例 效果 源码 https://github.com/YouXianMing/Swift-Animations // // CATransform3DM ...

  10. java.lang.IllegalArgumentException: No converter found for return value of type: class XXX.XXXX

    最近项目中用到fastjson做接口数据的转换,发现报这个错误了,环境是springMVC4,看到阿里的官网说是“ 如果是使用 XML 的方式配置 Spring MVC 的话,只需在 Spring M ...