Skip to content

rcore-os/zCore-Tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 而退出。

参考