Skip to content

Latest commit

 

History

History
188 lines (93 loc) · 8.84 KB

README.md

File metadata and controls

188 lines (93 loc) · 8.84 KB

Daily Schedule for OS Tutorial Spring of Code 2024


Day 0-4 2024/4/8-2024/4/12

事件0:报名!

因为学长的推荐,正准备自己开始做rcore lab的时候突然在rcore的官方repo里面看到news:

开源操作系统训练营报名!

wow,看到里面的正是自己想要了解学习的内容,一下子打起了12分精神,感觉很切合自己所在的嵌入式方向,并且完美的满足自己想要在更深平台上学习的想法(之前是在stm32的机器上跑过简单的ucOSII 实时操作系统)。

事件1:rust,启动!

感觉自己花在学rust的时间挺长的,主要是想更深入的学习这个语言(正巧大二上学了编译原理),在rustlings上花了不少时间,不想一个个说语法了,只是记得smart_pointers的特性很有意思狠狠的理解了,当然还有所有权(第一次见到在编译阶段去强调这个概念的语言,之前写malloc实验的时候有想过能不能在写语言的时候把内存的管理考虑好),option之类的东西和c++真的很像,前面的智能指针也是c++那一套的东西(有种写cs144的感觉)。范型的使用我就类比之前学java的时候的用法了,让我记忆深刻的还有rust对于错误处理包装成一个enum,居然是个枚举,还有它的宏,也太多了吧(学c的时候确实体会过宏的强大)。

最后10个algorithms花了小半天写完,确实算是对之前的学习合起来应用了一下。

记录的笔记我就留在个人博客上了,因为用的notion写博客,试试推送很方便,所以习惯了:

Rust基础积累---常更

Day5 2024/4/13

事件:学习riscV(这个部分会迭代更新)

参考资料(放在reference dir): RISC-V手册(训练营给的版本老了点)

事件:lab1半完成(读完了)

学了一点ANSI转义序列,还有bss清零的骚操作(直接用rust写而不是之前用汇编完成)

还有调用rustsbi接口实现打印(不过这里感觉还没看的很仔细),

今天参加成电杯足球赛去了,做的不多(最近也在忙着复习操作系统半期考试😥)

Day6 2024/4/14

事件:看并发 ch8部分

因为想和我们学校半期考试复习结合,所以就跳着先看看这里的并发(chapter8)

peterson算法感觉tutorial讲的少了点手动,建议是看看南大jyy的OS课里面讲的

详细笔记我归在lab部分博客了:lab1 blog

Day7 2024/4/15

事件:lab1敲一遍

这个lab1没有需要写的部分,主要是把一些基本内容学习,跟着敲一遍做好笔记就好了。

lab1 blog

Day8 2024/4/16

事件:lab1 finish

看了lab2 的前两个小节,重新去认识了链接脚本里面的细节(Entry的作用、如何保证的_start在第一个位置等)收藏一个回答:Entry的作用

Day9 2024/4/17

有个incorrect usage of slice::from_raw_parts

Day10-Day16 2024/4/18-2024/4/24

生病住院了,只是把lab2看完了,lab3开了头

Day17-Day19 2024/4/25-2024/4/27

完成lab3的全部,包括简答题,感觉学到了很多东西,和之前的实时操作系统的内容也联系上了不少。

博客记录lab3

Day20 2024/4/28

事件: ch4看了有一半

感觉好难,主要是这部分文档感觉写的有点抽象,代码给的支离破碎。

Day21 2024/4/29

事件:ch4快看完了

这次反复的参考文档,阅读代码,大脑快不够用了,主要是很多东西之前没有连成片,花时间反复看,记忆才能把它们串联起来,memory area 、memoryset 分页的映射模式,内核的地址空间,跳转到用户程序的地址空间,切换过程,好多好多,不过慢慢看懂了真的挺有意思的。

Day22 2024/4/30

事件:ch4的lab做了一半,快结束了

但是感觉速度慢了,的确感觉可以不是很仔细的看文档,直接做lab,主要是时间太紧张了,打算后续的lab就这样来提升速度。

Day23 2024/5/1

事件:ch4完成

加油啊

事件:ch5完成

冲刺了,改变策略过后速度有一定提升,不过我想还有个原因是进程这部分本身也学过,而且比前面的内容要简单(我感觉)

Day24 2024/5/2

事件:ch6启动

开始搞文件系统了

事件:ch6结束

感觉现在的方法变成先做题,先移植上一个lab的功能,然后遇到不懂的地方再回去查看文档,这样做速度的确提升了,但是感觉有些地方也的确有遗漏,做完了再来补,还有问答题没做呀。

主要是马上要考arm处理器架构的半期,数据库的期末还有嵌入式操作系统的期末,得花不少时间去复习呀。

Day25 2024/5/3

事件:完成所有lab

接下来我得去准备我的期中考试(arm处理器)和期末考试(嵌入式操作系统、数据库)

后面应该是边写写问答题,大部分时间转到课内的任务了。

这个lab我感觉做的有瑕疵,我写在博客记录里面了,后续我想我还会来修改这部分代码的,还是不能一直留着屎山

Day26-Day28 2024/5/4-2024/5/6

事件:修改了部分lab的问题代码

不过没花太多时间,最近在赶学校里面的作业,实验,文档,唉,感觉没用又必须做,

事件:重新阅读detail tutorial的文档,完成部分问答题

lab的问答题得开始补了,不过我现在还没动太多,想先再多看看文档里面写的,感觉又能学到不少东西,不过马上9号要考半期考试,同时也在复习:crying_cat_face:

Day29 2024/5/7

事件:做了lab8的问答题

重新阅读了concise和detail book以及代码(进度大概为一半)

Day30-Day33 2024/5/8-2024/5/11

事件:细读了ch4、5、6的代码

完成了ch6、ch7的问答题,部分完成ch4的问答题,后续会完善,重心调整为复习数据库的期末考试(5.21号)

Day34-Day35 2024/5/12-2024/5/13

事件:完成ch5问答

ch4问答还剩一个小末尾,又看了一些rcore的实现(非lab部分),感觉mmap的lazy方式好像也不难,有时间可以试试。

Day36-Day38 2024/5/14-2024/5/16

事件:完成所有问答题

总算是算收尾了,不过还有课程没有看,打算把关于acore的课程看了

Day39-Day44 2024/5/17-2024/5/22

事件:期末考试折磨

现在走入第三阶段,然而也是期末考试集中的一个月,只能穿插着做了,学校课程第一,不过也希望能把第三阶段好好完成

Day45-Day46 2024/5/23-2024/5/24

事件:读200行实现rust future

好多语法啊,主要是概念很抽象,以前也没有用c++,看它的一些类比,虚函数表、dynamic dispatch这些之前没有什么了解,现在就多花了时间去看,不过收获满满。这几周接着都是穿插考试和训练营,看着群里大家的进度也挺快,感觉得调整一下思路,不用每个点扣得很细,主要还是在我们异步编程,使用到操作系统的设计上,比较目前自己时间不太多,得有规划。

Day47-Day51 2024/5/25-2024/5/29

事件:读完200行,看向老师的视频

200行实现future的文档读完了,一边调试一边读代码,之前的reactor、executor和future的内容变得清晰了,但是有点困惑,这个异步的实现也是依赖于线程,而且它的表现和同步一样,明明一个future走入模拟的IO了,应该切到别的future进行,但是它并没有,而是把整个线程阻塞了,在单线程里面没有表现什么异步特征,这部分我没能理解,可能对于异步这个概念我还是有点没搞明白,我就去看向老师提供的视频,看看能不能找到答案。

Day52-Day54 2024/5/30-2024/6/1

事件:看完视频,读完webserver部分代码

从webserver来讲解rust future这个部分我发现的确特别好,主要是它终于把async和await到底做了什么讲明白了,写了可行的和编译器结果对应的上的,展开的async和await,并且后面它这种实现方式居然也就是future写异步的另一种非使用async和await语法的方式,这里再结合前面200行讲的pin的内容,我对整个部分自我感觉是了解了。感觉收获真的很大,以前从来没有接触过异步编程的语法,只是手动使用的多线程。