/zCore-Tutorial

[WIP] Tutorial for zCore kernel.

Primary LanguageRust

zCore Tutorial

CI Docs

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

code目录下的rust-toolchain内容为nightly-2021-07-27。原则上,我们会采用rustc最新的版本。目前的版本信息如下:

rustc 1.56.0-nightly (08095fc1f 2021-07-26)

学习顺序建议

初步了解

  1. 阅读有关fuchsia/zircon的概述/简介文章,如 https://zh.wikipedia.org/zh-hans/Google_Fuchsia

  2. 阅读 https://fuchsia.dev/fuchsia-src/concepts/kernel 了解zircon基本**

  3. 阅读潘庆霖毕设论文前两章,了解zCore的基本**

逐渐深入

  1. 阅读 https://fuchsia.dev/fuchsia-src/reference/syscalls 了解应用程序对Kernel的需求
  2. 阅读 https://fuchsia.dev/fuchsia-src/reference/kernel_objects/objects 了解Kernel中各种object的含义和行为

理解设计实现

  1. 阅读&分析本项目中的文档和代码,并对照上面的kernel概念,了解kernel概念和设计实现的对应关系

动手实践

  1. 在分析和理解的基础上,改进本项目对应章节的文档

  2. 在分析和理解的基础上,改进/优化本项目的代码,增加测试用例,增加功能

  3. 在大致掌握本项目后,通过进一步理解和改进zCore,对zCore等新型操作系统有很好的感悟,提升自身实践能力

code/ch04-xx的相关提示

  • 推荐运行方式: 在 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 实现了与 channeldebuglog 有关的部分 syscall,会执行 3 次 syscall 之后由于不支持 process_exit 而退出。

参考