前言
从 2021 年开始,我一直从事体系架构模拟和动态二进制翻译工作,由于工作需要,我经常要调试各种操作系统,比如 Linux、VxWork、FreeRTOS 、RT-Thread、SylixOS、AcoreOS、ReWorks 等等,这让我对操作系统的原理和业务应用场景有了一个宏观的认识。随着嵌入式系统的复杂化和规模化(多系统的同步与交互),对于数字嵌入式系统的性能也提出了更高的要求。
在 2024 年上半年,我主导了一个(用于全系统模拟的)高性能 JIT 引擎的前期研发工作,在项目实施期间,也许是对于模拟器性能的敏感,让我对硬件虚拟化技术产生了很大的兴趣,我了解到,这属于操作系统内核的一部分(Type-2)。
前段时间,我学习虚拟化技术时,在幽兰本上用 C 语言实现了一个 200 行左右代码量的KVM 轻量虚拟机,并分享在了兰舍群聊,郭克老师看到以后,向我推荐了由清华大学陈渝教授和向勇老师发起的「开源操作系统训练营」。
PS:与陈渝教授的一点渊源:
2002 年冬天,一群操作系统爱好者在网络上讨论技术,想要在脱离硬件限制的情况下,学习和研究操作系统的原理。于是,他们提出用软件模拟硬件的想法,这其中就包括 SkyEye 的发起者——清华大学陈渝教授。
当时,国际上已经有类似的项目,如 uCLinux 组织开发的 ARMulator 模拟器,可以模拟 AT91 的开发板,支持 UClinux 在上面运行。基于 ARMulator 的设计框架和经验,陈渝教授等人在 2003 年正式发起了 SkyEye 开源项目,被国内外个人爱好者和高校大量使用。
我在 2022 年起,发起和组织了 SkyEye 开源项目的重新维护,目前开源在 Gitee 平台。
本篇文章,用于记录训练营期间的学习情况和心得体会,按照日期的倒序排版。因工作调整导致时间不再充裕,暂时只跟进到二阶段。
第二阶段
进展(2024-10-18)
- 完成二阶段实验 3。
进展(2024-10-14)
- 编写二阶段实验 2 的报告。
进展(2024-10-13)
- 完成二阶段实验 2 的编码任务,通过 CI/CD 测试;
进展(2024-10-10)
- 学习 rCore-Camp-Guide-2024A · 第四章:地址空间;
- 来西安旅游,条件有限,在笔记本电脑上又重新搭了一遍实验环境,顺便解决了之前的一些小问题;
PS:之前实现过 ARM 全系列的非安全的几种 MMU 翻译格式的模拟,所以对 RISCV RV39 的 MMU 翻译格式理解起来还比较轻松。不过这部分内容比较多,需要再耐心看两天,再做题目。操作系统一旦开启 MMU 以后,地址发生虚实隔离,调试起来会困难一些,前期充分理解 rCore 的内存管理策略,对后面的实验有很大帮助。
进展(2024-10-09)
- 参加训练营课程;
- 完成第二阶段实验 1 。
PS: 完成第一题,Rust 方面用到了模板、结构体、关联函数、match 的知识,操作系统需要知道基本的汇编以及权限变化产生的影响,还有理解系统调用。第一阶段提前完成了,所以开始二阶段学习。
第一阶段
进展(2024-10-08)
- 用 Rust 编写了一个最小 JIT,学习 FFI 编程,trait;
- 学习 Rust 生命周期;
- 拉取第二阶段的仓库,基于 docker 搭建环境镜像,成功运行 ch1 分支。
PS:和做编译器的朋友交流了学习 Rust 的心得,得出一个很好的结论:”学习 Rust 最好的方式,就是把自己熟悉的业务用 Rust 重写一遍。“这给了我很大的启发,是不是也应该用 Rust 实现一个学习用途的 JIT ?和其他朋友简单沟通了一下,有了一个初步思路,或许可以做一个 x86 => RISC-V or ARM => RISC-V 的 JIT,丰富 RISC-V 的生态。
进展(2024-10-07)
- 参加 RustSBI 线上讲座,我提了一个关于 RustSBI 对虚拟化方面支持情况的问题。
进展(2024-10-04)
- 学习 Rust 的 struct 、enum、Option、match;
- 学习 Rust 的 package、crate、module;
- 学习 Rust 的 use。
进展(2024-10-02)
- 参加训练营课程「Rust 语法入门」;
- 学习《Rust 圣经》中关于基础语法部分。
进展(2024-09-30)
- 复习 Rust 所有权;
- 搭建 Rust risc-v 交叉编译环境;
- 参加训练营课程「环境配置 + Rustlings 入门」。
PS:开营前一周,速通了一遍 rustling,主要是通过解决编译报错来快速推进,算是对 Rust 这门语言,有了一个初印象。接下来三周,反复咀嚼 Rust 的主要知识点,夯实基础。
训练营开营
2024 秋冬季开源操作系统训练营启动会 (2024-09-29),介绍了训练营的背景、目标、课程内容和规模。训练营得到全程实验室支持,覆盖 520 多所高校和240 多家公司,课程包括 Rust 基础语法、答疑和算法,操作系统实战项目,旨在培养对开源操作系统感兴趣的人才。
下面记录会议中我比较感兴趣的部分:
开幕致辞(陈渝)
-
开幕与介绍:陈渝欢迎所有参与者,并介绍了此次训练营的重要嘉宾,包括来自北京大学的陈安群老师、全程实验室的杨波主任、vivo的杨春总经理、开放基金会教育培训部的王延广部长等。
-
背景与发展:陈渝提到该训练营始于 2020 年,由他与香港的一位老师共同发起,旨在激发更多学生对操作系统的兴趣。训练营联合了鹏程实验室,推广操作系统的发展,并引入了一页编程、组件化操作系统等新概念。
-
参与规模:此次训练营吸引了超过 3000 名参与者,覆盖了 524 所高校,不仅限于学生,还包括工程师。
-
课程内容:训练营将涵盖 Rust 编程、类似清华大学计算机系本科生的 OS 课程实验设计、组件化操作系统的设计与实现理念,以及其他如微内核虚拟化等实用项目。
-
操作系统的重要性与挑战:陈渝强调了操作系统作为连接硬件与应用的关键层的重要性,特别是面对数百万行代码的现代操作系统(如Linux),需要解决实时性能、安全性等问题。此外,他还提到操作系统需要适应新兴领域如智能汽车、机器人等的需求。
-
未来趋势:他指出,随着AI的快速发展,操作系统必须作出相应的调整以支持新的应用场景,并提高安全性。同时,国内在新能源汽车领域的发展也需要在操作系统层面进行更多的研究与创新。
最后,陈渝教授表示期待参与者们能够通过此次训练营获得知识、建立友谊并提升个人能力,并预告了接下来将有来自不同领域的专家进行更深入的分享。
vivo 自研操作系统在 Rust 上的探索(杨春)
-
开场致谢:杨春向参会的师生表达了敬意,并感谢陈渝教授的邀请,让他有机会参加这次开源操作系统的训练营活动。
-
vivo 在操作系统上的投入:杨春提到 vivo 在操作系统研发上已经有几年的积累,并在去年的开发者大会上首次公开了自家研发的操作系统,该系统聚焦于智慧、流畅和安全三大核心特性。
-
选择 Rust 的原因:vivo 在开发自家操作系统时选择了使用 Rust 语言,主要是看重 Rust 在内存安全方面的优势,如所有权模型和生命周期管理等特性,这些对于构建安全的操作系统至关重要。
-
与学术界的合作:杨春讲述了 vivo 与陈渝教授团队的联系过程,双方虽然分别位于工业界和学术界,但在使用 Rust 语言探索下一代操作系统方面有着共同的目标,因此双方一拍即合。
-
行业人才现状:他认为目前行业内掌握 Rust 语言的人才仍然稀缺,特别是在操作系统领域中使用 Rust 的规模还不大。因此,vivo 希望通过与行业内的交流来验证自己在技术路线上的选择是否正确。
-
对未来合作的期望:杨春表达了对开源操作系统训练营活动的支持,认为这类活动有助于推动 Rust 生态的成熟和发展,并希望能吸引更多的人才参与到 Rust 及操作系统领域中来。
-
结束语:最后,杨春预祝本次活动圆满成功,并感谢大家的聆听。
总结,杨春的发言主要围绕 vivo 在操作系统研发上的努力,特别是采用 Rust 语言的决策及其在安全方面的优势,并强调了与学术界合作的重要性以及对未来人才发展的期望。
介绍 ArceOS 发展计划(石磊)
-
项目背景:该项目旨在解决现有操作系统存在的问题和挑战,提出了安全、高并发、实时性、模块化、生态兼容和定制能力的研发目标,以此为基础构建新型的组件化操作系统内核。
-
项目特点:
- 多模式支持:除了支持传统的单片式内核外,还支持虚拟化基础设施。
- 组件化设计:通过组件仓库和组合方式来构建不同模式的内核。
- 基于 Rust 语言:利用 Rust 语言在内存安全和并发安全方面的优势,并探索基于 Rust 开发内核的模式。
- 当前进展:经过两三年的工作,已经建立了基础的组件仓库,涵盖了不同层次的功能组件,可以用于构建各种模式的内核。目前的工作集中在以下几个方向:
- 核心组件仓库:支持构造多种模式的内核。
- 扩展宏内核:与 Linux API 兼容,可运行 Linux 上的原生应用。
- 虚拟化:支持典型类型的虚拟化基础设施。
- 未来发展方向:下一步的重点是继续发展宏内核、虚拟化技术、以及一个统一的基于异步协程的框架和驱动程序。计划在第四阶段带领参与者进行相关的项目实践。
- 发行版开发:基于上述研究,将进一步发展适用于不同应用场景的发行版。
- 更多信息:有兴趣了解更多细节的参与者可以查看讨论区中的过往工作记录。
陈渝教授补充说明,这个项目最初是由清华大学的博士生在其博士课题期间发起的,现在已有许多师生参与其中进行扩展工作。该项目的特点是可以组合成具有不同架构和特性的定制化配置,这被认为是未来操作系统的发展方向之一。
关于会议更多内容,可访问:2024年秋冬季开源操作系统训练营开营仪式视频回放