1024对话内核大神谢宝友

我看了CSDN的采访,感觉比较官方,不知道是不是编辑的原因把一些内容给隐藏了,所以我还是想完整的内容放出来给大家看看,这些问题,可能是很多后辈程序员非常关心的。

今天是1024节,这个数字对于写在电脑前写代码的我们是意义重大的,至于谁发明了这个节日我不知道,但是我知道,这个数字的含义很特别。

所以在次条就推荐了一个内核大会,我建议喜欢技术的同学都去看看,看看前辈们对于内核的理解,以及未来的发展方向。

就这些,祝大家今天开心,bug无涯……


问:

分享一下您最近主要在忙的一些事情?

答:

目前,我就职于阿里集团技术风险部,主要职责是负责阿里生产环境服务器稳定性,特别是基础软件,例如Linux操作系统、中间件的稳定性。同时,也会协助业务方处理一些性能调优的工作。在稳定性工作中,沉淀了一款操作系统内核诊断工具:diagnose-tools,这款工具已经在今年云栖大会正式发布,并开源到:https://github.com/alibaba/diagnose-tools。如果时间允许的话,我也会和同事/网友共同合作编写一本书来介绍这个工具。

在工作之余,我也在过去一年中,利用休息时间完成了《自研操作系统:DIM-SUM设计与实现》一书的编写,该书已经于今年7月正式出版。同时,也和网友一起翻译了《嵌入式Linux设备驱动开发》,目前已经完成初稿,预计明年初可以正式出版。

问:

您在大学时期所学的税收专业和操作系统,可谓是两个完全平行的领域,在什么样的契机下,您开始了操作系统研究之路?

答:

这完全是一个意外。

1992年,进入四川省税务学校以后,我从图书馆借阅了不少数学、物理、化学、文学方面的书籍。最终发现自己还是更喜欢理科一些,那时也开始关注计算机学科。

后来,发现自己有点喜欢上了同桌那位漂亮的女生,心里也明白她其实也有那么一点喜欢我。不过在90年代,考虑上税务学校就意味着进入税务局工作,其难度和考上清华大学是一样的。工作后,两个人必然会在不同的税务局工作,很难走到一起。终于有一天,我们约定:必须有一个人从税务系统离职。当然,这个苦差事就只能留给我了:-)

再后来,我慢慢将税务专业学习变成了副业,将重心放到计算机学科了。工作中一直想在计算机方面做一点有挑战性的事情,因此进入了操作系统领域。

故事的结局还是比较圆满的:两个人三十年来,虽有风雨,但是更多的是彩虹。

问:

操作系统这条路,对您而言,已经走了二十年的时间,在过去 20 年间,操作系统领域整体发生了怎样的变化?在您看来,目前国产操作系统行至何处?

答:

在过去20年内,操作系统领域有不少变化,但也有一些根本的东西未曾变化。

其变化主要在于:

1、linux异军突起

2、Android成为手机操作系统的领先者

3、物联网操作系统热度提升

但是,实事求是的说,有一个根本的不变之处在于:我国仍然处于操作系统研发领域的落后状态。40年来,不少仁人志土投入到操作系统领域,政府和企业也投入不菲。现状则可以简单的总结为:道路是曲折的,前途则未见光明。

这是由于操作系统研发难度决定的。与工业制造不同,操作系统完全不能靠增加人手的方法,通过大干快上的方式,寄希望于突然蹦出一个完美的操作系统。而是要靠长期的积累,以一种“板凳一坐十年冷”的心态潜心研究才能出成果。

当然,除了美国外,确实也没有其他某个国家研发出真正自研的操作系统。真可谓:操作系统难,难于上青天!

问:

为什么会想到要自研一款操作系统?DIM-SUM 操作系统旨在帮助业界或开发者解决什么样的痛点难题?

答:

最初,我只是想在计算机领域找一件有挑战性的事情。20    多年前,大家都说中国人不可能搞得出操作系统,因此觉得这件事情还有那么一点挑战性,因此也就想研究一下这方面的东西。

现在看来,国内确实也需要自研操作系统。这个领域的痛点有:

1、Linux操作系统领域人才匮乏。作为在Linux操作系统稳定性有十多年一线工作经验的老兵,我深知业界的痛点。遇到Linux的疑难故障,一般是到开源社区高版本内核中搜索补丁,看看社区是否已经解决。如果遇到开源社区也没有解决的故障,那么一般是考虑规避措施。真正能够将Linux源代码分析透彻,并能给出完美解决方案的人才,实属凤毛麟角。从另一个角度来看,国内还不能深入到Linux内核社区,独立研发Linux核心模块。假如某一天,Linux社区的维护人员退休了,我们是否还能游刃有余的将Linux维护好。这绝非危言耸听,而是一个现实紧迫性的问题。Linux社区的领袖人物也在呼吁重视人才断层的问题。

2、Linux操作系统用于核心关键领域的安全性问题。在大数据时代,任何普通个人的信息隐私都不再只是个体问题,这会影响到整个社会的安全。同时,系统中存在的CVE安全漏洞也不少。我曾经在工作中遇到一个安全漏洞,这个漏洞存在于Linux网络协议栈中,在多线程中访问同一个Socket,并且Socket启用了IP选项的时候可能触发。最令人担心的是,这样的安全漏洞在Linux操作系统中存在了20年,竟然没有被全世界的研发人员和安全专家发现!

3、Linux操作系统从开放走向封闭的可能性是存在的。10年前,我就认为Android会走向封闭,或者说限制我们的使用。这在当时被认为是无稽之谈,然而今天的现实是:由于国内在Android上面投入过多的资源,已经形成了强大的市场态势。而国内著名的手机厂商已经因此受到市场限制。同样的,10年以后,Linux也有可能走向封闭。按照今天的做法,10年后的情况不容乐观。

因此,从未雨绸缪的角度来说,我们需要开始搞真正自研的操作系统,而不能搞伪创新、边缘优化、单点突破。从本质上来说,这些伪创新、边缘优化、单点突破是一种自欺欺人的做法。

问:

DIM-SUM 操作系统将主要覆盖哪些应用领域或场景?

答:

这个问题实际上已经在《自研操作系统:DIM-SUM设计与实现》作者序以及正文中有所描述。

概括的说,DIM-SUM操作系统希望实现一款类似于Linux的操作系统。我在去年OS2ATC大会上也曾经做过一次《做中国的Linux,做中国的Linus》的演讲。也就是说,DIM-SUM可能适用的领域包括:服务器操作系统、个人电脑/桌面操作系统、嵌入式操作系统(如工业控制)。

问:

开源对于 DIM-SUM 操作系统的发展起到了什么样的作用?

答:

非常感谢开源软件运动,特别是感谢Linux开源社区。

以练习毛笔书法为例。真正的书家都明白一个简单的道理:要练习好毛笔字,首先是练习一些握笔姿势、基本笔画方面的基本功,然后是用薄纸蒙在原作上面摹写,其次是照着原作临写,最后才是体会原作的整体布局、形意、结构、笔势,并加以创新,自成一派。

可以毫不夸张的说,开源软件运动给我们提供了很好的临摹范本,可以大大降低自研操作系统的难度,提升自研操作系统的稳定性和性能。

问:

DIM-SUM 操作系统目前进度如何?针对其下一步的研发或落地发展,有着什么样的愿景或规划?

答:

由于忙于工作和出版书籍,我今年很少为DIM-SUM开发新功能。有十来个网友提交了一些边缘补丁。

下个月完成《嵌入式Linux设备驱动开发》的审稿工作后,我会抽出业余时间开发一些新功能,重点是支持用户态应用程序。当然,这个事情应该不会太顺利,毕竟在房价重负之下,大家还是需要养家糊口。

我不太希望将DIM-SUM做成某一家大公司私有的操作系统,也不希望将它作为个人谋私的工具。

希望它能为社会真正做出一些贡献。最理想的方式,是成立一个独立的开源基金会,得到政府/业界的支持,集中10位国内顶尖高手,花10年时间进行研发。预估在这样的模式下,每年的投入不会超过1000万元,10年总投资不超过1亿元人民币。在这方面有一些具体的想法,也在一些闭门会议中有一些阐述,以后我会专文描述这些想法。

退一步讲,即使没有独立的开源基金会,我也会利用业余时间开发这个操作系统。

几乎可以确定的说,不会加入某个公司来发展这个操作系统。

问:

据悉,您此前在内核代码注释中耕耘多年,这为自研 DIM-SUM 操作系统带来了哪些帮助?

答:

还是以练习毛笔书法来做比喻:以前对内核代码的注释工作,更象是第一步工作,也就是练习一些握笔姿势、基本笔画方面的基本功。

顺便也自嘲一下,目前的DIM-SUM仅仅是对Linux操作系统的临摹,离真正成熟的自研操作系统还有很长的距离。不过古语说:千里之行,积于跬步。总有一天,我们能行于千里之外!

问:

2018年DIM-SUM第一个版本:HOT-POT操作系统已诞生,在此过程中,令您印象最为深刻的挑战是什么?又是如何攻克的?

答:

这个版本还很不成熟,我个人对此并不满意。然而,即使是这样一个不太成熟的版本,也会遇到挑战。

最大的挑战来自于文件系统,包括lext3文件系统、虚拟文件系统、设备文件系统、内存文件系统、块设备子模块、块设备驱动。这也是Linux遇到的挑战。记得linus曾经说过,大牛们在linux中实现文件系统的时候,也有希望放弃的时刻。

得益于对linux内核的详细分析和注释,我在开发DIM-SUM的时候,想要退缩的心情应该没有linus那么强烈,毕竟前辈们已经给我们打下了很好的基础,也给了我们成功的信心。

问:

在你技术成长过程中,是否有着对你影响较大的某位人、某些书、某些网站/文章或其他,为什么?

答:

在20多年的职业生涯中,我遇到两位技术方面的牛人,也是工作中的合作伙伴:

1、易语言的创始人吴涛。他也被评为“影响中国软件开发的20人”之一。

2、阿里巴巴传奇程序员,阿里合伙人多隆大神。他的技术领悟力和敏感度非常高。

-- 对我影响最大的两本书是:

1、陈莉君老师翻译的《深入理解Linux内核》。这本书在Linux内核入门阶段对我影响很大。

2、Paul E. Mckenney的《Is Parallel Programming Hard, And, If So, What Can You Do About It?》,这本书已经由我和鲁阳翻译为《深入理解并行编程》。这本书很难,但是对研发操作系统至关重要。也许,很难找到10个真正读懂这本书的人呢?

问:

对于想要跨行到 IT 的从业者,基于操作系统入门方面,可否分享一下您的经验?

答:

6年前,在CSDN的专访(https://www.csdn.net/article/2014-04-08/2819178-Interview-about-linux-kernel-expert-Xiebaoyou)中,我也谈到这个问题。现在想来,当年的回答仍然是有效的。推荐的几本书仍然值得阅读,即使这些书的内核版本老一点也没有关系。如果说需要补充一点东西的话,我觉得有这两点感悟:

1、阅读的时候,心无旁骛很重要。很多著名的将领都有做放牛娃的经历,这很容易进入一种无聊的状态,当然也很容易进入一种物我两忘的专注状态。这也有点象禅宗所说的入定状态。据说乔布斯很喜欢这样的状态,它能使人理解到其他人所不能理解到的东西,使难题迎刃而解,也许还能使人领悟到生命的价值,改变自己的人生目标。

2、聪明人下笨功夫,只有傻瓜才耍小聪明。在操作系统技术学习方面,尤其是这样。

问:

您在一线写代码已多年,面向程序员界的“35 岁危机”问题, 您怎么看?对于一线的程序员而言,有人说,要紧随技术的潮流,实时对自身技能不断更迭,才能不落后;也有人说,打下坚固的技术基础才是王道,面对日新月异且层出不穷的前沿技术,你对时下的开发者有着什么样的建议?

答:

保持不断学习的能力,就不会面临“35岁危机”。

6年前的专访中,也谈到了这个问题,那个时候我已经超过35岁了,没有感受到什么危机,因此在专访中说“也许,我们可以把这些35岁的故事当成谣言!”

以我自己为例吧,35岁的时候收入还不是特别高,实际上35岁以后不但没有遇到危机,收入反而上涨得很厉害。也许35岁的谣言是大公司HR说出来吓大家的。当然,这也并非坏事,我想HR的目的是为了保持组织的活力,避免那些职场老油条上班摸鱼。对于那些持续学习的员工,保持激情的员工,不偷懒的员工,哪个HR会舍得对你动手呢?

我已经超过40岁了,在收入迅猛增长的同时,也有公司以翻倍的收入来挖一挖,我也比较的有惰性,不愿意为2倍收入而跳槽呢:-)

大家说,35岁危机这个事情,是不是一个谣言?该不该转它500次?

问:

发展国产操作系统,目前最为严峻的挑战或亟需解决的问题是什么?如果要推动中国开源操作系统或者开源生态发展的话,您最希望我们大家一起,推动什么样的共识和行动?

答:

最严峻的挑战莫过于:

1、能研发国产操作系统的人才很少。这里的人才不是指Linux开发人员,而是真正能够设计操作系统,实现操作系统核心模块开发的人才。

2、自研操作系统投入大,失败风险高。不论是研究机构还是企业,都不太容易下决心去做这样的事情。

3、有免费开源的Linux可用,缺少自研操作系统的动力。

我最希望推动的共识和行动是:

集中力量,研发真正自研的操作系统。在Linux被限制的情况下,仍然有替代方案。

问:

最后,我们来个接龙,这次 1024 程序员节,有许多操作系统的老朋友共赴长沙,你最想问哪位老朋友什么问题?

答:

由于备战双十一的原因,很遗憾不能现场参加1024程序员节。希望向陈老师问个问题:能做到退而不休吗?

#推荐阅读:

    专辑|Linux文章汇总

    专辑|程序人生

    专辑|C语言

嵌入式Linux

微信扫描二维码,关注我的公众号 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

转义字符的应用

转义字符的应用 案列1:很多转义字符的作用是专门针对于打印机的,比如\b1、使用“Y”和“-”;2、打印Y,光标在Y后3、退格,这时光标落在Y字符处,由于是打印机,Y还是留了下来,就打出“”。案例2&am…

javascript 里Array的一些方法

1. join()方法:join()方法的用途是连接字符串值,join()方法只有一个参数,即数组项之间使用的字符串如:varaColors ["red","green","blue"];alert(aCloors.join("-"));//output "red…

链表_有序链表(给数组排序-应用)

//链结点 public class Link {public long dData;public Link next;public Link(long dd) {dDatadd; }public void displayLink() {System.out.print(dData" ");}} public class SortedList {private Link first;public SortedList(Link[] linkArr) {firstnull;fo…

很多人都不清楚HEX文件格式

Intel HEX文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。在Intel HEX文件中,每一行包含一个HEX记录。这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。Intel HEX文件通常用于传输将被存于ROM或者EPROM中的程序和数据。大多数EPR…

小学生算术

</pre><pre> 小学生算术 描述 很多小学生在学习加法时&#xff0c;发现“进位”特别容易出错。你的任务是计算两个三位数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据&#xff0c;直到输入两个0结束。 输入 输入两个正整数m和n.(m,n都是三位…

如何在asp.net中实现listbox item值上下移动?(转)

全部.net为&#xff1a;1 <form id"myform"runat"server">2 <div>3 <asp:ObjectDataSource ID"ObjectDataSource1"runat"server"OldValuesParameterFormatString"original_{0}"4 …

洛谷1345 [Usaco5.4]奶牛的电信

题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系&#xff0c;于是她们建立了一个奶牛电脑网络&#xff0c;以便互相交流。这些机器用如下的方式发送电邮&#xff1a;如果存在一个由c台电脑组成的序列a1,a2,...,a(c)&#xff0c;且a1与a2相连&#xff0c;a2与a3相连&#xff0c;…

有意思,USB资料分享

前几天&#xff0c;有个同学在微信问我 「发哥&#xff0c;能不能给我分享一些USB的资料吗&#xff1f;」-- 然后就有了今天的文章。我对USB印象很深&#xff0c;源于两个事情第一件事情是&#xff0c;我有一个大学同学&#xff0c;他的名字里面有一个「发」字&#xff0c;我们…

在已经排好序的线性表中插入一个数,还是升序

在已经排好序的线性表中插入一个数&#xff0c;还是升序#include<stdio.h> #define Maxsize 100 typedef struct s {int elem[Maxsize];int last; }Seqlist; int Locate(Seqlist l,int e)//查找 {int i0;while(i<l.last&&l.elem[i]<e)i;if(il.last)return …

java学习笔记IO之字节输入输出流

IO字节输入输出流 OutputStream:字节输出流 该抽象类是所有字节输出流的超类&#xff1b; 定义了一些共性的成员方法&#xff1a; 1.写入一个字节 void write(int b);//b表示字节 2.写入字节数组 void write(byte[] b);//写入一个字节数组 3.写入字节数组的一部分 void write(…

firefox 和 ie 事件处理的细节,研究,再研究-----书写同时兼容ie和ff的事件处理代码...

在ie中&#xff0c;事件对象是作为一个全局变量来保存和维护的。 所有的浏览器事件,不管是用户触发 的&#xff0c;还是其他事件&#xff0c; 都会更新window.event 对象。 所以在代码中&#xff0c;只要轻松调用 window.event 就可以轻松获取 事件对象&#xff0c; 再 event.s…

不知道的,还以为是555牌香烟

你认为历史上最成功的芯片是什么&#xff1f;就是出货很多很多那种。Intel的酷睿系列&#xff1f;NO&#xff01;AMD&#xff1f;错&#xff01;别猜了&#xff0c;原来是它&#xff01;这就是电工的神器——555定时器&#xff0c;从诞生到现在&#xff0c;销量过百亿&#xff…

异形卵

【问题描述】 我们探索宇宙是想了解浩瀚星空的奥秘&#xff0c;我们却很少意识到宇宙深处藏匿的危险&#xff0c;他们无时无刻不紧盯着我们的地球。如果外星人拜访我们&#xff0c;结果可能与哥伦布当年踏足美洲大陆不会有什么两样&#xff0c;这是历史&#xff0c;也是现实。…

C语言书籍推荐

C语言书籍推荐 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、基础 1、《C语言入门很简单》 《零起点学通C语言&#xff08;多媒体范例教学&#xff09;》 《C语言从入门到精通》 2、《C程序设计语言 第2版新版》 《C程序设计语言&#xff08;第2版…

SQLServer技巧

-2.批量更新&#xff1a; UPDATE p_ProductTab SET PC4p.pc4 from (select productid030301102000,pc4423523 union all select productid030301102001,pc4sdgser) as pWHERE p_ProductTab.productidp.productid -1.保留2位小数 Convert(decimal(18,2),字段) 长度为18位&…

Linux操作寄存器前为什么要ioremap

1. 原因这里只考虑有 MMU 的芯片&#xff0c;Linux 为了实现进程虚拟地址空间&#xff0c;在启用 MMU 后&#xff0c;在内核中操作的都是虚拟地址&#xff0c;内核访问不到物理地址。如果在驱动里直接访问物理地址&#xff0c;等于访问了一个非法地址&#xff0c;会导致内核崩溃…

Loading页的实现代码

用了几种Loading页的代码&#xff0c;还是算这个好用了。真的佩服牛人们的思想。有的说用DIV来实现遮盖后面的东西&#xff0c;当FORM加载完后&#xff0c;执行CLOSE()d的JS函数。我试验了几次&#xff0c;效果不是那么好。也主要是由于我吧东西都放在我本地&#xff0c;感觉不…

Fibonacci数列

问题描述Fibonacci数列的递推公式为&#xff1a;FnFn-1Fn-2&#xff0c;其中F1F21。 当n比较大时&#xff0c;Fn也非常大&#xff0c;现在我们想知道&#xff0c;Fn除以10007的余数是多少。 输入格式输入包含一个整数n。输出格式输出一行&#xff0c;包含一个整数&#xff0c;表…

C语言——关键字

C语言——关键字 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 【谨记&#xff1a;尽量不要用printf函数&#xff0c;要去看变量的值&#xff0c;内存的值。】 auto&#xff0c;int&#xff0c;double&#xff0c;long&#xff0c;char&#xff0c;fl…