0%

2024秋冬季开源操作系统训练营第二阶段总结报告_周鸿钧

前言

就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,三阶段看看有没有
其他实现方式。

项目阶段

待补充。