Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Asterinas OSTD

Confucious remarked, “I could follow whatever my heart desired without transgressing the law.”

子曰: “从心所欲,不逾矩。”

借助 Asterinas OSTD(操作系统标准库),您无需钻研 unsafe Rust 编程的艰深技艺,也不必承担误操作的风险。 您将能随心所欲地开发,并确信您的内核绝不会因未定义行为而崩溃或被攻击,即便今天是您作为 Rust 程序员的第 1 天。

APIs

Asterinas OSTD 为安全内核开发提供了强大而坚实的基础,它提供的高层安全 Rust API 是

  1. 操作系统开发所必需的,并且
  2. 依赖于不安全 Rust 的使用。

这些 API 大多属于以下几类:

  • 内存管理(例如,分配和访问物理内存页)
  • 任务管理(例如,内核任务间的上下文切换)
  • 用户空间(例如,操作和进入用户空间)
  • 中断处理(例如,注册中断处理程序)
  • 定时器管理(例如:注册定时器处理程序)
  • 驱动程序支持(例如:执行 DMA 和 MMIO 操作)
  • 启动支持(例如:从引导加载程序获取信息)
  • 同步机制(例如:加锁与休眠)

要了解这些 API 如何发挥作用,请参阅 用安全 Rust 编写的 100 行内核示例

OSTD 的 API 已获得详尽文档支持。您可通过访问 docs.rs 获取完整的 API 文档。

四项要求已满足

在设计和实现OSTD的过程中,我们已积极应对挑战,致力于满足framekernel 架构所要求的上述四项标准

OSTD 的表现力在 Asterinas 内核中得到了充分体现,所有系统调用、文件系统、网络协议和设备驱动程序(例如 Virtio 驱动程序)均已借助 OSTD 用安全的 Rust 语言实现。

采用极简主义理念,OSTD的代码库规模较小。其核心是ostd crate,目前包含约一万行代码——这一数字甚至比许多微内核的代码量还要少。随着OSTD的发展,其代码库会不断扩展,但与构建在它之上的操作系统服务相比,扩展速度会相对较慢。

OSTD 的高效性可通过其 API 性能指标及 Asterinas 内核系统调用的表现来衡量。目前尚未发现 Rust 语言或框架内核架构中存在任何可能限制内核性能的内在约束。

与前三项要求不同,可靠性难以直接量化或证明。虽然形式化验证是黄金标准,但其需要大量资源与时间投入,并非当前的首要任务。 作为一种更务实的方法,我们将在可靠性分析中解释高层设计为何合理,并依靠社区众多参与者的共同审视来发现实现中可能存在的缺陷。