0%

rCore 第一阶段总结 by dingiso

rCore 第一阶段总结

前言

我是 大连理工大学 18级的一名本科生 , 在老师的宣传下被 这个项目所深深吸引,自愿加入了进来

在学习之前,我只是对 操作系统有所了解,完成了清华的课程 和 实验

RUSTRISC-V 的了解不是很多,但是 rust 的安全性, 和 risc-v 的简洁是我一直十分欣赏的

Rust语言

Rust 的安全性 是我一直觉得rust相较于别的语言突出的地方,我们现在在代码中漫天使用的 spin::Mutexalloc::sync::Arc , 包括自己实现的 Lock 都是安全性的体现,在不断学习rust的过程中,对这门语言的了解不断深入,我觉得他借鉴了很多语言的优势,这也可能是他诞生晚的好处,包括 宏 借鉴了 Lisp 的S表达式等等方面,充分的利用rust 中std库中的函数可以大大减少,代码的数量,甚至在坊间流传 rust 写题可以在一行内完成。

我觉得对rust语言 主要涉及lab的部分 大家主要需要理解:

  • 所有权(ownership)
  • 智能指针
  • Option Result 等使得 出现错误时返回值更加严谨,代码的错误率更低,也增加了检错的能力
  • macro_rules! 宏的定义,严谨而又花样百出,对抽象语法树有很强的操作能力
  • cargo 构建的用法

学习过程

Risc -V

risc-v 在整个学习过程,一直担心是否学不完全会影响 lab的进程,但实际上主要应用在lab中的大部分为

特权架构相关的部分,包括M,S,U三种模式,异常处理,虚拟-物理地址,页表和按页存储等

  • 首先我通过阅读 计算机组成原理(risc-v)版,初步了解了risc-v 的架构,有了一些底气

构建了一份笔记,提取出了重要的和lab构建息息相关的基本内容,如有需要可以看一下:

计算机组成原理(risc-v)前两章 - 重点内容

  • 阅读了RISC-V 手册 特权结构的部分

这本手册,希望大家能发挥他手册的作用,它不仅能在此处帮助到你,在之后的lab中,好的利用他,查找内容都是十分好用的。

Lab -Tutorial

这是本次第一阶段的主要内容- 主要研究了 rCore 教学版本的构建,和相关知识的学习,从以下几个方面逐步构建一个操作系统

  • 中断
  • 物理 虚拟内存 及其映射
  • 线程 与 进程
  • 外设
  • 用户程序

为了更好的理解 Tutorial 的主要内容,我对实验内容总结为两个图,方便大家的理解

图一 : rCore 利用了哪些基础设施进行 系统的构建

图二 : lab 中重要的结构及其之间的关系

学习内容:

我在实验过程中对所有 lab 形成的总结文档,希望对大家有帮助 - lab内容总结文档

我的实验报告: https://github.com/dingiso/DailySchedule/tree/master/docs

我的代码记录:https://github.com/dingiso/DailySchedule/tree/master/code

未来的计划

  • 继续 学习 Rust 和 操作系统,争取参与到 zcore 的编写和完善当中
  • 为 Rust 开源社区做出贡献,或改进rust 功能,或为 rust 提供 crate
  • 继续补充自己的操作系统知识,吸收他人的好的写法和经验,比如学习 学堂在线的 《Linux 内核分析与应用》
  • 在 tutorial 的基础上,研究我们只是利用却未深入了解的库的功能和写法,更深入的了解这方面的内容。
  • 融入进这样的生态,和大家充分交流,形成自己的看法。