From 3ed37922a30fa3b574c9e0a78537fa7642a60711 Mon Sep 17 00:00:00 2001 From: Suzukaze <1027743497@qq.com> Date: Thu, 2 Nov 2023 19:14:26 +0800 Subject: [PATCH] --- --- package.json | 28 ------------- ...2-\351\207\221\347\203\234\345\256\207.md" | 41 +++++++++++++++++++ 2 files changed, 41 insertions(+), 28 deletions(-) delete mode 100644 package.json create mode 100644 "source/_posts/2023\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\350\256\255\347\273\203\350\220\245\347\254\254\344\272\214\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-\351\207\221\347\203\234\345\256\207.md" diff --git a/package.json b/package.json deleted file mode 100644 index 27665f98a59..00000000000 --- a/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "hexo-site", - "version": "0.0.0", - "private": true, - "scripts": { - "build": "hexo generate", - "clean": "hexo clean", - "deploy": "hexo deploy", - "server": "hexo server" - }, - "hexo": { - "version": "4.2.1" - }, - "dependencies": { - "hexo": "^4.2.1", - "hexo-asset-image": "^1.0.0", - "hexo-cli": "^3.1.0", - "hexo-deployer-git": "^2.1.0", - "hexo-generator-archive": "^1.0.0", - "hexo-generator-category": "^1.0.0", - "hexo-generator-index": "^1.0.0", - "hexo-generator-tag": "^1.0.0", - "hexo-renderer-ejs": "^1.0.0", - "hexo-renderer-marked": "^2.0.0", - "hexo-renderer-stylus": "^1.1.0", - "hexo-server": "^1.0.0" - } -} \ No newline at end of file diff --git "a/source/_posts/2023\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\350\256\255\347\273\203\350\220\245\347\254\254\344\272\214\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-\351\207\221\347\203\234\345\256\207.md" "b/source/_posts/2023\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\350\256\255\347\273\203\350\220\245\347\254\254\344\272\214\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-\351\207\221\347\203\234\345\256\207.md" new file mode 100644 index 00000000000..5f1b2868dff --- /dev/null +++ "b/source/_posts/2023\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\350\256\255\347\273\203\350\220\245\347\254\254\344\272\214\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-\351\207\221\347\203\234\345\256\207.md" @@ -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的,很多功能的实现方式都是差不多的,所以学习难度很平缓,又能巩固之前所学 + + + +## 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*`中,于是不明白为什么没有输出错误原因 \ No newline at end of file