推荐序1
中国必须发展安全、可控的操作系统,不然会被卡脖子。
操作系统是管理计算机与软件资源的计算机程序,同时也是计算机系统的内核与基石。随着数字经济的发展,随着5G、人工智能、大数据、云计算等新一代信息技术的蓬勃兴起,保障网络安全成为各个国家的重要任务,自主研发操作系统也就成了建设网络强国势在必行的任务。自主可控是实现网络安全的前提和必要条件,面对日益凸显的网络安全挑战,中国在今后一段时期里,必须加快推进国产自主可控替代计划,构建安全可控的信息技术体系,而操作系统正是信息技术体系的核心。
目前,全世界智能终端操作系统被三家外国跨国公司(苹果、谷歌和微软)所垄断,它们也是世界上最大的三家IT企业,这并非巧合。在这个领域,我国被人家卡了脖子,只有大力发展自己的操作系统,才能尽快摆脱受制于人的局面。
中国目前还有大量的操作系统人才缺口。
无论国内国外,厂商开发操作系统都需要投入足够多的人力和巨大的资金,而国内的厂商在资金和人力上都不具备强大的实力,甚至有个别厂商还处于亏损的状态。不妨引用几组数据:Windows XP 有4000万行代码,Windows 7有5000万行代码,3.6版的Linux 内核有1590万行代码,Linux的发行版Debian有着多达6500万行代码。而且,这些代码还都是经过软件厂商反复精简以后的结果。微软开发Windows Vista操作系统时用掉的研发经费在200亿美元以上,开发Windows XP时集中了5000多名的程序员来编写代码。
实践经验表明,发展操作系统必须有庞大的软件人才队伍的支撑,但国内至今严重缺乏能够开发操作系统的软件人才,特别是一流的人才。事实上,中国有着相当丰富的应用软件开发人才,可以给微软、苹果、谷歌等科技巨头开发出很好的应用软件,可偏偏缺乏了能开发操作系统等基础软件的人才。因此,如何吸引中国广大应用软件人才,迅速提高他们的技能,从开发应用软件转向开发操作系统等基础软件,这对于发展国产操作系统具有重要意义。我们相信,在这方面本书可以发挥很好的作用。
操作系统是一个整体概念,一个成型的系统很庞大,初学者一次搞懂很难,从一个简单的系统入手是好的选择。
与其他软件不同,一个发布版的操作系统非常庞大,仅仅是操作系统的内核就有上千万行代码,随着版本的更新,代码量还在不断增加,从这样的源代码中体会操作系统的整体设计思想无疑是困难的,许多对操作系统有兴趣的学生,面对这个庞大的代码量时退却了。对于初学者而言,从头进行一个小而全的操作系统设计是更好的选择,容易上手,也更容易理解庞杂代码下的设计核心。本书采取了从易到难、从小到大、循序渐进、融会贯通的途径,特别适合操作系统的新手阅读,可以这样说,本书为有志于从事基础软件攻关的读者打开了一扇通向操作系统殿堂的大门。
对操作系统发展的期望。
目前,基于国产操作系统和芯片的自主创新计算机体系已经逐步缩小了与Wintel体系(即Windows操作系统和Intel架构CPU所构成的体系)之间的差距,国产操作系统已经从“不可用”发展到“可用”,并正向“好用”方向发展。在今后一个相当长的时期里,操作系统的国产化替代将成为我国网信领域的新常态。希望有更多的读者对操作系统产生兴趣,加入自主操作系统的研发中去,为祖国的操作系统事业做出贡献!
中国工程院院士 倪光南
推荐序2
未来是云的时代,也是大数据和人工智能的时代!
芯片和操作系统共同构成了云时代IT基础设施的基石。从操作系统的角度来说,其重要性在于:
操作系统的稳定性是IT基础设施的生命线。
操作系统可以充分利用硬件的性能,有利于企业在竞争中处于优势地位。
数十年来,Linux操作系统已经在产业界取得了广泛的应用,应用生态也得到了蓬勃发展,目前正处于方兴未艾的阶段。在接下来的10年里,Linux可能仍然会是服务器系统、嵌入式系统,甚至是物联网系统中的主流操作系统。
但是,产业界也存在其他一些与Linux竞争的操作系统。例如苹果的iOS系统、谷歌正在研发的Fuchsia操作系统,以及其他国内厂商研发的操作系统。
这些操作系统可能会对产业界10年之后的竞争态势产生一定的影响,因此引起产业界、学术界越来越多的关注。
操作系统的研发工作是一项复杂的系统工程,这也导致一个结果:很难看到个人在实现操作系统,特别是实现可用于生产系统的、实用的服务器操作系统方面有所作为。我们很难想象哪个人会有胆量去尝试,更难想象哪个人会付诸行动。
当我在OS2ATC 2019大会上,听到本书作者谢宝友演讲“做中国的Linux,做中国的Linus”的时候,感到非常吃惊。竟然真的有人愿意在服务器操作系统方面尝试迈出第一步!不管结果如何,我们首先应该为本书作者的勇气点赞。当然,我们也期望作者能够知行合一,继续发展DIM-SUM操作系统,并最终迈向可用于生产环境的服务器操作系统。
我从书稿看到:虽然DIM-SUM还不是一个真正可用于生产环境的服务器操作系统,而且很多设计思路和代码都源于Linux,但是正因为作者在深刻理解Linux的设计与实现后,才能游刃有余地对其进行重构,并且在重构的过程中糅合自己原创的设计要素。真正在产业界一线的工程师更能清楚地意识到,这是一个很有挑战的工作。
随着本书的出版,作者也会提供可以动手实践的DIM-SUM操作系统源代码,以及实践环境的搭建方法。本书中也对DIM-SUM操作系统源代码进行了逐行注释。这有利于读者亲自动手实践,也有利于业界同仁参与到DIM-SUM操作系统的开发工作中来。
DIM-SUM操作系统已经具备了中断、调度、内存管理、文件系统、I/O、网络等操作系统的基本要素,并且具备与Linux应用生态兼容的能力。因此,它不仅可供读者学习操作系统的设计与实现,也具备发展成为实用服务器操作系统的潜在能力。推荐对操作系统有兴趣的在校学生、一线工程师阅读本书。
“路漫漫其修远兮”,希望10年后,DIM-SUM操作系统能够在生产系统中发挥作用,也希望更多的人加入到DIM-SUM的开发中来。
西安邮电大学 陈莉君
如果说DIM-SUM操作系统是一个完美的操作系统,那无疑是一个谎言。如果说DIM-SUM操作系统只是大家茶余饭后的谈资,那无疑是另一个谎言。
30年前,计算机逐渐进入公众的视野。笔者在使用DOS操作系统命令的时候,就对操作系统非常好奇,想搞清楚系统如何启动并响应输入的命令。于是在同学的帮助下,笔者将部分DOS操作系统文件进行了反汇编,通过阅读汇编代码的方式了解到一些操作系统的知识。
那时很难找到硬件相关的资料,也没有合适的操作系统设计方面的书。因此,笔者对操作系统的探索只能浅尝辄止。
但是,这并没有引起笔者对国内操作系统现状的担忧,因为笔者曾看到一则报道,从20世纪80年代中期开始,国内就有专家团队在系统性地研发国产操作系统、编译器这样的基础软件。我们只不过是落后一些时日,迟早会有自研操作系统问世的。
在20世纪90年代,Linux和BSD操作系统慢慢发展成为可用于生产的稳定操作系统。由于这些操作系统是开源的,所以在全球范围内得到了极大的普及,这也间接压缩了自研操作系统的生存空间。
另外,从20世纪80年代开始,自研的国产操作系统最终都失败了,国内工程技术人员和研究者纷纷开始基于Linux开展他们的工作。
进入21世纪以后,Linux在国内发展得如火如荼。虽然“核高基”项目仍然坚持在操作系统领域投入数十亿元人民币,但是从笔者亲身参与的操作系统项目来看,这些项目均以Linux为基础,严格来说,并不是从头开始自研的操作系统。
笔者对这样的现状深感忧心,在2010年就预测Android系统可能会走向封闭,或者限制国内厂商的使用。可惜业界同人对此不以为然,认为国内可以基于Android系统持续使用。
从目前的现状来看,谷歌公司已经开始限制国内厂商使用Android系统了。这进一步加深了笔者的担忧:如果某一天,我们不能免费使用基于Linux的这些开源操作系统,我们是否有替代操作系统可用?
正是这样的忧患意识,促使笔者潜心研究Linux开源操作系统。从2008年进入中兴通讯操作系统团队开始,在随后的6年时间内,笔者利用业余时间认真阅读了《深入理解Linux内核》、《深入理解Linux网络内幕》、《深入理解Linux虚拟内存管理》,以及其他一些与存储、网络相关的内核图书,并做了2200页、88万字的学习笔记,同时翻译并出版了《深入理解并行编程》一书。
在潜心研究Linux之时,笔者也尝试编写自研操作系统DIM-SUM,并在2018年完成了第一个版本:HOT-POT操作系统。业界同人亲切地将这个系统称为火锅操作系统。笔者是四川人,在成都生活了将近30年,对火锅有一种亲切感,因此将第一个版本命名为HOT-POT。
实际上,DIM-SUM仅仅是一个快速原型操作系统,它可以运行在ARM 64 的QEMU模拟器中。读者可以随便找一台机器,通过QEMU模拟器将它运行起来。在这个原型操作系统中,实现了同步与互斥、调度、内存、中断、定时器、块设备、文件系统模块,并且有一个简单的命令行控制台。虽然它的很多思想是借鉴Linux的,你甚至可以毫不留情地批评这个操作系统大量抄袭了Linux,但是笔者可以自豪地声称:DIM-SUM操作系统进行了重大的代码重构,同时也有不少原创的元素包含在里面。在一线工作的工匠程序员们应该会满含热泪地认同这项工作的艰辛。
本书详细阐述了自研操作系统DIM-SUM的设计与实现,提供了在ARM 64虚拟机中动手实践DIM-SUM及参与DIM-SUM开发的方法。本书也针对DIM-SUM操作系统的各个模块进行了详细的分析,包括这些模块的设计思路、数据结构定义、关键API说明。本书最大的特点是对各个模块的主要函数进行了逐行解释,这样有助于读者深刻理解如何实现一款实用的操作系统。
最后,本书还展望了接下来10年DIM-SUM操作系统的发展目标,希望最终将DIM-SUM发展成可以在服务器系统、桌面系统中实用的自研操作系统。
笔者不能妄言10年之后DIM-SUM会发展成什么样,但是希望借本书的出版,督促自己不忘初心,沿着自研操作系统的道路坚持走下去。
最后,笔者要表达的一个很重要的观点是:DIM-SUM不属于某一个公司,当然它更不是个人用来谋私的工具。
DIM-SUM是属于所有操作系统爱好者的!
谢宝友
2020年4月25日
于杭州