rCore-Tutorial-Book 第三版#

欢迎来到 rCore-Tutorial-Book 第三版!

欢迎参加 2022年开源操作系统训练营!

注解

更新日志

项目简介#

这本教程旨在一步一步展示如何 从零开始Rust 语言写一个基于 RISC-V 架构的 类 Unix 内核 。值得注意的是,本项目不仅支持模拟器环境(如 Qemu/terminus 等),还支持在真实硬件平台 Kendryte K210 上运行(目前主要在 rCore-Tutorial-v3 仓库的 k210 分支上维护)。

导读#

请大家先阅读 第零章 ,对于项目的开发背景和操作系统的概念有一个整体把控。

在正式进行实验之前,请先按照第零章章末的 实验环境配置 中的说明完成环境配置,再从第一章开始阅读正文。

项目协作#

  • 修改和构建本项目 介绍了如何基于 Sphinx 框架配置文档开发环境,之后可以本地构建并渲染 html 或其他格式的文档;

  • reStructuredText 基本语法 给出了目前编写文档才用的 ReStructuredText 标记语言的一些基础语法及用例;

  • 项目的源代码仓库 && 文档仓库

  • 时间仓促,本项目还有很多不完善之处,欢迎大家积极在每一个章节的评论区留言,或者提交 Issues 或 Pull Requests,让我们一起努力让这本书变得更好!

  • 欢迎大家加入项目交流 QQ 群,群号:735045051

本项目与其他系列项目的联系#

随着 rcore-os 开源社区的不断发展,目前已经有诸多基于 Rust 语言的操作系统项目,这里介绍一下这些项目之间的区别和联系,让同学们对它们能有一个整体了解并避免混淆。

rcore-os 开源社区大致上可以分为两类项目:即探索使用 Rust 语言构建 OS 的主干项目,以及面向初学者的从零开始写 OS 项目。它们都面向教学用途,但前一类项目参与的开发者更多、更为复杂、功能也更为完善,也会用到更多新的技术;而后一类项目则作为教程项目,尽可能保持简单易懂,目的为向初学者演示如何从头开始写一个 OS 。

主干项目按照时间顺序有这些:最早的是用 Rust 语言实现 linux syscall 的 rCore ,这也是 rcore-os 开源社区的第一个项目。接着,紧跟 Rust 异步编程的浪潮,诞生了使用 Rust 语言重写 Google Fuchsia 操作系统的 Zircon 内核的 zCore 项目,其中利用了大量 Rust 异步原语实现了超时取消等机制。最新的主干项目则是探索 OS 模块化架构的 arceos

教程项目则分布在 rcore-os 和 LearningOS 两个开源社区中。最早的第一版教程是 rcore_step_by_step ,第二版教程是 rCore_tutorial ,第三版教程是 rCore-Tutorial ,最新的教程(暂定 v3.6 版本)就是本项目 rCore-Tutorial-v3 仍在持续更新中。

教程项目均以 rCore 为前缀,是因为它们都是主干项目 rCore 的简化版。 “rCore” 这个词在不同的语境中指代的具体项目也不一样:如果在讨论教程项目的语境,比如以 xv6 和 ucore 以及 ChCore 等项目类比的时候,那么往往指的是最新的教程项目;相反如果讨论的是大规模项目的话,应该指代 rCore 或者其他主干项目。由于教程项目是由 rCore 简化来的,所以“大rCore”指的是 rCore 主干项目,相对的 “小rCore/rCore教程”则指的是最新版的教程项目。

项目进度#

  • 2020-11-03:环境搭建完成,开始着手编写文档。

  • 2020-11-13:第一章完成。

  • 2020-11-27:第二章完成。

  • 2020-12-20:前七章代码完成。

  • 2021-01-10:第三章完成。

  • 2021-01-18:加入第零章。

  • 2021-01-30:第四章完成。

  • 2021-02-16:第五章完成。

  • 2021-02-20:第六章完成。

  • 2021-03-06:第七章完成。到这里为止第一版初稿就已经完成了。

  • 2021-10-20:第八章代码于前段时间完成。开始更新前面章节文档及完成第八章文档。

  • 2021-11-20:更新1~9章,添加第八章(同步互斥),原第八章(外设)改为第九章。

  • 2022-01-02:第一章文档更新完成。

  • 2022-01-05:第二章文档更新完成。

  • 2022-01-06:第三章文档更新完成。

  • 2022-01-07:第四章文档更新完成。

  • 2022-01-09:第五章文档更新完成。