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,一经查实,立即删除!

相关文章

javascript 里Array的一些方法

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

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

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

如何在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;我们…

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

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

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

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

Loading页的实现代码

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

做算法,为什么建议你一定要学懂C++?

在工业界&#xff0c;有这样一个规律&#xff1a;“ 但凡能用其他语言的都不会用C&#xff0c;只能用C的必然用C。”但是&#xff0c;C的学习和项目开发都比较困难。一个有经验的老手也经常搞出野指针&#xff0c;内存泄露等bug&#xff0c;包括我自己在学C的时候也非常痛苦。所…

AI一键注释代码、阅读整个项目、转换编程语言。已开源!

获取github源码地址和国内url、key方式&#xff1a;在文章底部 大家好今天给大家介绍一款开源项目&#xff0c;这个项目是由渡码维护的&#xff0c;这个项目支持自己的大模型和使用openai两种方式&#xff0c;本文章介绍使用openai的方式&#xff01; 使用过程中发现两个问题…

为什么别人赚钱比自己容易?

之前的文章提到自己的一个同事&#xff0c;在一家公司干了10年&#xff0c;最近跳槽找了份5万薪水的工作&#xff0c;大家都很想听他的故事。为了方便记录&#xff0c;我叫他文哥文哥比我们一般的毕业生厉害&#xff0c;他比我大将近9岁&#xff0c;我在初中的时候他已经是一个…

Linux下遍历目录下的文件

方法1&#xff1a;http://tag.csdn.net/Article/ef431d9b-68b3-419f-9f85-1fb9279f904a.html//ListFile.cpp#include <stdio.h>#include <dirent.h>#include <sys/types.h>intmain(intargc, char*argv[]){ if (2 ! argc){ printf("Usage:ListFileSource…

15张图来了解【树】,面试再也不怕被刷了

我之前的文章C语言实现树&#xff0c;你一定看得懂树的概念什么是树&#xff1f;树属于非线性数据结构的一种&#xff0c;概念也极多&#xff0c;是由结点或顶点和边组成的且不存在着任何环的一种数据结构。没有结点的树称为空树。一棵非空的树包括一个根结点&#xff0c;还很可…

String源码图

String StringBuffer StringBuilder 均为对字符数组的操作。 实现了不同的接口&#xff0c;导致不同的覆写。 实现了同样的接口&#xff0c;适应不同的场景。 转载于:https://www.cnblogs.com/zhengwenqiang/p/8076495.html

呵,你会51单片机的精确延时吗?

文章整理自网络序对于某些对时间精度要求较高的程序&#xff0c;用 c 写延时显得有些力不从心&#xff0c;故需用到汇编程序。本人通过测试&#xff0c;总结了 51 的精确延时函数(在 c 语言中嵌入汇编)分享给大家。至于如何在 c 中嵌入汇编大家可以去网上查查&#xff0c;这方面…

--4、实验室设备管理(表)

--4、实验室设备管理create table Computer( Computer_id int Identity Primary key,--设备编号 Computer_name varchar(50) not null,--设备名称 Computer_num varchar(50) not null,--设备编号,财产号 room_id int not null,--实验室编号 --Computer_IP varchar(128), -…

C#中Invoke的用法

在用.NET Framework框架的WinForm构建GUI程序界面时&#xff0c;如果要在控件的事件响应函数中改变控件的状态&#xff0c;例如&#xff1a;某个按钮上的文本原先叫“打开”&#xff0c;单击之后按钮上的文本显示“关闭”&#xff0c;初学者往往会想当然地这么写&#xff1a; v…

嵌入式如何入门,要不要学习Python

#提问我是你的公众号读者朋友&#xff0c;江苏省在读大学生一名&#xff0c;目前是大四免研。研究生方向是嵌入式系统与应用(导师招这样的学生&#xff0c;但是本身设计这个方向不多)&#xff0c;目前还比较有时间&#xff0c;想要自己深入学习一下嵌入式方面的知识&#xff0c…

深入理解cache对写好代码至关重要

There are only two hard things in Computer Science: cache invalidation and naming things.-- Phil Karlton全文目录CACHE基础CACHE的组织TAG,INDEXVIVT,VIPT,PIPTCache别名问题CACHE一致性icache、dcache同步多CPU核cache同步CPU与设备cache同步意识到CACHE的编程perf中的…