Skip to content

os tutorial summer of code 2021

xyongcn edited this page Aug 5, 2021 · 18 revisions

2021年开源操作系统夏令营:第一阶段

欢迎在校学生在2021年暑假参加启元实验室、清华大学、CSDN、极客邦等共同举办的2021年开源操作系统夏令营活动(7月1日~8月31日),本次活动分为三个阶段:线上自学rCore/zCore Labs Tutorial(7月1日~7月25日)和线下线上实践zCore操作系统实践与拓展-2021(8月2日~8月13日 和 8月14日~8月31日) ,主要是对用Rust语言进行OS研发开展学习、交流与探索

如有兴趣参加,请在2021年7月1日前上传个人简历到清华云盘,并填写调查问卷,获得邀请后,将开始参与如下面所示的rCore/zCore Labs Tutorial活动。完成本次活动第一阶段(7月1日~7月25日)的同学如果通过review,将在7月28日前获得启元实验室资助到启元实验室进行为期两周的第二阶段(8月2日~8月13日)的OS实习,开展zCore操作系统实践与拓展-2021。第三阶段(8月14日~8月31日)以远程在线方式继续参加。夏令营结束后,部分表现突出的同学将获得夏令营优秀证书。鼓励同学继续以开源社区的方式参与rCore/zCore相关的活动。

目标:

培养合作者,搭建合作平台。

探索把现代系统语言Rust和灵活开放的系统结构RISC-V带入到操作系统的架构与设计的创新中来,思考未来的操作系统应该是什么样。

宗旨:

希望本活动的组织,能为操作系统爱好者提供一个活跃的开源社区环境,为对Rust、RISC-V和操作系统感兴趣的人士营造一个平等的学习与交流空间,吸引更多对操作系统感兴趣的人士参与。

相关信息:

  • 参加2020 OS夏令营学生的blog,鼓励参加2021 OS夏令营的同学把自己在学习过程中的感悟/收获等写成blog,生成pr,并提交到 https://github.com/rcore-os/blog 上,让更多人看到你的进步!

  • 注意: 提交申请+个人简历的截止时间是7月1日。本次实习分三个阶段,第一阶段(7月1日~7月25日)以线上自学为主;第二阶段(8月2日~8月13日)以线下实践为主;第三阶段(8月14日~8月31日)以线上实践为主;

  • 注意: 为及时了解和指导同学的学习和实践情况并推动学生相互帮助,本次活动要求学生把每周学习实践的过程记录(Markdown格式)放在github上自己的公开repo中。可参见每日学习实践的具体例子2020年OS夏令营同学的每日学习情况汇总 。请参加实习的同学把记录每天的进展的git repo网址 更新到 https://github.com/rcore-os/rCore-Tutorial/issues/18 中。要求每位同学在自己的git repo中记录自己的每周进展,其他同学也可以参考学习。

  • 注意: 第一阶段学习中的技术问题,建议基于github issues (比如都发到https://github.com/rcore-os/rCore-Tutorial/issues/ 上,建立自己的issue )发出并讨论。鼓励对于https://github.com/rcore-os/ 中,特别是 https://github.com/rcore-os/rCore-Tutorial/pulls 中提交 pull requests 的改进内容。

  • 如果已经掌握RUST编程,可以跳过step 0;如果已经掌握RISC-V,可以跳过step 1;如果没学过OS课,建议选择一门在线OS课程学习一下。但需要完成第一阶段实习要求的练习。

  • 如果不是学生,但有Rust基础且对用Rust开发OS感兴趣,也欢迎申请参加,只是无法去启元实验室本地实习,主要通过远程方式(github/电邮/微信)进行交流与合作。

第一阶段活动安排

考核成绩

  • 每周学习记录情况 (25%)
  • 在issues上的提问和回答问题情况,Pull Request提交情况 (25%)
  • step 0 要求的编程代码的完成情况 (25%)
  • step 2 rcore tutorial的通过要求完成情况 (25%)

自学准备

step 0 自学rust编程(大约7~14天)

前提条件: 要求有基本数据结构,算法基础,相对了解或熟悉C语言等编程.

大致安排
  1. 通过阅读和练习 《 Rust by Example 》) ,全面梳理一遍 Rust 语法。期间可参考书目:(《Programming Rust》(有中文版)、《Rust权威指南》(即官方 Rust Book 中译本)、《Rust编程之道》第二章 、《深入浅出 Rust》等)。(两天)
  2. 重点阅读《Rust 编程之道》 (第三、四、五章,理解类型系统和所有权;第九章,理解错误处理; 第十三章,理解Unsafe Rust) (一天)
  3. 完成《Rust 编程之道》第十章的完整示例代码,掌握Cargo和模块系统。(一天)
  4. 尝试完成编程小练习。(三天)
自学材料和练习要求:
  1. 自学:阅读书籍

1.1 编程学习类书籍/文档

1.2 参考和汇总类

  1. 自学:在线课程/教程

2.1 初级:学习Rust语言

2.2 中级:如何用Rust写系统程序

  1. 自学:编程练习

3.1 初级编程:小练习题

3.2 中级编程:100行左右的中小练习题

基于笨办法学C/python/ruby的书籍和例子,要求用rust语言重新实现15道以上的编程练习题

3.3 中高级编程:能阅读和编写上百行的程序

step 1 自学risc-v系统结构(大约7天)

7天内高效学习 RISC-V 体系结构建议:

前提条件:要求有基本计算机组成原理,计算机系统结构基础。

1.阅读《计算机组成与设计(RISC-V版)》第一、二章,可以在整体结构上对 RISC-V 体系建立基本认知。 再进行后面的学习比较有效果。(半天)

自学材料和练习要求:
  1. 阅读书籍和在线课程
  1. 其他参考学习信息
  1. 通过要求
  • 掌握RUST编程,能修改下面的rCore tutorial的代码,理解RISC-V与OS相关的硬件特性(中断,异常,系统调用,寄存器,特权级,MMU...)。

step 2 开发操作系统--based on qemu (大约14~31天)

前提条件:要求有操作系统的基础,基本理解RISC-V与OS相关的硬件特性,能够读懂和理解rCore tutorial的代码

学习了解 rCore Tutorial v3的实验指导内容rCore Tutorial v3的实验代码

有余力的同学可以进一步了解zCore操作系统

通过要求

  • 通过阅读rCore Tutorial v3的实验指导内容文档,代码,分析运行过程等能理解上面的Lab1-8的内容
  • 具备了能在rCore Tutorial v3的实验指导内容的基础上完成类似Lab1-8内容的实际能力(比如实现一个OS课上讲过的页面置换算法,调度算法,中断处理例程等)
  • 提交学习完rCore Tutorial v3的实验指导内容的学习报告(如果实现了类似Lab1-8的新功能或改进的代码,可提交实现的新代码(如新的简单文件系统,新的页面置换算法,....)和实现总结报告)。Review通过后,可进入第二阶段的zCore操作系统实践与拓展-2021
    • 具体选择项(至少选择一项,且都需要完成实现的学习报告):
      • 根据lab1-8的各个小节和代码,自己一步一步手写代码重现整个实现过程,并提交各个阶段的code成果
      • 理解lab1-8的各个小节和代码,完成实验题一~六
      • 分析lab1-8的各个小节的相关内核模块的设计与实现的不足之处,给出自己的改进设计与实现和测试用例
      • SMP支持&某种同步互斥算法的实现和和测试用例
      • 新的调度算法和测试用例
      • 各种页面置换算法实现和测试用例
      • 其他文件系统的实现和测试用例
      • 某种virtio device的driver(网卡,图形显示)和测试用例
      • 在哪吒开发板、K210开发板或其他RISC-V开发板上porting rCore Tutorial labs
      • 扩展zCore的系统调用或某种功能
      • 与老师协商后得到认可的选项

技术指导委员会

  • 陈向群
  • 吴庆波
  • 张汉东
  • 赵霞
  • 向勇
  • 陈渝

助教

  • 王润基
  • 潘庆霖
  • 吴一凡
  • 贾越凯
  • 张译仁
  • 陈兴
  • 石振兴
  • 朱书聪

事务管理负责人

  • 姓名:肖络元 微信号id: 风萧萧兮

夏令营支持与合作单位

  • 鹏城实验室
  • 清华大学
  • CSDN
  • 极客邦科技
  • InfoQ
  • 麒麟软件