Asterinas:Rust 编写的操作系统内核
操作系统(OS)的未来属于 Rust—— 这是一种现代系统编程语言(PL),它能同时实现安全性、效率与生产力。
目前的问题不在于操作系统内核是否应该从 C 语言过渡到 Rust 语言,
而在于我们如何实现这一转变。
Linux 采用的是一种渐进式路径。虽然 “Rust for Linux” 项目已成功将 Rust 作为官方的第二种编程语言进行集成,但这种方法面临着内在的矛盾。作为庞大 C 代码库中的新成员,Rust 常常必须在安全性、效率、清晰度和易用性方面做出妥协,以保持与遗留结构的兼容性。而且,虽然新的 Rust 代码可以改进其所涉及的部分,但它无法追溯性地消除数十年现有 C 代码中的漏洞。
Asterinas 则采用全新构建的方法。通过用 Rust 从零开始构建一个与 Linux 兼容的通用操作系统内核,我们摆脱了遗留 C 代码库的限制 —— 包括其接口、设计和假设,并且无需为过时的平台保留历史兼容性。语言 —— 包括编程语言 —— 塑造了我们的思维方式。通过现代编程语言的视角,Asterinas 重新思考并使操作系统内核的构建现代化:
现代架构
Asterinas 开创了 框架内核 架构,将单体内核的性能与受微内核启发的隔离特性相结合。不安全的 Rust 代码被限制在一个名为 OSTD 的小型、可审计的框架中,而内核的其余部分则用安全的 Rust 编写,有意将内存安全的可信计算基(TCB)保持在最小规模。
现代设计
Asterinas 借鉴了 Linux 来之不易的工程经验,但在设计需要时也不惧怕偏离。例如,Asterinas 通过一种名为 CortenMM 的新颖方案提高了其内存管理子系统的 CPU 可扩展性。
现代代码
Asterinas 的代码库优先考虑安全性、清晰度和可维护性。积极追求性能,但从不以牺牲安全保障为代价。可读性被视为一项特性,而非奢侈品,并且代码库的结构设计旨在避免隐藏的跨模块耦合。
现代工具
Asterinas 提供了一个专门构建的工具包 OSDK,以方便构建、运行和测试 Rust 内核或内核组件。在 OSTD 的支持下,OSDK 使内核开发如同编写标准 Rust 应用程序一样轻松流畅,消除了操作系统工程传统上的阻碍。
Asterinas 的目标是成为一款生产级、内存安全的 Linux 替代品,其性能与 Linux 相当 —— 在某些场景下甚至超越 Linux。该项目已积极开发了四年,支持 230 多个 Linux 系统调用,并推出了一个实验性发行版 Asterinas NixOS。
到 2026 年,我们的首要任务是推动项目走向成熟,以准备好投入生产,特别针对 x86 - 64 架构上的标准虚拟机和机密虚拟机。展望未来,我们将继续扩展功能,并强化系统,以满足关键任务部署在数据中心、自动驾驶汽车和具身人工智能领域的需求。
https://github.com/asterinas/asterinas