diff --git a/package.json b/package.json index ff82c1dc1de..27665f98a59 100644 --- a/package.json +++ b/package.json @@ -25,4 +25,4 @@ "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\347\254\254\344\272\214\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-lyoh33.md" "b/source/_posts/2023\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\347\254\254\344\272\214\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-lyoh33.md" new file mode 100644 index 00000000000..fae51072495 --- /dev/null +++ "b/source/_posts/2023\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\347\254\254\344\272\214\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-lyoh33.md" @@ -0,0 +1,13 @@ +--- +title: 2023开源操作系统第二阶段总结报告-lyoh33 +date: 2023-11-03 21:14:34 +tags: + - author:lyoh33 + - repo:https://github.com/LearningOS/2023a-rcore-lyoh33.git +--- + +此次训练营需要依照提供的os代码框架,完成一些练习,主要是补全函数的实现,整体难度并不大。比较困难的点,一是实验环境的配置,对git,qemu,makefile,cargo等工具的陌生,很容易导致无法理解工作环境。例如实验要拷贝的仓库并不是按照官方仓库的readme里的``` git clone https://github.com/LearningOS/rCore-Tutorial-Code-2023A.git```,而是自己的作业仓库,ci-user这个测试文件夹应与os文件夹平级;二是刚上手代码框架时容易迷失在繁多的文件和文件夹里;三是部分代码比较晦涩,比如涉及到trap的部分,而这些对于理解整个操作系统是至关重要的。 + +练习中的几个实验只要求实现基本的功能,只要熟悉框架代码就很容易写出来,部分更困难的部分并没有作为必做的练习,比如实现写时复制、缺页异常等等。某些关键细节比如开启分页并不要求自己填写,因此,完成这次训练营只能算是一张入门系统的入场券。 + +不同于xv6,rcore的实验框架是递进式的,从裸机应用到批处理系统到多道程序系统,相当后面才有了文件系统。我对这种安排是否是合适保持一点疑问,因为链接时陌生的,在有文件系统前把用户应用链接到内核反而增添了很多复杂性。我觉得rcore的框架像是把用c翻译成的rust代码写成的,缺乏一些用rust重写的必要性,反而增添了很多复杂性。比如虚拟内存那章的MapArea等抽象我琢磨了很久,但是由c写成的xv6的虚拟内存代码我却很容易看懂,直至现在我依然觉得这种抽象是不必要的(也可能是个人水平欠缺,尚不能理解)。rcore的多进程、多线程也是仿linux的经典设计,这部分能否更有一些rust特色,比如让语言自身来管理一部分并发的功能呢?我希望今后能探索这部分的答案