前言
就Rust语言来说,我认为这是开创新时代的语言,一直在努力学习。
我自己学Rust语言的过程,分了三个阶段,最初纯粹是好奇。
用Rust自己写了一些小程序后,对Rust有了实际的体验,感觉体验很好、值得信赖。
于是有了更深入学习的想法,前面参加了InfiniTensor训练营,了解到使用Rust开发更复杂程序的方法。
现在参加操作系统训练营,是对自己更高的挑战。
开发一个操作系统内核是一个宏大的课题,需要认真的思考、深入地研究。训练营在短时间内整个拉了一遍,
给了学员一个宏观的体验,这非常宝贵,这是我参加训练营的原因。同时,在这个过程中,通过交流和学习,
也触发了我个人的深层思考,这对我个人尤为宝贵。
限于时间,我没法把所有问题思考透彻,但又不能感兴趣的问题轻易丢弃,于是写这篇总结,留待以后。
标题叫Something Not yet done,就是我想做、想探寻但还没有答案的东西。
基础阶段
内容
基础段主要涉及Rust语言的学习。
- Rust语言的unsafe部分
- Rust语言的异步和并行部分
Rust语言的unsafe部分
第一次涉及到unsafe部分代码的编写,经历了程序的崩溃,意识到unsafe的危险;到使用安全方法怎么也无
法实现想要的功能,明白了Rust的哲学,unsafe的重要性。从享受Rust的安全编程,转变为谨慎地编写unsafe
然后再享受Rust的安全编程,对于Rust的编程理念有了更近一步的了解。
但如何安全地编写unsafe,仍然有很多知识需要学习和实践,包括:
- unsafe function
- unsafe trait
- unsafe extern
要完全掌握Rust,unsafe是必须跨越的一步。
Rust语言的异步和并行部分
对于如何编写高性能的Rust程序,还缺乏实践。
专业阶段
内容
专业阶段主要涉及对rCore的代码分析、学习,和部分功能实现。
- 系统调用
- 虚拟地址
- 进程管理和调度
- 文件系统
- 并行控制
系统调用
这部分功能比较简单。
虚拟地址
引入虚拟地址后,所有系统调用的参数传递,都需要进行地址转换。目前都在系统调用处理函数中,复制粘贴
代码来实现,格外得丑陋。希望在第三阶段的时候,对这部分进行封装。
进程管理和调度
stride是比较简单的调度算法,希望在后面能够尝试将Linux的调度算法移植过来。
文件系统
在实现功能的过程中,在File trait中增加的一个方法。不知道有没有破坏原有的抽象,三阶段看看完整的
项目是如何解决File到Inode转换的。
并行控制
死锁检测的实现中,感觉对于列表的实现有点丑陋,目前可用的集合类就只有VecDeque,三阶段看看有没有
其他实现方式。
项目阶段
待补充。