操作系统

操作系统范畴很大,本章节中精选的内容聚焦在用Rust实现的操作系统以及用Rust写操作系统的教程。

目录

系统描述
redoxUnix风格的微内核OS
tock嵌入式操作系统
theseus独特设计的OS
writing os in rust使用Rust开发简单的操作系统
rust-raspberrypi-OS-tutorialsRust嵌入式系统开发教程
rcore-os清华大学提供的rcore操作系统教程
edu-os亚琛工业大学操作系统课程的配套项目

redox

redox 是一个 Unix 风格的微内核操作系统,使用 Rust 实现。redox 的目标是安全、快速、免费、可用,它在内核设计上借鉴了很多优秀的内核,例如:SeL4, MINIX, Plan 9BSD

redox 不仅仅是一个内核,它还是一个功能齐全的操作系统,提供了操作系统该有的功能,例如:内存分配器、文件系统、显示管理、核心工具等等。你可以大概认为它是一个 GNUBSD 生态,但是是通过一门现代化、内存安全的语言实现的。

不过据我仔细观察,redox目前的开发进度不是很活跃,不知道发生了什么,未来若有新的发现会在这里进行更新 - Sunface

redox1 screenshot redox2 screenshot

tock

tock 是一个嵌入式操作系统,设计用于在低内存和低功耗的微控制器上运行多个并发的、相互不信任的应用程序,例如它可在 Cortex-MRISC-V 平台上运行。

Tock 使用两个核心机制保护操作系统中不同组件的安全运行:

  • 内核和设备驱动全部使用Rust编写,提供了很好安全性的同时,还将内核和设备进行了隔离
  • 使用了内存保护单元技术,让应用之间、应用和内核之间实现了安全隔离

具体可通过这本书了解: The Tock Book.

tock screenshot

Theseus

Theseus 是从零开始构建的操作系统,完全使用Rust进行开发。它使用了新的操作系统结构、更好的状态管理,以及利用语言内设计原则将操作系统的职责(如资源管理)转移到编译器中。

该OS目前尚处于早期阶段,但是看上去作者很有信心未来可以落地,如果想要了解,可以通过官方提供的在线书籍进行学习。

Writing an OS in Rust

Writing an OS in Rust 是非常有名的博客系列,专门讲解如何使用Rust来写一个简单的操作系统,配套源码在这里,目前已经发布了第二版。

以下是async/await的目录截图: writing-os screenshot

rust-raspberrypi-OS-tutorials

rust-raspberrypi-OS-tutorials 教大家如何用Rust开发一个嵌入式操作系统,可以运行在树莓派上。这个教程讲得很细,号称手把手教学,而且是从零实现,因此很值得学习。

rrot screenshot rrot1 screenshot

rcore-os

rcore-os 是由清华大学开发的操作系统,用 Rus t实现, 与 linux 相兼容,主要目的目前还是用于教学,因为还有相关的配套教程,非常值得学习。目前支持的功能不完全列表如下:linux 兼容的 syscall 接口、网络协议栈、简单的文件系统、信号系统、异步IO、内核模块化。

以下是在树莓派上运行的图: rcore screenshot

edu-os

edu-osUnix 风格的操作系统,用于教学目的,它是亚琛工业大学(RWTH Aachen University)操作系统课程的配套大项目,但是我并没有找到对应的课程资料,根据作者的描述,上面部分的Writing an OS in Rust对他有很大的启发。

eduos screenshot