-
Notifications
You must be signed in to change notification settings - Fork 376
os tutorial summer of code 2020
欢迎在校学生在2020年暑假参加鹏城实验室与清华大学举办的OS Tutorial Summer of Code 2020活动(7月4日~8月31日),本次活动分为两个阶段rCore Labs Tutorial(7月4日~7月31日)和zCore操作系统实践与研究(8月1日~8月31日) ,主要是对用Rust语言进行OS研发开展学习、交流与探索。
如有兴趣参加,请发个人简历给 yuchen AT tsinghua.edu.cn 并填写调查问卷,获得邀请后,将开始参与如下面所示的rCore Labs Tutorial活动。完成本次活动第一阶段(7月4日~7月31日)的同学如果通过review,将获得鹏城实验室资助到鹏城实验室进行为期一个月的第二阶段(8月1日~8月31日)的OS实习,开展zCore操作系统实践与研究。
探索把现代系统语言Rust和灵活开放的系统结构RISC-V带入到操作系统的架构与设计的创新中来,思考未来的操作系统应该是什么样。
希望本活动的组织,能为操作系统爱好者提供一个活跃的开源社区环境,为对Rust、RISC-V和操作系统感兴趣的人士营造一个平等的学习与交流空间,吸引更多对操作系统感兴趣的人士参与。
- 注意: 提交申请+个人简历的截止时间是7月3日。本次实习分两个阶段,第一阶段以自学为主,第二阶段以实践为主。
- 注意: 为及时了解和指导同学的学习和实践情况并推动学生相互帮助,本次活动要求学生把每日学习实践的过程记录(Markdown格式)放在github上自己的公开repo中。可参见每日学习实践的具体例子。请参加实习的同学把记录每天的进展的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/电邮/微信)进行交流与合作。
- Rust语言在StackOverflow上连续第5次(2016--2020)获得“最受程序员喜爱的语言”评比第一名
- RISC-V 基金会总部于2020年3月正式迁移至瑞士
- 每日学习记录情况 (25%)
- 在issues上的提问和回答问题情况,Pull Request提交情况 (25%)
- step 0 要求的编程代码的完成情况 (25%)
- step 2 rcore tutorial的通过要求完成情况 (25%)
-
第一次线上交流时间安排:16:00~17:00, 2020.07.12(星期天),方式:腾讯会议;要求参加学习的同学在7月12日上午10点前把rust学习相关的问题发在https://github.com/rcore-os/rCore-Tutorial/issues 上,填写第一次调查问卷,便于助教和老师能够提前看到和做相关准备。
- 请在会前提前观看视频:王润基:RUST OS开发历程与心得体会
- 交流内容:基于腾讯会议:2020/7/12 16:00-18:30
- 陈向群老师讲解OS实习方法的指导建议
- 向勇老师介绍OS实习的统计信息
- 5位实习学生介绍学习经验和体会
- 学生与助教老师的问答环节
- 张汉东老师介绍Rust语言的特征与掌握Rust语言大局观和学习方法
- 王润基助教和吴一凡助教对OS实习的建议
- 向勇老师和陈渝老师介绍下一阶段的OS实习内容和注意事项
-
第二次线上交流时间安排:16:00~17:30, 2020.07.19(星期天),方式:腾讯会议;要求参加学习的同学在7月19日上午10点前把rust学习相关的问题发在https://github.com/rcore-os/rCore-Tutorial/issues 上。
-
请在会前提前观看视频:David Patterson:计算机体系结构新黄金时代:历史、挑战和机遇
-
交流内容:基于腾讯会议:2020/7/19 16:00-17:30
- 鹏城实验室杨沙洲老师介绍鹏程实验室系统方面的研究现状
- 国科大蒋德钧老师介绍基于RISC-V的OS本科课程教学情况
- 涂轶翔、赵成钢助教介绍rcore tutorial的lab实验练习内容
- 部分实习学生介绍学习经验和体会&学生与助教老师的问答
-
-
第二次线上交流时间安排:16:00~17:30, 2020.07.26(星期天),方式:腾讯会议;
- 交流内容:基于腾讯会议:2020/7/26 16:00-17:30
- 老师介绍第二阶段鹏城实验室实习的准备工作
- 学生提问与交流
- 交流内容:基于腾讯会议:2020/7/26 16:00-17:30
注意: 陈渝 邀请您参加腾讯会议
会议主题:OS实习第三次在线交流
会议时间:2020/7/26 16:00-17:30
点击链接入会,或添加至会议列表:
https://meeting.tencent.com/s/olT41sDslEkE
会议 ID:936 338 930
手机一键拨号入会
+8675536550000,,936338930# (中国大陆)
+85230018898,,,2,936338930# (中国香港)
根据您的位置拨号
+8675536550000 (中国大陆)
+85230018898 (中国香港)
前提条件: 要求有基本数据结构,算法基础,相对了解或熟悉C/C++/Java等编程.
- 通过阅读和练习 《 Rust by Example 》) ,全面梳理一遍 Rust 语法。期间可参考书目:(《Rust权威指南》(即官方 Rust Book 中译本)、《Rust编程之道》第二章 、《深入浅出 Rust》等)。(两天)
- 重点阅读《Rust 编程之道》 (第三、四、五章,理解类型系统和所有权;第九章,理解错误处理; 第十三章,理解Unsafe Rust) (一天)
- 完成《Rust 编程之道》第十章的完整示例代码,掌握Cargo和模块系统。(一天)
- 尝试完成编程小练习。(三天)
- 自学:阅读书籍
1.1 编程学习类书籍/文档
- Learn X in Y minutes Where X=Rust
- Rust 程序设计语言 简体中文版
- 通过例子学 Rust
- RUST编程之道
- 深入浅出Rust
- easy rust: simple textbook
- Rust 的绅士(温柔)介绍
- Rust Cookbook 中文版
- Programming Rust 在讲解中与python, C/C++等进行了对比,对理解Rust的ownership,生命周期等有帮助
- Rust相关书籍信息大全
1.2 参考和汇总类
- cargo book 中文
- Rust Reference中文版
- Rust Language Cheat Sheet
- Rust Compiler Error Index(编译错误的详细描述和修改提示)
- Rust Learning 各种信息汇总
- Rust学习资源
- Rust 语言术语中英文对照表
- awesome-rust:About A curated list of Rust code and resources.
- 自学:在线课程/教程
2.1 初级:学习Rust语言
- 中文:Rust编程视频教程(基础)--令狐壹冲
- 中文:Rust编程视频教程(进阶)--令狐壹冲
- Tour of Rust
- 英文:CIS 198: Rust Programming: University of Pennsylvania:2016
- 英文:CS 110L: Safety in Systems Programming : spring 2020
2.2 中级:如何用Rust写系统程序
- 自学:编程练习
3.1 初级编程:小练习题
-
Small exercises to get you used to reading and writing Rust code!
- 要求:小练习全部通过。代码和README提交在自己在github的公开repo上。
-
32 Rust Quizes
- 要求:小练习全部通过。
-
exercisms.io 快速练习(88+道题目的中文详细描述)
- 要求:大部分练习会做或能读懂。
- exercism.io官方站点
3.2 中级编程:100行左右的中小练习题
基于笨办法学C/python/ruby的书籍和例子,要求用rust语言重新实现15道以上的编程练习题
- 参考Learn C The Hard Way 中文版
- 参考Learn Python 3 The Hard Way 视屏
- 参考Learn Ruby The Hard Way 中文版
- (进阶,可选)Algorithm in Rust: 基于Rust语言的经典算法,看看自己能否做出来
- 要求:用rust语言编写完成某本“笨办法学(选择一种你熟悉的编程语言)”书中描述的题目中的15道以上的题目。代码和README提交在自己在github的公开repo上。
- 如果不选择“笨办法系列”,可以选择类似Leecode的题目,用Rust实现,但需要在README中给出题目的出处和相关描述信息,并给出采用Rust语言和非Rust语言的实现代码。
3.3 中高级编程:能阅读和编写上百行的程序
- 基本掌握RUST编程,能理解下面的rCore tutorial中的文档和代码。
- (进阶,可选)BOOK:Rust in Action: 基于Rust语言的中小软件项目,看看自己能否做出来
前提条件:要求有基本计算机组成原理,计算机系统结构基础。
1.阅读《计算机组成与设计(RISC-V版)》第一、二章,可以在整体结构上对 RISC-V 体系建立基本认知。 再进行后面的学习比较有效果。(半天)
- 阅读书籍和在线课程
- 自学PPT for RISC-V特权指令级架构
- 自学RISC-V手册:一本开源指令集的指南 重点是第10章
- 自学RIS-V特权指令级规范 重点是与OS相关的特权硬件访问的内容
- 计算机组成与设计:RISC-V 教材 这是完整的课程教材,不要求全部看完,请根据自己的需求选择。
- 计算机组成与设计:RISC-V 浙大在线课程 这是完整的一门课,不要求全部看完,请根据自己的需求选择。
- 开发一个RISC-V上的操作系统在线课程
- 其他参考学习信息
- 通过要求
- 掌握RUST编程,能修改下面的rCore tutorial的代码,理解RISC-V与OS相关的硬件特性(中断,异常,系统调用,寄存器,特权级,MMU...)。
前提条件:要求有操作系统的基础,基本理解RISC-V与OS相关的硬件特性,能够读懂和理解rCore tutorial的代码
- 操作系统(RISC-V)清华在线课程,2020春季 这是完整的一门课,不要求全部看完,请根据自己的需求选择。
- Rust语言操作系统的设计与实现,王润基本科毕设论文,2019
- zCore操作系统内核的设计与实现,潘庆霖本科毕设论文,2020
- Rust-OS-comparison
- 视频:半个世纪过去了,是时候用Rust重写操作系统了吗?(CC字幕)
- 视频+PPT:金枪鱼之夜:陈嘉杰同学介绍 rCore v0.2.0 实现历程和进展, 2019
- PPT: 尝试用RUST写教学操作系统, 2018
- https://github.com/chyyuu/ucore_os_lab/blob/riscv64-priv-1.10/docs/riscv-overview.md
- https://github.com/chyyuu/ucore_os_lab/blob/riscv64-priv-1.10/docs/toolchain-overview.md
- https://github.com/chyyuu/ucore_os_lab/blob/riscv64-priv-1.10/docs/lab1.md
- 通过阅读文档,代码,分析运行过程等能理解上面的Lab1-6的内容
- 具备了能在Lab1-6的基础上完成类似Lab1-6内容的实际能力(比如实现一个OS课上讲过的页面置换算法,调度算法,中断处理例程等)
- 提交学习完Lab1-6的学习报告(如果实现了类似Lab1-6的新功能或改进的代码,可提交实现的新代码(如新的简单文件系统,新的页面置换算法,....)和实现总结报告)。Review通过后,可进入第二阶段的zCore操作系统实践与研究
- 具体选择项(至少选择一项,且都需要完成实现的学习报告):
- 根据lab1~6的各个小节和代码,自己一步一步手写代码重现整个实现过程,并提交各个阶段的code成果
- 理解lab1~6的各个小节和代码,完成实验题一~六
- 分析lab1~6的各个小节的相关内核模块的设计与实现的不足之处,给出自己的改进设计与实现和测试用例
- SMP支持&某种同步互斥算法的实现和和测试用例
- 新的调度算法和测试用例
- 各种页面置换算法实现和测试用例
- 其他文件系统的实现和测试用例
- 某种virtio device的driver(网卡,图形显示)和测试用例
- 在K210开发板或其他RISC-V开发板上porting rCore Tutorial labs
- 与老师协商后得到认可的选项
- 具体选择项(至少选择一项,且都需要完成实现的学习报告):
- 陈向群
- 吴庆波
- 张汉东
- 蒋德钧
- 向勇
- 陈渝
- 王润基
- 吴一凡
- 刘丰源
- 涂轶翔
- 赵成钢
- 陈兴
- 李睿 微信号 ruili0928