前言
如果说 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日
于杭州