当前位置: 首页 > 编程日记 > 正文

对话谢宝友:搞真正自研的国产操作系统,而不是伪创新


作者 | 郑丽媛

责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

从国外操作系统的长期垄断到中国自主研发操作系统数十年的起落浮沉,技术自主创新独立已成为国产基础软件的主要突破口。近几年间,随着物联网时代的到来,以 Linux 为主要架构的操作系统乘开源东风,迎来了“爆发”期。

然而在国际以科技为基础的竞争愈发激烈的当下,开源的 Android 已受到一定影响,而下一步,正如同 DIM-SUM 操作系统创始人谢宝友所担忧的,「如果某一天,我们不能免费使用基于 Linux 的这些开源操作系统,我们是否有替代操作系统可用?」

带着种种思考,CSDN 「人物志」栏目与 DIM-SUM 操作系统创始人、《自研操作系统:DIM-SUM设计与实现》作者谢宝友进行了独家对话,探寻类似于 Linux 的 DIM-SUM 操作系统自研之路,论“做中国的 Linux,做中国的 Linus”的机与遇。

重要观点速览:

  • 操作系统的研发要靠长期的积累,以一种“板凳一坐十年冷”的心态潜心研究才能出成果。

  • 从未雨绸缪的角度来说,我们需要开始搞真正自研的操作系统,而不能自欺欺人地搞伪创新、边缘优化、单点突破。

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

  • 我不太希望将 DIM-SUM 做成某一家大公司的私有操作系统,也不希望将它作为个人谋私的工具。我希望它能为社会真正做出一些贡献。

  • 目前的 DIM-SUM 仅仅是对 Linux 操作系统的临摹,离真正成熟的自研操作系统还有很长的距离。

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

  • 我最希望推动的共识和行动是:集中力量,研发真正自研的操作系统。在 Linux 被限制的情况下,仍然有替代方案。

始于兴趣,久于爱情

CSDN:你最近主要在忙哪些事情?

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

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

CSDN:你曾是税收专业出身,为何会走上操作系统研发之路?

谢宝友这完全是一个意外。

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

在这期间,我与同是税务专业的爱人相识相知。不过,考虑到工作后更为长远的发展,最终我选择了离开税务系统,并将重心逐渐转移到计算机学科。经过一段时间的工作,我一直想要在计算机方面做一些有挑战性的事情,因此进入了操作系统领域。

故事的结局还是圆满的:我与爱人三十年来,虽有风雨,但是更多的是彩虹。

操作系统难,难于上青天

CSDN:操作系统这条路,对你而言,已经走了二十年的时间,在过去 20 年间,操作系统领域整体发生了怎样的变化?

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

  • Linux 异军突起;

  • Android 成为手机操作系统的领先者;

  • 物联网操作系统热度提升。

但是,实事求是地说,有一个根本的不变之处在于:我国仍然处于操作系统研发领域的早期。40 年来,不少仁人志土投入到操作系统领域,但现状可以简单的总结为:道路是曲折的,前途光明但任重而道远。

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

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

CSDN:为什么会想到要自研一款操作系统?

谢宝友:最初,我只是想在计算机领域找一件有挑战性的事情。20 多年前,大家都说中国人不可能做出操作系统,我觉得这富有挑战性,因此开始了研究。

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

  1. Linux 操作系统领域人才匮乏。真正能够将 Linux 源代码分析透彻,并能就 Linux 的疑难故障给出完美解决方案的人才,实属凤毛麟角。从另一个角度来看,国内还不能深入到 Linux 内核社区,独立研发 Linux 核心模块。

  2. Linux 操作系统用于核心关键领域的安全性问题。在大数据时代,任何普通个人的信息隐私都不再只是个体问题,这会影响到整个社会的安全。同时,系统中存在的 CVE 安全漏洞也不少。有些 CVE 安全漏洞在 Linux 中存在了 20 年,竟然没有被全球开发者和安全专家发现。

  3. Linux 操作系统从开放走向封闭的可能性是存在的。10年前,我认为 Android 会走向封闭的言论在当时被认为是无稽之谈,而现在却噩梦成真。同样,10 年以后,Linux 也有可能走向封闭。因此,从未雨绸缪的角度来说,我们需要开始搞真正自研的操作系统,而不能自欺欺人地搞伪创新、边缘优化、单点突破。

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

谢宝友:基于以上,我认为最严峻的挑战莫过于以下三点:

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

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

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

我最希望推动的共识和行动是:集中力量,研发真正自研的操作系统。在某一天 Linux 被限制的情况下,仍然有替代方案。

DIM-SUM 操作系统不会私有,将属于社会

CSDN:DIM-SUM 是什么样的操作系统?

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

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

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

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

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

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

谢宝友:由于忙于工作和出版书籍,我今年很少为 DIM-SUM 开发新功能,只有十来个网友提交了一些边缘补丁。下一步,我会抽出业余时间开发一些新功能,重点是支持用户态应用程序。

我不太希望将 DIM-SUM 做成某一家大公司的私有操作系统,也不希望将它作为个人谋私的工具,我希望它能为社会真正做出一些贡献。所以,我几乎可以确定的说,我不会加入某个公司来发展这个操作系统。

我认为最理想的方式,是成立一个独立的开源基金会,得到政府/业界的支持,集中 10 位国内顶尖高手,花 10 年时间进行研发。预估在这样的模式下,每年的投入不会超过 1000 万元,10 年总投资不超过 1 亿元人民币。关于这方面的具体想法,我以后会专文描述。退一步讲,即使没有独立的开源基金会,我也会利用业余时间开发这个操作系统。

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

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

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

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

谢宝友:这个版本很不成熟,我个人对此并不满意。然而,即使是这样一个不太成熟的版本,也遇到了不少挑战。

最大的挑战来自于文件系统,包括 lext3 文件系统、虚拟文件系统、设备文件系统、内存文件系统、块设备子模块、块设备驱动。这也是 Linux 曾遇到的挑战。

记得 Linus 曾经说过,技术大牛们在 Linux 中实现文件系统时,也有想过放弃的时刻。不过,得益于对 Linux 内核的详细分析和注释,我在开发 DIM-SUM 时,想要退缩的心情应该没有 Linus 那么强烈,毕竟前辈们已经给我们打下了很好的基础,也给了我们成功的信心。

操作系统的技术升级之路

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

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

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

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

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

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

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

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

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

1、阅读的时候,心无旁骛很重要。

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

CSDN:你在一线写代码已多年,面向程序员界的“35 岁危机”问题, 你怎么看?

谢宝友保持不断学习的能力,就不会面临“35岁危机”。也许,我们可以把这些 35 岁的故事当成谣言!

以我自己为例,35 岁的时候收入还不是特别高,而 35 岁之后,不但没有遇到危机,收入反而上涨了许多。也许 35 岁危机只是大公司 HR 放出的谣言。

当然,这也并非坏事,我想 HR 是想借此保持组织的活力,避免一些员工思想怠惰。对于那些持续学习的员工,保持激情的员工,不偷懒的员工,哪个 HR 会舍得对你动手呢?

相关阅读:

  • “国产操作系统最大难题在于解决「生产关系」” | 人物志

  • 对话 HybridOS 操作系统掌门人魏永明:“我们的目标是取代物联网中的安卓” | 人物志

  • 对话 RT-Thread 创始人熊谱翔:国产操作系统厚积而薄发 | 人物志

‍‍‍‍10月23-25日,“长沙 · 中国 1024 程序员节”将盛大举行。程序员节活动以开源为主议题,包括 2 场岳麓尖峰对话;2020 开源技术英雄会;10+场热门技术分论坛/峰会;创意集市;体验感超强的科技文化嘉年华、最 HIGH 时刻的开源之夜。内容聚焦开源技术及生态建设、操作系统及硬件创新、开源社区及商业化发展等多个重要话题。

更多精彩推荐
  • DeepFashion实现服装检测搭配

  • 韩辉:国产操作系统的最大难题在于解决“生产关系”

  • 直播电商都用上 AI 实时翻译了!歪果仁也能听懂李佳琦

  • 区块链赋能供应链金融|应用优势与四类常见模式

  • 蓝色巨人IBM全力奔赴的混合云之旅能顺利吗?

相关文章:

ASP.NET 学习历程

[注意我不推荐高级技术的书,因为你如果是个高手了就可以自己选择甄别书了,此文只对初学者,因为他们此时没有辨别好快的能力,本人几乎买尽所有的.NET书,有好有坏。] 你所看的第一本书对你以后影响最重要!&a…

http头部消息中的cache-control解释

网页的缓存是由HTTP消息头中的“Cache-control”来控制的,max-age:(只接受 Age 值小于 max-age 值,并且没有过期的对象)max-stale:(可以接受过去的对象,但是过期时间必须小于 max-st…

iframe自动调整高度能在IE5里实现吗

偶已经理解到style"height:expression(main.document.body.scrollHeight)"只对第一次显示的内嵌网页有效,如果里面的内容更新必须把主页刷新一遍才能自动适应新的高度,那么惟一的解决办法就是点击链接后整个页面都刷新一次,如何写成…

SQL Server-流程控制 5,Goto 语句

ylbtech-SQL Server:SQL Server-流程控制 5,Goto 语句SQL Server 流程控制中的 Goto 语句。 1,Goto 语句1 --2 -- 1, Goto语句3 -- Desc:Goto语句可以让程序跳转到一个指定的标签处并执行其后的代码。Goto语句和标签可以在程序4 -- 、批处理和语句块中的任意位置使用…

MLPerf基准测试再发榜,浪潮AI服务器刷新18项纪录

近日,全球倍受瞩目的权威AI基准测试MLPerf公布今年的推理测试榜单,其中浪潮AI服务器NF5488A5一举创造18项性能纪录,在数据中心AI推理性能上遥遥领先其他厂商产品。 MLPerf是当前全球最具影响力的AI计算基准评测组织,由图灵奖得主大…

Web充斥着存在漏洞的过期JavaScript库

虽然使用第三方软件库通常会降低开发的时间,但同时也会增加网站暴露出的攻击表面,对此我们应有充分的认识。因此需要保持第三方软件库的最新版本依赖,以便从安全更新中获益。即便如此,一份近期研究表明,在Alexa排名前7…

asp.net实现C#代码加亮显示

以下是代码片段:StringWriter textBuffer new StringWriter();Match match Regex.Match(HTMLStr,"/",RegexOptions.IgnoreCase | RegexOptions.Compiled);if(matchnull){Response.Write(HTMLStr);return;} string codeType match.Groups["codeType…

应用在大规模推荐系统,Facebook提出组合embedding方法 | KDD 2020

来源 | 深度传送门(ID: deep_deliver)Facebook团队考虑embedding的存储瓶颈,提出了一种新颖的方法,通过利用类别集合的互补分区为每个类别生成唯一的embedding向量,无需明确定义,从而以端到端的方式减小emb…

Android大图裁剪解决办法

某些功能需要拍照或者从相册选择照片后经过裁剪再上传的时候, cropp_w_picpath 可以调用手机自带的com.android.camera.action.CROP这个Intent进行裁剪 通过设置输出大小可以得到图片的大小: intent.putExtra(“outputX”, outputX); intent.putExtra(“…

day03-字符编码与转换

1、编码常识 在python 2中默认编码是 ASCII,而在python 3中默认编码是 unicodeunicode 分为utf-32 (占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),所以utf-16 是最常用的unicode版本,但是在文件里存的还是utf-8,…

Asp.Net下的DataGrid的多层表头

先看下表: 业务员地 区 北京上海深圳张三100200300实际上Asp.Net下的DataGrid只不过是一个HtmlTable,只不过在HtmlTable的基础上添加了很多属性、方法,纳入ViewState机制,来生成、控制它;有了这一点认识,事…

Selenium的延迟等待

2019独角兽企业重金招聘Python工程师标准>>> Selenium的延迟等待分为 显式等待(Explicit Wait) & 隐式等待(Implicit Wait). 1.显式等待 显式等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到…

瞧瞧,这样的代码才叫Pythonic

来源 | Python编程时光(ID: Cool-Python)Python由于语言的简洁性,让我们以人类思考的方式来写代码,新手更容易上手,老鸟更爱不释手。要写出 Pythonic(优雅的、地道的、整洁的)代码,还…

linux基础(一)安装系统Centos6.5

安装有常用有:远程网络安装、U盘安装、光盘安装三种方式,以下为光盘进行安装1.出现引导界面,选择安装或升级现有系统,选择第一个安装系统。Install or upgrade an existing system 安装或升级现有的系统 install system with basi…

使用 .NET 对事件进行编程

作者:Ted Pattison  您可能已经对事件进行编程若干年了,但是迁移到 .NET Framework 仍然需要您重新检查事件的内部工作,因为 .NET Framework 中的事件位于委托的顶层。 对委托的了解越多,对事件进行编程时所具有的驾驭能力越强。 开始使用公…

tomcat项目自动发布脚本.脚本运行效果

./update -------------------------------------------------------------- | 确定特定用户执行,否则退出 | -------------------------------------------------------------- Yes,we are the user of testtomcat --------------------------------------------------…

11.11大促来袭,京东如何保障云安全?

2020年4月,国家发改委首次就“新基建”概念作出正式解释。云计算被纳入信息基础设施中的新技术基础设施。据IDC统计,2019年全球云计算基础设施规模超过传统IT基础设施,占全球IT基础设施的50%以上。云计算发展势如破笋,云计算也成为…

分享Kali Linux 2017年第11周镜像文件

分享Kali Linux 2017年第11周镜像文件 Kali?Linux官方于3月12日发布2017年的第11周镜像。这次维持了11个镜像文件的规模。默认的Gnome桌面的4个镜像,E17、KDE、LXDE、MATE、XFCE桌面的各一个,手机版的包括ARMEL和ARMHF。有最近要安装Kali?Linux系统的&…

实现无刷新DropDownList联动效果

在做一个文章添加功能时,想在选择大类后,自动将其所属二级小类显示出来,使用DropDownList的SelectedIndexChanged事件可以很容易实现,但每次选择后页面总要刷新一次,让人感觉很不爽。为实现DropDownList无刷新二级联动…

偷天换日,逼真的天空置换算法

责编 | 晋兆雨来源 | Jack Cui头图 | CSDN付费下载于视觉中国前言天空,是摄像中的一个关键元素。游戏的天空,我们可以随意调节,可以是晴空万里,也可以是风雨交加。现实的天空,我们也可以使用算法进行调整,算…

office2003/2007/2010版本降低宏安全设置方法

如果在公司内部环境中,因为各种系统对Office环境的要求,需要通过降低Office宏安全性的方法来提高系统访问效率的话,可以参考一下方法设置。 Office2003所需的设置如下: 1、打开Office2003,选择"工具"&#x…

【WEB API项目实战干货系列】- API登录与身份验证(三)

上一篇: 【WEB API项目实战干货系列】- 接口文档与在线测试(二) 这篇我们主要来介绍我们如何在API项目中完成API的登录及身份认证. 所以这篇会分为两部分, 登录API, API身份验证. 这一篇的主要原理是: API会提供一个单独的登录API, 通过用户名&#xff0…

ASP.NET中的页面指示标识

页面指示标识 的功能是用来确定在处理aspx文件的时候&#xff0c;需要系统做一些什么特殊的设定&#xff1f;它的语法是&#xff1a;<% directive attributevalue %> 比如&#xff1a;<%import namespace"System.Data"%> 注意属性之间需要空格&#…

⑨③-不能浪费拥有的年轻资本

⑨③-不能浪费拥有的年轻资本 老男孩语录⑨③-不能浪费拥有年轻资本 万两黄金易得&#xff0c;年轻资本难求&#xff01; 同学们&#xff0c;我们不能浪费比万两黄金还贵重的年轻资本&#xff0c;因为&#xff0c;转眼间你就不再拥有这个资本了&#xff0c; 趁着年轻&#xff0…

滴滴AI语音团队获国际顶尖智能对话系统竞赛世界第一

出品 | AI科技大本营头图 | CSDN付费下载于视觉中国近日&#xff0c;在国际顶尖人工智能竞赛第九届对话系统技术挑战赛&#xff08;DSTC9&#xff09;中&#xff0c;滴滴语音和NLP技术团队参与端到端多领域面向任务型对话系统任务荣获世界第一&#xff0c;充分彰显滴滴公司在自…

RHEL5+PXE+DHCP+Apache+Kickstart安装RHCE5.1 i386实验室环境

此博文出自&#xff1a;http://andrewyu.blog.51cto.com/1604432/1100567 使用RHEL5PXEDHCPApacheKickstart安装RHCE5.1 i386实验室环境&#xff0c;根据文章内容也可批量安装了红帽RHEL系统或CentOS5.x&#xff0c;现阶段&#xff0c;由于需要大规模应用CentOS5.8 x86_64系统用…

用ASP.Net(C#)连接Oracle数据库的方法

今天看了一下asp.net连接oracle数据库的方法&#xff0c;得到了如下代码。这段代码打开了MyTable表&#xff0c;并把操作员的名字列出。字段类型是OracleString。读取的时候用的是字段编号&#xff0c;我不知道怎么使用字段名来读取某字段的内容。下面是代码&#xff1a;//首先…

NLP任务中的文本预处理步骤、工具和示例

作者 | Viet Hoang Tran Duong来源 | DeepHub IMBA头图 | CSDN付费下载于视觉中国数据是新的石油&#xff0c;文本是我们需要更深入钻探的油井。文本数据无处不在&#xff0c;在实际使用之前&#xff0c;我们必须对其进行预处理&#xff0c;以使其适合我们的需求。对于数据也是…

github设置添加SSH

https 和 SSH 的区别&#xff1a; 1、前者可以随意克隆github上的项目&#xff0c;而不管是谁的&#xff1b;而后者则是你必须是你要克隆的项目的拥有者或管理员&#xff0c;且需要先添加 SSH key &#xff0c;否则无法克隆。 2、https url 在push的时候是需要验证用户名和密码…

在asp.net中使用客户端脚本

我们常常在asp.net中需要使用到客户端脚本&#xff0c;在asp.net中使用客户端脚本很容易&#xff0c;使用到Page的RegisterClientScriptBlock方法就行了。下面是我写的一段C#代码,用来打开新窗口&#xff1a; using System; using System.Web.UI; namespace MyBill { …