zCore Toturial 的目标是通过step by step
地建立一个简化的zCore kernel的过程来学习和掌握zCore Kernel的核心概念和对应实现,从而为进一步分析掌握zCore的完整内核打下基础。
zCore Toturial 的特点是所有的code都在用户态运行,便于调试和分析。
docs/
: 教学实验指导code
: 操作系统代码
基于 mdBook,目前目前已经部署到了 GitHub Pages 上面。
git clone https://github.com/rcore-os/zCore-Tutorial.git
cd zCore-Tutorial
cargo install mdbook
mdbook serve docs
code
目录下的rust-toolchain
内容为nightly-2021-07-27
。原则上,我们会采用rustc
最新的版本。目前的版本信息如下:
rustc 1.56.0-nightly (08095fc1f 2021-07-26)
-
阅读有关fuchsia/zircon的概述/简介文章,如 https://zh.wikipedia.org/zh-hans/Google_Fuchsia
-
阅读 https://fuchsia.dev/fuchsia-src/concepts/kernel 了解zircon基本思想
-
阅读潘庆霖毕设论文前两章,了解zCore的基本思想
- 阅读 https://fuchsia.dev/fuchsia-src/reference/syscalls 了解应用程序对Kernel的需求
- 阅读 https://fuchsia.dev/fuchsia-src/reference/kernel_objects/objects 了解Kernel中各种object的含义和行为
- 阅读&分析本项目中的文档和代码,并对照上面的kernel概念,了解kernel概念和设计实现的对应关系
-
在分析和理解的基础上,改进本项目对应章节的文档
-
在分析和理解的基础上,改进/优化本项目的代码,增加测试用例,增加功能
-
在大致掌握本项目后,通过进一步理解和改进zCore,对zCore等新型操作系统有很好的感悟,提升自身实践能力
- 推荐运行方式: 在
ch04-0x
目录下:RUST_LOG=info cargo run -p zircon-loader -- /prebuilt/zircon/x64
- ch4 会执行 zircon prebuilt 中的 userboot 程序,详见userboot源码,fuchsia启动流程。
ch04-01
并未实现任何 syscall。因此进入 userboot 后会在第一次 syscall 返回到内核态时 panic 退出。ch04-03
实现了与channel
和debuglog
有关的部分 syscall,会执行 3 次 syscall 之后由于不支持 process_exit 而退出。
-
毕设论文
-
开发文档
-
更简单和基础的rCore-Tutorial v3:如果看不懂上面的内容,可以先看看这个教程。