第二次参加训练营了,之前已经写过一段时间的Rust了,题目和记忆中差不太多很快就做完了。
遗憾是每次参加训练营的时候,学校的安排都很紧,希望这次有时间能进三阶段吧
2024春夏季开源操作系统训练营第一阶段报告总结--page0egap
第一阶段总结
很早听闻Rust是一个“内存安全”的语言,出于好奇,我从去年就开始接触Rust,Rustlings也是我最开始学习Rust使用过的教程之一。因为之前写过一遍,这次重新再写速度快很多。然而完成的过程中,还是发现有些语法不常用到,很容易遗忘。比如结构体初始化可以使用已有变量的内容,这个地方我写Rust的时候几乎没有用到。
相比于之前的rustlings,新的rustlings增加了算法这一个章节。通过完成基本的数据结构,我们可以比较好的了解rust在写底层的数据结构的时候会遇到的困难,特别是rust在操作链表时的“不自由”。由于所有权的问题,链表等在C和C++常用的指针修改操作会非常的痛苦。小的技巧是我们可以用Option来类似于进行指针的操作,使用Option实现方法take和insert来进行内部修改。
Rust的包管理器Cargo相比于C++的Cmake对用户很友好,虽然Rust现阶段的工具库并没有像Java一样丰富,但一般Rust的库都会有比较好的文档说明,所以一般库的质量还是有保障的。
总之,我觉得Rust是一个非常有前景的语言。
2024春季开源操作系统训练营第二阶段总结报告-魏靖轩
二阶段学习收获
做了二阶段,又受到了rust的拷打。。。
因为本身我是做过ucore的,且那个版本的ucore比训练营的要难。明显能看出来训练营的简化了rcore的部分练习题,但是依然是一个比较大的工作量。
总的来说,训练营的rcore版本并不是很难,对我自身而言,更难的部分在于rust的语言本身。
因为rust本身的检查,导致很多时候往往不能拿到正确的类型,比如操作inner等等。
且本身的要求的互斥访问也很多时候卡住了我,编译通过但是运行时出现了问题,,,总结的教训就是不要在调用里使用调用。。。大概率会出很大的问题。
也是因为此,rust本身的要求导致我必须再次详细的读框架源码,选择合适的构思方式来完成任务,附加品就是能够更好的学习源码。。。
实验情况
做这个实验,一共用了大概有一周吧,完整的做完了5个实验,期间加上上课、写作业等各种事情,总体来说,个人感觉最难的地方是内存和文件系统。
因为这两个实验跟框架很大的关系,需要你去大改框架,而这往往会引起rust的编译错误。。。淦
实验的具体总结和过程在此就不多说了,具体见下面的每天日记:
本来打算挂到我的博客的,但是因为是随笔性质的,写的有点乱,就懒的整理了,挂仓库吧。。。
最后
就写这么多吧,更多的是碎碎念,实验过程都放仓库里了。
2024春节训练营第一阶段总结-hnjhd
前沿
一直对操作系统挺感兴趣的,最初是没事看南大jyy的网课,但是因为没有公开测试,就一直当作科普内容来看了,并没有认真做实验,加入了一个找系统相关实习的qq群,看到别人发了这个操作系统的训练营,大概了解了一下就报名参加了,参加的比较晚
学习过程
在最初学习rust的过程感觉挺简单的,基本上是安装rustling的顺序做,然后每一个内容的看一下rust语言圣经那本书,感觉讲的挺清晰的,在前期题目做的很快。后来因为要毕业了忙着赶毕设和毕业论文就暂停了差不多两周左右。再回来继续做rustling发现很多语法和特性都忘得差不多了,花了2-3天的时间,把rust语言圣经很多内容都看了一遍,看的都差不多了就又继续写rustling了。总体感觉rust是一个非常复杂的语言,里面的很多语法特性和独特的所有权,trait,多种类型的智能指针等,都是我之前所学的语言所没有了解过的,虽然题目都做完了,但是感觉自己的rust了解已经不是很熟悉和透彻,希望在第二阶段的项目开发中能够提高我对rust的运用吧。
2024第一阶段春夏季开源操作系统训练营一阶段总结--zhaoyueqiao
2024春季开源操作系统训练营第一阶段总结-Bajiao
感想与规划
自己想学Rust很久了,但一直没有行动起来。然后自己最近也在为1年之后找工作有点焦虑,想着找一些开源项目做一做,自己也对os比较感兴趣,然后搜了一下os开源训练,接着就了解到了这个开源操作系统训练营。
大概花了5 6天的时间把《rust权威指南》看完了,把rustlings刷完了,总体来说难度不高,主要涉及的是rust的语法,没有很深入的地方。最后10个rust写算法的练习算是对所学语法的巩固,这里面还是踩了不少所有权、生命周期的坑。题目本身不难,但要一次通过还是比较考验对rust的掌握程度的。我个人总结的rust比较核心、困难的知识点如下:
- 所有权
- 生命周期
- 借用,共享借用与可变借用
- 智能指针:Box, Rc, Arc, RefCell
- trait与泛型
- unsafe rust
- 宏
接下来希望能继续巩固rust,用rust写一些项目。
- 读《Programming Rust》这本书,加深对Rust的理解
- 读《Effective Rust》,学会Rust的最佳实践
- 看rust死灵书的课
- 用Rust完成本次开源操作系统训练营,争取能达到项目实习的水平
- 用Rust写一个toy编译器
- 用Rust写一个toy数据库
2024春夏季开源操作系统训练营第一阶段总结-高泽文
2024开源操作系统训练营第一阶段总结-高泽文
本文是对OS训练营第一阶段的总结
1.
rust非常的严谨(通俗来说就是要求特别多)
对变量的限制更多了相比于cpp等语言 对于我写习惯cpp之后,太不适应了一开始 ,但是也一定会有好处,
代码的安全性是它最重要的一点,而且rust编译器的提示也非常的方便 减少运行的错误。
2.安全性完全吸引我了,独有的所有权系统和生命周期规则解决了cpp的空指针 null 内存泄漏等 其次还有多线程的安全保证 (鉴于自身水平所以对于多线程安全摘自文心一言的一段:Rust通过其强大的并发原语,如Arc
3.还有rust的社区是真的友好 我第一次了解到还可以在社区学习语言,圣经就是非常好的一个教程
<2024春夏季开源操作系统训练营第一阶段总结报告-tabby-02>
###rust一阶段学习总结
rust和之前学过的java,python,c有很多的不同。尤其是rust的所有权的方面,让人又爱又恨。
写完了rustlings的110道题目让我对rust有了初步的认识,还需在后面的阶段中深入学习以及巩固。
一阶段存在的问题是效率还可以提升,花费了出乎意料的较长时间,后阶段要更加高效解决问题。
较好的方面是持之以恒,在繁忙的学业中抽出时间,是很困难也是很需要毅力的,希望自己后面可以保持。
2024春夏季开源操作系统训练营第一阶段总结报告-ls-kelvin
2024 开源操作系统训练营第一阶段总结
学习过C,C++,Java,Python,再来学习Rust,可以明显感受到它的不同,本次总结我想聊一下Rust的一些特性
这应该是Rust最特别的地方了,一般我们给函数传递参数,如果是值传递,只会把实参拷贝一份传入函数,而在Rust中不显式说明的情况下都是传递变量的所有权,相当于是把变量的值和原来的名称解绑,再和形参的名称绑定在一起,并且改变了生命周期。这种做法无疑会减少很多安全隐患,但是开发者使用时就需要多加考虑了。
在很多语言中,枚举类型就是有类型规范的宏定义,但在Rust语言中,许多函数的设计都是围绕着枚举类型展开的,最重要的是Option
Rust的智能指针和C++的有很大的区别,原因在于Rust中的变量只能有一个可变引用或多个不可变引用,这使得许多在C++中很容易实现的操作在Rust中需要通过智能指针,Box就像是malloc出一片空间,rc,cell则是多个引用和可变性的工具,但实际操作中这样的限制非常多,运用起来感觉挺麻烦的。
除此之外,还有特征、宏定义、属性、生命周期、多线程、闭包、迭代器、泛型等可圈可点的特性,在此就不多说了。
感受
最后就说一下做题感受,一开始没有rust-analyzer的时候做的有点难受,因为不知道许多内置函数的参数列表和返回值类型,而所有权的转交又会导致报错,后来知道类型了稍微好一些,不过关于可变性的问题一直都不是太清楚。
2024春季开源操作系统第一阶段学习记录
开源rCore项目初识
time:about 2023/8~10
最初接触操作系统的经历十分巧合,因为是刚从土木老哥转到cau的cs大类,刚入行的紧迫感鞭策我不断搜集信息。恰好本系某位大佬前辈(人称炸药哥)钟爱操作系统,已经不只一次向我们强烈安利此项目,但去年由于考研以及学(da)业(bai)繁(te)忙(bai),虽然报了名,但完全没做…..
今年又到了开营的时间,同时经过半年多的摸爬滚打,对于自己今后发展方向也有了大致的轮廓,也算是借着rust的强大能力,帮我去理解RISC-V的原理,为今后科研打下基础!
配置rust编译环境
time:2024/4/11-2024/4/12
心累的一晚上,由于第一次接触github,第一次安装wsl2,没有实际上手过跑在Linux环境下的项目,rustling的配置遇到了超级多的问题。习惯root权限进行Linux操作,这个坏习惯给我带来了巨大的困难,例如vscode无法访问wsl内文件,以及git无法提交代码至仓库……
多次修改权限无果后,最后决定全盘重新装(前前后后弄了3-4个小时),还好最后终于配置好了环境,终于可以开始和rust斗智斗勇了。基本变量和if类型(包括综合quiz练习)
time:2024/4/13
心得体会
初见rust,接触前几道题并没有太大难度,经历基本的rust环境编译后,最初的几道题做起来真的舒心不少。quiz1练习提供了一个基本的语法综合训练。目前感觉rust并没有传说中那么大的难度qwq。
收获
了解了if的使用方法,和c语言最大的不同就是变量不可修改(修改必须要mut),所有权以及的命名使用规则,理解起来还是比较容易的。
基本数据类型和vec
time:2024/4/16
心得体会
最近课太多了,鸽了几天。不知道是,手生了还是变难了,总感觉难度陡增,尤其是vecs2,网上搜了一下都没太搞懂(后买翻答疑发现是后面的课程,我:“????”)
收获
发现基本数据类型和c还是有相似之处的,只是代码表达方式上要别扭很多,往往是,逻辑清楚,不知道怎么改。在vec的一系列题中,这种问题尤为明显。所有权类的题仔细思考后还是有思路的。
所有权
time:2024/4/20
心得体会+收获
所有权类的题仔细思考后还是有思路的。最大的问题还是读代码的能力欠缺,面对“一大坨”代码无从下手,经历这一系列的作答,还是收获满满
struct类型
time:2024/4/20
心得体会
难度骤增,这种类c的结构体真的很容易出现小毛病,对于我这种基础不牢的人来说真的是拉到了新的难度等级,每道题要花一些时间去想emmm,又到了快凌晨一点,睡!!
收获
基本了解了struct的命名使用规则,深一脚浅一脚往下走叭
枚举类型,包,模块
time:2024/4/25
心得体会
好吧,这周课程依旧很多,又拖了好久,新知识吸收速度好慢,今天的枚举总体来说类似struct,学习应用起来并不难。模块主要在封装层面用途很大,就是改变量名字很捉急……
收获
了解枚举定义,以及如何创建成员,熟悉如何在不同模块中修改名称以及引入不同的库.
哈希表创建,option枚举,error系列练习
time:2024/4/26
心得体会
哈希表提供了一个可以快速管理数据的方法,但是读代码好痛苦,太不熟悉了。option同昨天的枚举相似,做起来熟练很多。error的习题考察的好综合,经常改着改着就把整个代码弄乱了……遂ctrl^z重新来过(捂脸)
收获
了解哈希表以及option枚举类型如何使用,加深了对如何处理不同错误的理解,并了解如何修改(或许)
泛型扩展,trait,生命周期,test练习,迭代器
time:2024/4/27
心得体会
重新见到泛型,做的也得心应手起来了。越来越感觉在严谨的rust中,泛型真算一个万金油,又能保证封装,还能调用方便,赞。trait反而更像一个接口(就是我做的什么别人也可以借用的感觉)。
生命周期emmm,某个元素需不需要活,活多久,怎么活……都是其他语言没有的”独特”含义。虽然理解起来费劲,但是题目比较简单。test练习又是两眼一抹黑的翻资料去做,练习需要的广度比课程上要求的多得多。
迭代器给了一个遍历元素的方法,但是迭代器是惰性的,使用前需要先调用。收获
扩充了在方法中使用泛型的实例,了解trait如何在不同函数或结构体中实现,浅显的理解生命周期含义,知道test函数基本语法,迭代器如何声明与调用
余下内容,Rc< T >,box等
time:2024/4/28
心得体会
后面的语法更趋向于数据某种数据结构,理解起来很容易,但运用很难。好在题目并不难,有的题哪怕不了解此类语法也能通过联系上下文做出来(虽然对于提升并没有什么帮助),不过鉴于此项目本质为写os,rust的深度学习就留在需要的时候了(手动狗头)
收获
了解box,Rc,Arc,等结构体的使用环境,了解多线程如何创建,了解宏的创建和使用,接触代码分析工具Clippy。以及如何实现数据结构