0%

2025春夏开源操作系统训练营总结报告-Levio-z

第一阶段

  • 为什么来这个训练营

    • 最初是在寻找 Rust 的练手项目过程中,偶然了解到本训练营。自己本就对系统级编程充满兴趣,因此毫不犹豫地报名参加。
  • 官方通过要求:

    • rustlings+10道算法题
  • 主要参考资料:

  • 学习过程

    • 基于一定的编程基础,我通读了一本 Rust 入门教材,同时刷了约 100 道 LeetCode 算法题,作为语言练习。尤其链表类题目虽然困难,但反而非常适合加深对 Rust 所有权模型的理解。
  • 感想

    • 第一次参与开源社区形式的学习训练营,整体学习路线、资料与交流氛围都非常优质。opencamp 社区内容丰富、质量上乘,是一次令人愉快的学习体验。后续还会继续参与类似项目。

第二阶段

  • 官方通过要求

    • rCore-Camp-Guide-2025S 文档(通过要求)的课后练习
  • 参考资料

    • CSAPP
      • 重点补充:第 7 章 链接过程
    • 操作系统导论
      • 快速回顾前 19 章内容
    • RISV手册
      • 重点理解:解特权级切换
    • rCore-Tutorial-Book-v3 3.6.0-alpha.1 文档(核心)
    • rCore-Camp-Guide-2025S 文档(通过要求)
  • 学习过程

    • 这一阶段持续了约一个月,重点围绕 rCore-Tutorial 详读源码与注释。课后题本身难度不大,但深入理解 rCore 的执行过程与实现细节则颇具挑战。计划后续通过整理文档、写文章的方式进一步复习与巩固。
  • 感想

    • 从“移除应用执行环境支持”出发,到手动链接最简调度系统、构建时间片轮转机制、物理内存页帧管理与多级页表,再到文件系统、线程管理与用户态支持……整个过程让我系统性理解了操作系统的核心构件。以往只是停留在八股文式的“理解层面”,这次才真正从源码出发理解了“为什么这样设计”,并洞察背后的一致性原则与设计哲学。现代软件系统中常见的“新框架”“新技术”,本质上很多都是对底层原理的重新组合与包装。打牢这些底层基础,将对未来应对复杂系统设计提供极大帮助。第二阶段的 rCore 项目就是一个极佳的底层能力训练平台。

第三阶段

  • 官方通过要求
    • 6道练习题,一道挑战题
  • 参考资料
  • 学习过程
    • 得益于第二阶段的深入积累,第三阶段在约三周内顺利完成任务。以文档为主导,同时配合源码阅读与实验。
  • 感想
    • 这一阶段让我初步建立了对“组件化操作系统设计”的理解。ArceOS 的设计将 Rust、OS 内核抽象与组件化思想结合在一起,是极具前沿性的操作系统实践。ArceOS 所体现的“组件化操作系统设计”核心在于:如何在保障各模块职责边界清晰的同时,实现高度解耦却协同有序的组合机制。看似简单,但背后依赖于扎实的底层系统知识与成熟的架构设计思想。ArceOS 不仅是对底层操作系统设计理念的前沿探索,更启发我思考如何在不同工程场景中抽象、迁移并落地组件化设计思想。

      前三阶段总结

    • 总之,确实学到了很多,希望能完成四阶段,最后衷心感谢所有无私奉献的导师和伙伴

      第四阶段

      背景

      我是 Java 后端开发工程师,长期对系统级编程和基础设施方向怀有浓厚兴趣。训练营前,我的目标是借助项目实践机会积累 Rust 经验,并逐步转向系统软件方向。这是我第一次参与开源项目协作,过程中不仅大幅拓宽了技术视野,更激发了我对开源文化的认同与热情,同时促使我对系统级编程领域有了更深入的理解和思考。这些经历坚定了投身系统软件和开源生态建设的决心。

      主要工作

      第一周

  • 梳理了 Rust 中 async/await 异步模型的执行机制和运行时结构
  • 观看向勇老师异步操作系统相关视频,了解异步的操作系统的方向的最近进展
  • 周会上确定了初步目标:使用异步优化smoltcp和Arceos中的网络相关模块

    第二周

  • 完成对 lazyinit 项目的 PR 改进
    • 虽然修改不复杂,但作为第一个开源贡献,对个人具有重要意义
    • 通过深入研究 lazy_staticOnceCell 等标准库机制,加深了对线程安全延迟初始化(全局单例)设计模式的理解
    • 启发我开始构建长期维护项目:Rust 中设计模式最佳实践
  • 完成用户态爬虫
    • 使用 reqwest + tokio 构建异步爬虫,显著感受到异步模型对 I/O 密集型任务的性能提升
    • 通过日志分析发现:爬取网页耗时远超解析网页,确认异步模型对于高并发爬虫的价值
    • 对比 Java 传统线程池 + 回调模型,以及对Rust 异步运行时中future的可组合性,感受到了Rust异步的强大
  • 通过迭代 WebServer 逐步深入 Rust 异步编程
    • 手动实现 pollFuture 等底层机制,结合项目实践理解 async 底层原理
  • 修改目标:
    • 初步阅读 smoltcp 和 ArceOS 的网络模块源码及相关分析文档后,意识到其中涉及的协议细节远超自己的当前掌握程度,一度感到无从下手
    • 正当我陷入焦虑和困惑时,向勇老师的一句,“你要沉下去”给了我极大的启发和鼓励,在老师的建议下,我及时调整目标:从零实现一个简化版的 TCP 协议栈,再逐步尝试贡献到 smoltcp 或 ArceOS 等成熟开源项目中

      第三周

  • 完成 TCB 状态管理结构与部分状态机逻辑
  • 实现服务器的三次握手(SYN)和四次挥手(FIN)流程,具备最基本的连接生命周期管理能力
  • 分支 dev 上尝试更接近 std 的接口模型,目前仍在调试阶段
  • 实现过程中大量阅读 TCP 协议细节、状态转换标准,提升对 TCP/IP 协议的系统理解
  • 项目地址

    总结

    这段训练营经历极大拓宽了我的认知。群里众多优秀开发者让我真正体会到“卓越工程师”的含义:深入技术细节、追求极致设计、乐于分享交流。看着大家在短短一个月内完成高质量、复杂度极高的系统项目,我不仅深受启发、倍感鼓舞,更由衷地感到惊讶。大家对系统设计和实现的理解深度,以及在极短周期内高效推进项目的能力,都远超出了我的预期。这种冲击让我意识到,自己在技术深度以及工程实践上的积累还远远不够,也更加坚定了我沉下心来扎实学习、长期投入开源的决心。
    通过本次训练营,我从 Java 后端开发者的视角,初步窥见了 Rust 在系统编程与异步操作系统方向的技术魅力。并亲手完成了一些系统方向的实践项目,切身感受到开源协作的高效与活力。训练营结束后,我也正式开始计划长期参与开源项目,为社区持续贡献力量。

    下一步目标

  • 长期维护开源项目:
    • design-patterns-rust: 系统收集和实现 Rust 中常见设计模式
    • learn-rust: 构建学习路径、记录 Rust 编程与系统知识
  • 协议栈方向:
    • 持续迭代 tcp-rust 项目,支持更多 TCP 功能(重传、窗口、拥塞控制)
    • 尝试加入异步 API 封装
    • 最终能向 smoltcp / Arceos 提交网络组件相关的 PR

      其他

  • 本次经历的笔记和记录均可在2025春夏季开源操作系统训练营中找到