Skip to content

Commit

Permalink
Merge pull request #119 from Suzukaze7/master
Browse files Browse the repository at this point in the history
2023开源操作系统训练营第二阶段总结报告-金烜宇
  • Loading branch information
limingth authored Nov 2, 2023
2 parents d505eec + 3ed3792 commit 736ae77
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 28 deletions.
28 changes: 0 additions & 28 deletions package.json

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
title: 2023开源操作系统训练营第二阶段总结报告-金烜宇
date: 2023-11-02 14:05:11
categories:
- report
tags:
- author: Suzukaze7
- repo: https://github.com/LearningOS/2023a-rcore-Suzukaze7
---

## 前言
偶在某个群里听说了开源公开课的存在,讲OS就带你实现一个小型OS,讲计网就带你实现计网的5层架构。作为一个对底层感兴趣,又忍受不了学校课程的照本宣科的人,心想这样的课程也太有意思了吧,于是开启了我自学公开课的旅途。

## 关于开源操作系统训练营
说来很巧,在我将要把6.s081刷完的时候,在相关互助群里听说了这个开源操作系统训练营,于是自然地抱着进一步学习的想法就报了名。现在看来这门课确实符合我的期待:
- 和学校课程最大的不同也是开源课程共同的优点,不会单讲理论,而是结合实践真正地实现一个能够使用的程序
- 能够学习更加现代化的rust语言,其中的包管理器和所有权确实很实用
- 由于xv6和rCore都是基于riscv的,很多功能的实现方式都是差不多的,所以学习难度很平缓,又能巩固之前所学

<!-- more -->

## rust
这门语言刷新了我对计算机语言的理解,以往了解的 cpp, py, java, js 给我的感觉都是换汤不换药,基本熟悉了一门其他的都能很快上手。但rust很特别,第一次看到变量默认不可变,以及赋值就不可使用的所有权等机制,让我感到很神奇。但仔细想想也合理,从来没有人说过计算机语言一定就要是什么样子,而只是为了更好的写出好用的代码而服务。这或许也是计算机让我着迷的地方,在这个世界里一切皆有可能,只取决于你是否有想象力与能力将其构建出来。

而学习的过程花了大概一周的时间,基本是跟着rustling的题目去学习对应的知识点,就是感觉做完之后也只是很粗略的过了一遍,并不能灵活的运用,所以决定等第二阶段遇到了问题再继续学

## rCore
#### 总结
rCore的实验总体上不算难,将文档和代码结合着看基本就能理解然后实现:
- ch1让我了解了裸机平台以及如何在其上运行程序,ch2让我明白了riscv中断的具体流程,这两章补全了081没有提及的两个关键的机制
- ch3通过向TCB添加两个字段记录对应信息即可
- ch4关键要理解用户空间和内核空间的区别,需要先在用户空间找到对应的物理地址,再写入内容
- ch5的`sys_spwan()`是参照`sys_fork()&sys_exec()`结合实现的,`sys_proi`向TCB添加的字段要放在`inner`
- ch6的api非常多,需要结合代码中的使用来理解每个api的作用与使用方式,相较于前面的实验难度大了很多

总体来说,循序渐进逐步将rCore变成一个功能越来越丰富的内核,从一开始的批处理到后面的交互式,非常有意思。

#### 建议
作为第一次参加这个训练营,感觉在某些需要有明确引导的地方并没有,于是绕了挺多弯路,~~当然也可能是我比较笨~~,例如:
- 可以在项目的`README`里对如何开始实验多一点说明,一开始非常迷茫不知道该干嘛
- 然后是对测试多一点说明:由于文档里并没有提到可以本地 Grading 的`ci-user`,我在ch4云端多次重测后回看`README`才知道可以在本地 Grading;而 Grading 会把 rCore 的输出都存在`stdout-ch*`中,于是不明白为什么没有输出错误原因

0 comments on commit 736ae77

Please sign in to comment.