# 操作系统

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

## 目录

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

### redox

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

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

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

### tock

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

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

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

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

### Theseus

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

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

### Writing an OS in Rust

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

以下是`async/await`的目录截图：

### rust-raspberrypi-OS-tutorials

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

### rcore-os

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

- 内核实现
- 配套教程

以下是在树莓派上运行的图：

### edu-os

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