0%

csjgg_blog

一阶段

Begin

rust 有趣捏

Tips

所有权

关于所有权的规则

  1. Rust 中每一个值都被一个变量所拥有,该变量被称为值的所有者
  2. 一个值同时只能被一个变量所拥有,或者说一个值只能拥有一个所有者
  3. 当所有者(变量)离开作用域范围时,这个值将被丢弃(drop)
  4. 当值不是可copy的,简单的= 做的是move
  5. 如果想要多个变量指向一个值, 通过引用
  6. mut引用只能有一个, 不可变引用可以很多,两者不能同时存在

tokio

貌似没涉及,但是觉得好玩捏

  • 底层是线程池+调度器
  • tokio::spawn 出来的task 类似一种协程, 可以被调度器调度
  • 每个task 由诸多future组成, future实际上是一种trait, 实现了它的对象可以被poll, poll它的时候是不阻塞的,如果出现io,返回not ready
  • 每个线程维护task队列, 用完时可以偷取其他线程的
  • 非阻塞io的底层实现是epoll, 当epoll返回时,调度器会选择调度

End

谢谢THU捏

太喜欢rust 了

二阶段

二阶段的收获确实很大,以前也有写过mit的xv6 lab,看过很多os的书籍,但是从rcore中还是学到了很多。我认为rcore的长处是

  • 从bare开始构建,这比xv6强的多,写完xv6,也不知道到底怎么从头写一个os,但是rcore教程详细,循序渐进,彻底让我明白如何从裸机构建一个os。收获很大。
  • 使用rust,比c语言厉害多了,内存安全方面的暂且不提,光是alloc方面我就看的眼花缭乱,先进的语言毕竟还是牛逼啊。

但是我认为,rcore的练习对我不是那么有吸引力,毕竟在os上修修补补已经是常见的lab手段,我觉得文档,构建过程才是真的精髓。如过可以在文档中空一些代码让学生补全,直接参与构建os,相比会更有吸引力。但是我理解这样做难度肯定上升,不太好让基础不劳的学生学习(这样做的话,我这个ddl战士应该也写不完了)。

总而言之,我认为rcore真的很棒,我认为是比肩mit了,感谢写rcore的人士,您们真牛。

日程上,很羞愧,五个lab在三天中赶完,所以感觉也不必要详细记录了,但是可不是我只学了三天,在训练营开始之前我就偶然发现了rcore的文档,基本看了一边,之前也有尝试顺着rcore的教程从头写os(最后只写到第5章。。)感觉还是有点抱歉的,很想参与训练营更多的课程,但是最近学校的事情多,只好做ddl战士了。