.. rCore-Tutorial-Book-v3 documentation master file, created by
sphinx-quickstart on Thu Oct 29 22:25:54 2020.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
rCore-Tutorial-Book 第三版
==================================================
.. toctree::
:maxdepth: 2
:caption: Part1 - Just do it!
:hidden:
chapter0/index
chapter1/index
chapter2/index
chapter3/index
chapter4/index
chapter5/index
chapter6/index
chapter7/index
chapter8/index
chapter9/index
.. toctree::
:maxdepth: 2
:caption: Part2 - Do it better!
:hidden:
.. toctree::
:maxdepth: 2
:caption: 附录
:hidden:
final-lab
appendix-a/index
appendix-b/index
appendix-c/index
appendix-d/index
appendix-e/index
appendix-f/index
terminology
.. toctree::
:maxdepth: 2
:caption: 开发注记
:hidden:
setup-sphinx
rest-example
log
欢迎来到 rCore-Tutorial-Book 第三版!
欢迎参加 `2022年开源操作系统训练营! `_
.. note::
:doc:`/log`
项目简介
---------------------
这本教程旨在一步一步展示如何 **从零开始** 用 **Rust** 语言写一个基于 **RISC-V** 架构的 **类 Unix 内核** 。值得注意的是,本项目不仅支持模拟器环境(如 Qemu/terminus 等),还支持在真实硬件平台 Kendryte K210 上运行(目前主要在 rCore-Tutorial-v3 仓库的 `k210 `_ 分支上维护)。
导读
---------------------
请大家先阅读 :ref:`第零章 ` ,对于项目的开发背景和操作系统的概念有一个整体把控。
在正式进行实验之前,请先按照第零章章末的 :doc:`/chapter0/5setup-devel-env` 中的说明完成环境配置,再从第一章开始阅读正文。
.. chyyuu 如果已经对 RISC-V 架构、Rust 语言和内核的知识有较多了解,第零章章末的 :doc:`/chapter0/6hardware` 提供了我们采用的真实硬件平台 Kendryte K210 的一些信息。
项目协作
----------------------
- :doc:`/setup-sphinx` 介绍了如何基于 Sphinx 框架配置文档开发环境,之后可以本地构建并渲染 html 或其他格式的文档;
- :doc:`/rest-example` 给出了目前编写文档才用的 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:第五章文档更新完成。