解密中国人自己的操作系统DIM-SUM
如果说DIM-SUM操作系统是一个完美的操作系统,那无疑是一个谎言。如果说DIM-SUM操作系统只是大家茶余饭后的谈资,那无疑是另一个谎言。
在国产基础软件大发展的历史背景下,自研国产操作系统显得十分迫切和必要。2018年DIM-SUM第一个版本:HOT-POT操作系统诞生。业界同人亲切地将这个系统称为火锅操作系统。
实际上,DIM-SUM仅仅是一个快速原型操作系统,它可以运行在ARM 64 的QEMU模拟器中。用户可以随便找一台机器,通过QEMU模拟器将它运行起来。在这个原型操作系统中,实现了同步与互斥、调度、内存、中断、定时器、块设备、文件系统模块,并且有一个简单的命令行控制台。
“自研操作系统是一件极富挑战性也很难成功的事情,宝友同学敢于在这方面进行积极有益的尝试,值得支持和鼓励。加油,努力!”
—— 阿里巴巴经济体技术委员会主席、阿里云总裁、阿里巴巴合伙人行癫对本文作者及其在过去几年中实现的一个操作系统DIM-SUM所做的评价。
DIM-SUM实现的功能
开源软件运动,已经为实现操作系统提供了现实可能性。首先,像Linux这样的开源操作系统提供了很好的基础,这样可以从开源软件中学习到不少的技能、方法、设计思路。其次,开源软件允许分散在全球各地的开发者协同工作、集思广益。我在Linux社区中,作为ARM/ZTEARCHITECTURE的Maintainer,对此深有体会。
操作系统是IT行业的“核武器”。到目前为止,我们还处于“缺芯少魂”的状态,其中的“魂”就是操作系统。真正核心的软件,需要一代人,甚至几代人耐心地雕琢,而不能寄希望于短时间内产生立竿见影的效果。换句话说,要用“板凳一坐十年冷”的心态来做这件事。有了这样的心态,就不会觉得难。
从另一角度来说:万古长空,一朝风月。任何难事,一旦想要去做,就需要把握当下。空谈误国,实干方能兴邦。即使这件事情很难,但是不动手永远不会有任何结果。况且,我喜欢有挑战性的事情,例如:写一个可用于生产环境的,能够替代Linux的服务器操作系统!
目前,DIM-SUM已经实现了如下功能:
ARM 64 QEMU小系统,含内存|时钟初始化。
全局优先级调度模块,调度算法类似于Linux实时调度。
内存管理模块,包含页面管理、Beehive分配器。
兼容Linux Ext3的LEXT3文件系统。
块设备层实现。
集成了LWIP网络协议栈。
移植了常用的内核态C库API。
实现了一个粗糙的命令行控制台。
总之,我认为HOT-POT是DIM-SUM操作系统的良好起点。在DIM-SUM后续的开发过程中,我怀着热切的心情,期待你参与到它的开发中来。
▊ DIM-SUM欢迎什么
任何建设性、对抗性建议、稳定“优雅”的代码、BUG报告、测试、社区建设等,都是DIM-SUM欢迎的!
▊ DIM-SUM不欢迎什么
我们不欢迎空谈和只会抱怨的人。虽然我们知道DIM-SUM并不完善,你有很多指责它的理由,可以指出DIM-SUM的不足,但是请同时拿出能优化DIM-SUM、可以正常运行的代码贡献给DIM-SUM。
获得源代码
Paul E.Mckenney曾经说过:If you want to do cool things,it is necessary to invest large amounts of time learning and (especially!)practicing.
诚哉斯言!
请读者相信我这个20年传奇工匠程序员的经验:要深刻地理解像Linux操作系统中源代码这样的复杂代码,必须动手实践,对着源代码看书!
本书尽量少粘贴DIM-SUM源代码,我保证会对本书中出现的源代码进行逐行分析。这是故意为之的,目的是尽量使读者下载源代码并对照源代码阅读本书。
要获得本书配套源代码,有以下两种方式:
直接通过网页下载。
通过Git获取源代码。
▊ 通过网页下载源代码
通过网页下载源代码,是最简单、快捷的方式。下载好DIM-SUM的源代码之后,将下载的源代码包命名为dim-sum.20200616.tar.bz2。为了防止在下载过程中,由于网络原因导致文件损坏,可以验证源代码包的MD5值。在ubuntu16.04系统中,可以通过在命令行控制台上输入如下命令,来得到源代码包的MD5值:md5sum dim-sum.20200616.tar.bz2
正确的MD5值应当是:
9248ca8c21f3a4988ddba6426c4fdf60
关于DIM-SUM操作系统的最新消息,也会通过博客发布,有兴趣的读者可以看看。
通过网页下载源代码,可以满足阅读本书的要求。但是,它满足不了你如下的要求:
获得DIM-SUM操作系统最新的源代码。
查阅DIM-SUM操作系统的补丁记录。
下一步将讨论如何通过Git获得源代码,这也是我推荐的方式。
▊ 通过Git获取源代码
无论怎样强调Git在开源项目中的重要性都不过分。我甚至推荐读者找一本Git简明手册仔细阅读。
如系统已安装Git工具,就可以通过gitclone命令获取DIM-SUM操作系统的源代码。DIM-SUM源代码将托管到码云服务器。
这个命令会在当前目录中创建一个名为dim-sum的子目录,并将DIM-SUM操作系统的代码下载到本地。
当然,对于大多数读者来说,不仅仅想对照着源代码阅读本书,他们还希望:
跟踪DIM-SUM的最新版本。
查阅DIM-SUM的补丁记录,明白每一个补丁的作用,与补丁的作者联系。
给DIM-SUM提交补丁。
在DIM-SUM中添加自己的代码。
在PC上调试DIM-SUM的代码。
本文节选自博文视点新书《自研操作系统:DIM-SUM设计与实现》。
谢宝友 著
本书作者从零开始完成的DIM-SUM操作系统,具备很多现代操作系统的先进特性,比如高效的内存管理、进程管理、虚拟文件系统、LEXT3文件系统等。更加难能可贵的是,他不但公开了源代码,还把自研DIM-SUM操作系统的设计心得和体会总结成册,给国内从事基础软件开发的技术人员提供了宝贵的一手资料。
▲ 扫码获取本书详情 ▲
▶ 内容简介
本书详细阐述了自研操作系统DIM-SUM的设计与实现,提供了在ARM 64虚拟机中动手实践DIM-SUM及参与DIM-SUM开发的方法。针对DIM-SUM操作系统的同步与互斥、调度、内存、中断与定时器、块设备、文件系统模块进行了详细的分析,包括这些模块的设计思路、数据结构定义、关键API说明。最重要的是,本书对各个模块的主要函数进行了逐行解释,有助于读者深刻理解如何实现一款实用的操作系统。最后,本书还展望了接下来10年DIM-SUM操作系统的发展目标,希望最终其能发展为可以在服务器系统、桌面系统中实用的自研操作系统。
本书适合于对操作系统研发有兴趣的大学生、研究生,以及从事操作系统相关工作的一线工程师。对于Linux操作系统工程师,本书也极具实用价值。
▶ 本书特点
● 详细阐述了自研操作系统DIM-SUM的设计与实现,提供了在ARM 64虚拟机中动手实践DIM-SUM及参与DIM-SUM开发的方法。
● 针对DIM-SUM操作系统的各个模块进行了详细的分析,包括这些模块的设计思路、数据结构定义、关键API说明。
● 对各个模块的主要函数进行了逐行解释,这样有助于读者深刻理解如何实现一款实用的操作系统。
▶ 作者简介
谢宝友
曾任中兴嵌入式实时操作系统技术总工(该系统获第四届中国工业大奖);他曾获中兴通讯2010年度金银奖、阿里集团2019年度安全生产之星金奖、2018年和2019年阿里集团“双11”卓越贡献奖获得者;《深入理解并行编程》译者;Linux ZTE架构维护者;DIM-SUM自研操作系统发起者和创始人。
热文推荐