├── .gitignore ├── 2024-autumn-scheduling-1.md ├── 2024-autumn-scheduling-2.md ├── 2024-autumn-scheduling-3.md ├── 2025-spring-scheduling-1.md ├── 2025-spring-scheduling-2.md ├── 2025-spring-scheduling-3.md ├── 2025-spring-summary.md ├── LICENSE ├── QA.md ├── README.md ├── news.md ├── relatedinfo.md └── self-study.md /.gitignore: -------------------------------------------------------------------------------- 1 | **/.*/* 2 | !.github/* 3 | !.cargo/* 4 | 5 | **/target 6 | **/Cargo.lock 7 | /os*/src/link_app.S 8 | /os/last-* 9 | 10 | tools 11 | workplace/ 12 | -------------------------------------------------------------------------------- /2024-autumn-scheduling-1.md: -------------------------------------------------------------------------------- 1 | 2 | # 2024年秋冬季开源操作系统训练营:第一阶段 3 | 4 | - [OS 导学视频](https://opencamp.cn/os2edu/camp/2024fall/stage/0?tab=video) 5 | - [第一阶段学习:Rustlings Rust编程教程](https://classroom.github.com/a/nxqlgJOx) 6 | - Online Ranking (训练营在线排行榜) 7 | - [第一阶段排行:Rust Lang](https://opencamp.cn/os2edu/camp/2024fall/stage/1?tab=rank) 8 | 9 | - [常见问题解答](./QA.md) 10 | - [Learning Resource](./relatedinfo.md) (学习资源汇总) 11 | 12 | 欢迎在校学生/工程师在2024年秋季参加清华大学、阿图教育等共同举办的**2024年秋季开源操作系统训练营**活动(2024.9.29~2024.12.22)。训练营结束后,表现突出的同学将获得训练营优秀证书,部分优秀同学将得到前往**清华科技园、泉城实验室线下实习**的机会。鼓励同学继续以开源社区的方式参与到企业/科研院所的操作系统实习/实践/工作/学习等相关的活动。 13 | 14 | ## 目标: 15 | 16 | **培养具有开源思想的合作者,搭建开源合作平台。** 17 | 18 | **探索把现代系统语言Rust和灵活开放的系统结构RISC-V带入到操作系统的架构与设计的创新中来,思考未来的操作系统应该是什么样。** 19 | 20 | ## 宗旨: 21 | 22 | **希望本活动的组织,能为操作系统爱好者提供一个活跃的开源社区环境,为对Rust、RISC-V和操作系统感兴趣的人士营造一个平等的学习与交流空间,吸引更多对操作系统感兴趣的人士参与。** 23 | 24 | ## 相关信息: 25 | 26 | - [参加往届 OS 训练营学生的 Blog](https://rcore-os.github.io/blog/),鼓励参加2024 OS训练营的同学把自己在学习过程中的感悟/收获等写成blog,生成pr,并提交到 上,让更多人看到你的进步!**提交博客pr是第二、三、四阶段的必要要求**。 27 | - **注意** 为及时了解和指导同学的学习和实践情况并推动学生相互帮助,本次活动要求学生把每周学习实践的过程记录(Markdown格式)放在github上自己的公开repo中。可参见[参考实例](https://github.com/GCYYfun/DailySchedule)和[2020年每日学习汇总](https://github.com/rcore-os/rCore-Tutorial/issues/18 ) 。请参加实习的同学把记录每天的进展的git repo网址 更新到[2024年OS训练营同学的每日学习情况汇总](https://github.com/LearningOS/rust-based-os-comp2023/issues/210) 中。要求每位同学在自己的git repo中记录自己的每周进展,其他同学也可以参考学习。 28 | - **注意** 第一阶段学习中的技术问题,建议基于[训练营讨论版](https://github.com/LearningOS/rust-based-os-comp2023/discussions)和[常见问题](https://opencamp.cn/os2edu/bbs/1382) 发出并讨论。 29 | 30 | 31 | # 2024秋冬季开源操作系统训练营第一阶段环境配置与学习资料 32 | 33 | 前提条件: 要求有基本数据结构,算法基础,相对了解或熟悉C语言等编程. 34 | 35 | 1. 自学基础知识:[阅读书籍/课程/视频等资源汇总](https://github.com/rcore-os/rCore/wiki/study-resource-of-system-programming-in-RUST) 36 | 37 | - 推荐:[Rust语言圣经(Rust教程 Rust Course和配套练习)](https://course.rs/) 38 | - 推荐:[半小时快速了解Rust](https://fasterthanli.me/articles/a-half-hour-to-learn-rust) 39 | - 推荐:[Rust速查表(cheatsheet)](https://cheats.rs/) 该项目不仅提供了基础的语法速查,还有执行顺序详解和编写时需要关注的注意事项。项目还包含了示例代码(EX)、书籍(BK)、标准(STD)等相关资料的扩展。 40 | - 推荐:[清华计算机系大一学生2022暑期课程:Rust程序设计训练(有课程视频)](https://lab.cs.tsinghua.edu.cn/rust/) 41 | 42 | 2. 自学编程 43 | 44 | - [2024秋冬季OS训练营--rustling训练](https://classroom.github.com/a/nxqlgJOx)(采用Github Classroom模式的Rustling小练习,点击上述链接,形成自己的练习用repo) 45 | 46 | - 要求:**必须完成** 。完成所有练习后,执行 ``git add; git commit -m"update"; git push`` 命令,把更新提交到GithubClassroom的CI进行自动评测。要求小练习全部通过GithubClassroom的CI自动评测。 47 | 48 | - [学习系列视频:Rust中文社群线上学习室--通过 Rustlings 学 Rust](https://space.bilibili.com/24917186/video) 49 | **提示:基于github classroom的开发方式** 50 | 基于github classroom,可方便建立开发用的git repository,并可基于github的 codespace(在线版ubuntu +vscode)在线开发使用。整个开发环境仅仅需要一个网络浏览器。 51 | 52 | > codespace 不是必须的。如果是本地的ubuntu中建立开发环境,可在shell中执行 `make ubuntu_local_setenv` 来自动安装配置开发环境(执行需要 `sudo` root 权限,仅需要执行一次)。 53 | 54 | 1. 在网络浏览器中用自己的 github id 登录 github.com。 55 | 56 | 2. 接收 [Rust-lang Lab Test based on Rustlings 的github classroom在线邀请](https://classroom.github.com/a/nxqlgJOx) ,根据提示一路选择OK即可。 57 | 58 | 3. 完成第二步后,你的rustings实验练习 的 github repository 会被自动建立好,点击此github repository的链接,就可看到你要完成的实验了。 59 | 60 | 4. 在你的第一个实验练习的网页的中上部可以看到一个醒目的 `code` 绿色按钮,点击后,可以进一步看到 `codespace` 标签和醒目的 `create codesapce on main` 绿色按钮。请点击这个绿色按钮,就可以进入到在线的ubuntu +vscode环境中 61 | 62 | 5. 再按照下面的环境安装提示在vscode的 `console` 中安装配置开发环境:rustc等工具。 63 | 64 | 6. 然后就可以基于在线vscode进行测试 (执行命令 `rustlings watch` ),编辑代码的循环实验过程了。 65 | 66 | 7. 如果使用本地的环境进行rustlings的练习,请按照接下来的步骤进行:首先需要安装一个Linux的环境,对于windows的用户,推荐使用wsl2,也可以使用vmware等虚拟机进行安装。如果在这一步存在问题,请联系助教。 67 | 68 | 8. 创建ssh key。在linux环境下,使用` ssh-keygen -t rsa -b 4096 -C "你的邮箱" `命令,创建ssh key,下面的选项全部直接敲回车即可。 69 | 随后使用` cat ~/.ssh/id_rsa.pub` 命令查看生成的公钥,并完整的复制下来。 70 | 在github仓库界面点击自己的头像,选择`settings`。进入到设置页面后,点击左侧的`SSH and GPG keys`选项。点击`New SSH key`选项,并将复制下来的内容粘贴上去,添加该ssh key的描述。随后点击`Add SSH key`,并一路点击确认即可。 71 | 72 | 9. 在本地安装rust。进入linux环境下,参考rcore 教程 http://rcore-os.cn/rCore-Tutorial-Book-v3/ 中, 第零章操作系统概述,实验环境配置的内容,找到Rust 开发环境配置的章节,相应配置即可,你可以同时将后续需要的环境也配置好。 73 | 74 | 10. clone实验仓库到本地。在前面点击链接生成的仓库中,同样点击醒目的 `code` 绿色按钮,选择`local`下的`ssh`选项,复制下面的链接。随后回到本地linux环境下,使用`git clone 复制的链接`的方式,将目标仓库clone到本地。随后,使用`ls`命令查看自己clone下来的文件夹,再使用`cd`命令进入到该文件夹下,使用`cargo install --force --path .`安装rustlings。 75 | 76 | 11. 练习rustlings。使用vscode等编辑器,进入clone下来的目录下的`exercises`文件夹,依次完成对应的练习。随后在rustlings的根目录下使用`rustlings run 练习名称`去运行对应练习,也可以使用`rustlings hint 练习名称`查看题解。 77 | 78 | 12. 提交。当做完部分或所有练习之后,执行 ``git add; git commit -m "update"; git push`` 命令,把更新提交到GithubClassroom的CI进行自动评测。你可以在github仓库页面的actions页面,看到你的CI提交结果,或者在排行榜上面查看自己的评分。 79 | 80 | 13. 上述步骤有任何问题都可以找助教。 81 | 82 | - (Option)[32 Rust Quizes](https://dtolnay.github.io/rust-quiz/1) 83 | 84 | - 要求:小练习全部通过。(**非必须完成**) 85 | 86 | - (Option)[exercisms.io 快速练习(88+道题目的中文详细描述)](http://llever.com/exercism-rust-zh/index.html) 87 | 88 | - 要求:大部分练习会做或能读懂。(**非必须完成**) 89 | - [exercism.io官方站点](https://exercism.io/) 90 | 91 | ### 自学Risc-v系统结构(大约2~7天) 92 | 93 | **第二阶段**的操作系统的课程实验基于 RISC-V 架构。推荐同学在完成 Rust 语言的基本学习后,参考下面资料,预习 Risc-v 架构的内容。 94 | 95 | 前提条件:要求有基本计算机组成原理,计算机系统结构基础。 96 | 97 | 阅读《计算机组成与设计(RISC-V版)》第一、二章,可以在整体结构上对 RISC-V 体系建立基本认知。再进行后面的学习比较有效果。 98 | 99 | #### 自学材料和练习要求: 100 | 101 | 1. 阅读书籍和在线课程 102 | 103 | - 自学[PPT for RISC-V特权指令级架构](https://content.riscv.org/wp-content/uploads/2018/05/riscv-privileged-BCN.v7-2.pdf) 104 | - 自学[RISC-V手册:一本开源指令集的指南](http://riscvbook.com/chinese/RISC-V-Reader-Chinese-v2p1.pdf) 重点是第10章 105 | - (Option)自学[RISC-V特权指令级规范](https://riscv.org/technical/specifications/) 重点是与OS相关的特权硬件访问的规范内容(Privileged Spec) 106 | - (Option)自学[RISC-V汇编手册](https://github.com/riscv-non-isa/riscv-asm-manual/blob/master/riscv-asm.md) 107 | - (Option)[计算机组成与设计:RISC-V 教材](https://item.jd.com/12887758.html) 这是完整的课程教材,不要求全部看完,请根据自己的需求选择。 108 | - (Option)[计算机组成与设计:RISC-V 浙大在线课程](http://www.icourse163.org/course/ZJU-1452997167) 这是完整的一门课,不要求全部看完,请根据自己的需求选择。 109 | 110 | 2. 其他参考学习信息 111 | 112 | - (Option)[Berkeley CS61C: Great Ideas in Computer Architecture (Machine Structures)](http://www-inst.eecs.berkeley.edu/~cs61c/sp18/) 113 | 114 | > Option的含义是:如果有足够的时间建议看看,否则在后续要用到时或需要查询进一步信息时再查阅这些内容。 115 | 116 | 3. 通过要求 117 | 118 | - 掌握RUST编程,理解RISC-V与OS相关的硬件特性(中断,异常,系统调用,寄存器,特权级,MMU...)。 119 | 120 | One More Thing:当你看到这,感觉第一阶段还没开始,还在想下一步要干啥时,我们的建议是:**Just Do It NOW!** 121 | -------------------------------------------------------------------------------- /2024-autumn-scheduling-2.md: -------------------------------------------------------------------------------- 1 | 2 | # 2024年秋冬季开源操作系统训练营:第二阶段 3 | 4 | ## [专业阶段 - OS设计实现](https://opencamp.cn/os2edu/camp/2024fall/stage/2) 5 | 6 | - [新闻与纪要](./news.md) 7 | - [常见问题解答](./QA.md) 8 | - [Learning Resource](./relatedinfo.md) (训练营学习资源) 9 | - [直播教室](https://opencamp.cn/os2edu/camp/2024fall/stage/2) 10 | - [视频回放与课件](https://opencamp.cn/os2edu/camp/2024fall/stage/2?tab=video) 11 | - [实验指导书](https://learningos.cn/rCore-Camp-Guide-2024A/) 12 | 13 | - Online Ranking (训练营在线排行榜) 14 | - [rCore Tutorial 晋级榜单](https://opencamp.cn/os2edu/camp/2024fall/stage/2?tab=rank) 15 | - Classroom 16 | - [rCore Tutorial ClassRoom邀请链接](https://classroom.github.com/a/XCCbdobQ) (点击创建仓库) 17 | 18 | 19 | ## 相关信息: 20 | 21 | - [参加2020--2022 OS训练营学生的blog](https://rcore-os.github.io/blog/),鼓励参加2024 OS训练营的同学把自己在学习过程中的感悟/收获等写成blog,生成pr,并提交到 上,让更多人看到你的进步! 22 | - **注意** 为及时了解和指导同学的学习和实践情况并推动学生相互帮助,本次活动要求学生把每周学习实践的过程记录(Markdown格式)放在github上自己的公开repo中。可参见[每日学习实践的具体例子](https://github.com/GCYYfun/DailySchedule)和[2020年OS训练营同学的每日学习情况汇总](https://github.com/rcore-os/rCore-Tutorial/issues/18 ) 。请参加实习的同学把记录每天的进展的git repo网址 更新到[2024年OS训练营同学的每日学习情况汇总](https://github.com/LearningOS/rust-based-os-comp2023/issues/200) 中。要求每位同学在自己的git repo中记录自己的每周进展,其他同学也可以参考学习。 23 | - **注意** 第二阶段学习中的技术问题,建议基于[开源操作系统社区-问答论坛](https://opencamp.cn/os2edu/bbs) 发出并讨论 24 | - 常见问题 Q&A 25 | - [2024 秋冬季训练营常见问题](https://opencamp.cn/os2edu/bbs/1382) 26 | - [2024秋冬季训练营【专业阶段】群内问题汇总](https://opencamp.cn/os2edu/bbs/1396) 27 | - [训练营网站常见问题和故障](https://opencamp.cn/os2edu/bbs/1386) 28 | 29 | 30 | ## 第二阶段活动安排 31 | 32 | ### 第二阶段的训练步骤 33 | 34 | 基于Rust语言进行操作系统内核实验--based on qemu (三周时间) 35 | 36 | 前提条件:要求有操作系统的基础,基本理解RISC-V与OS相关的硬件特性 37 | 38 | #### 课程参考 39 | - [课程幻灯片](https://www.yuque.com/docs/share/4c39608f-3051-4445-96ca-f3c018cb96c7) 40 | - 参考书 41 | - [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/) 42 | - [深入了解计算机系统](https://hansimov.gitbook.io/csapp/) 43 | - [RISC-V Reader中文版](http://riscvbook.com/chinese/RISC-V-Reader-Chinese-v2p1.pdf) 44 | - [rCore Tutorial Book v3](https://learningos.github.io/rCore-Tutorial-Book-v3/) 45 | 46 | #### 基于Rust语言的rCore Tutorial实验指导 [rCore-Tutorial-Guide-2024A](https://learningos.github.io/rCore-Tutorial-Guide-2024A/) 47 | - [API文档](https://github.com/LearningOS/rCore-Tutorial-Guide-2024A/#os-api-docs-of-rcore-tutorial-code-2022s) 48 | - [实验代码](https://github.com/LearningOS/rCore-Tutorial-Code-2024A) 49 | - [测试用例](https://github.com/LearningOS/rCore-Tutorial-Test-2024A) 50 | 51 | 52 | #### [rCore实验讲解视频](https://www.yuque.com/docs/share/1b5b9260-8a80-4427-a612-78ec72b37e5f) 53 | 54 | #### 建立基于ClassRoom实验的具体步骤 55 | 56 | **基于Rust语言的rCore Tutorial** 57 | - [rCore Tutorial ClassRoom邀请链接](https://classroom.github.com/a/XCCbdobQ):点击后按提示可以建立自己的rCore Tutorial实验专用仓库 58 | - [rCore Tutorial ClassRoom排名页面](https://opencamp.cn/os2edu/camp/2024fall/stage/2?tab=rank):可以查看自己的rCore Tutorial实验的排名情况 59 | 60 | 请根据各个实验的具体实验要求在自己的仓库中完成 ch[3,4,5,6,8] 5个实验。请在每完成一个实验(完成编码和实验报告文档)后,请通过执行 `git push` 命令来更新自己的实验专用 repos,来通过基于GitHub Classroom的CI测试。 61 | 62 | ### 总体学习要求和成绩考核方式 63 | 64 | 晋级要求: 65 | 1. 第二阶段排行榜满**500分** 66 | 2. 每个实验的总结报告 (`reports/lab[3,4,5,6,8].md`) 67 | 3. 第一、二阶段的学习blog (通过 PR 合并) 68 | 69 | 注意:需提供 **排行榜截图 + blog PR截图** 进行确认,通过检查后方可晋级第三阶段。 70 | 71 | ### 关于学习记录与 blog 72 | 73 | 每个阶段结束后需要写总结报告,第二阶段需要完成第一、二阶段的blog,请参照[2024 秋冬季训练营常见问题](https://opencamp.cn/os2edu/bbs/1382)第19问。 74 | 75 | - [学习记录的标杆1](https://github.com/LearningOS/record),浙江大学本科生徐文浩的2020开源操作系统训练营的过程记录,是大家学习的榜样,供大家学习参考。 76 | - [学习记录的标杆2](https://kiprey.github.io/tags/uCore/):湖南大学本科生肖政杭的自学ucore for x86的过程记录,是大家学习的榜样,供大家学习参考。 77 | 78 | One More Thing:当你看到这,感觉第二阶段还没开始,还在想下一步要干啥时,我们的建议是:**Just Do It NOW!** 79 | -------------------------------------------------------------------------------- /2024-autumn-scheduling-3.md: -------------------------------------------------------------------------------- 1 | 2 | # 2024年秋冬季开源操作系统训练营:第三阶段 3 | 4 | ## [项目基础阶段 - 组件化操作系统](https://opencamp.cn/os2edu/camp/2024fall/stage/3) 5 | 6 | - [新闻与纪要](./news.md) 7 | - [常见问题解答](./QA.md) 8 | - [Learning Resource](./relatedinfo.md) (训练营学习资源) 9 | - [直播教室](https://opencamp.cn/os2edu/camp/2024fall/stage/3) 10 | - [视频回放与课件](https://opencamp.cn/os2edu/camp/2024fall/stage/3?tab=video) 11 | 12 | ## 第三阶段主要安排 13 | 14 | ### 课程内容 15 | 16 | 第三阶段是第四阶段的准备阶段,主要为大家介绍组件化操作系统的基本思想与结构。 17 | 18 | 项目核心 project:[ArceOS 组件化内核](https://github.com/arceos-org/) 19 | 20 | 核心思想:Combining Various Operating Systems Using OS-Reusable Components 21 | 22 | 在三周时间内为大家带来9次线上课程,介绍组件化 unikernel、宏内核与 hypervisor 三部分内容。 23 | 24 | 25 | - [第一周课程ppt预览版](https://github.com/arceos-org/oscamp/tree/main/course) 26 | - [arceos 实验代码链接](https://github.com/arceos-org/oscamp/tree/main/arceos) 27 | - 注:大家自行 clone 到本地进行实验即可,不需要提交,阶段结束提交实验报告 28 | 29 | ### 参考资料 30 | 31 | #### 课程背景 32 | 33 | - [基于泛型独立组件构建各种领域OS](https://github.com/chyyuu/thoughts/blob/main/tangram-oskits.md) 34 | - [rCore Tutorial Kernel组件化初步探索](https://github.com/rcore-os/rCore-Tutorial-in-single-workspace) 35 | - [ArceOS: unikernel架构的组件化操作系统内核的初步探索](https://github.com/LearningOS/os-lectures/blob/master/oslabs/biglabs-list-2023.md) 36 | - [贾越凯博士论文的第四章:“unikernel架构ArceOS内核的设计与实现”](https://github.com/rcore-os/arceos/wiki/docs/main-20240524-62-91.pdf) 37 | 38 | #### 课程参考 39 | - ArceOS 相关项目地址 40 | - unikernel 项目主仓库 [arceos-org/arceos](https://github.com/arceos-org/arceos) 41 | - 宏内核项目主仓库 [arceos-org/starry-next](https://github.com/arceos-org/starry-next) 42 | - hypervisor项目主仓库 [arceos-hypervisor/arceos-umhv](https://github.com/arceos-hypervisor/arceos-umhv/) 43 | - 基于 ArceOS unikernel 实现的宏内核 [Starry-OS](https://github.com/Starry-OS/), 44 | - 2024年全国大学生计算机系统能力大赛-操作系统设计赛(全国)-OS功能挑战赛道 一等奖作品 45 | - 往届参考书 46 | - [简明 ArceOS Tutorial Book](https://rcore-os.cn/arceos-tutorial-book/) (部分代码结构已更新,仅供参考) 47 | - 往届课程视频&课件 48 | - ArceOS unikernel 相关 49 | - [2024春夏季开源操作系统训练营-项目一:ArceOS 单内核 Unikernel](https://opencamp.cn/os2edu/camp/2024spring/stage/3?tab=video) 50 | - [2023秋冬季开源操作系统训练营-项目一:ArceOS 单内核 Unikernel](https://opencamp.cn/os2edu/camp/2023fall/stage/2?tab=video) 51 | - [2023春夏季开源操作系统训练营:第三阶段 ArceOS](https://opencamp.cn/os2edu/camp/2023spring/stage/2?tab=video) 52 | - ArceOS 宏内核相关 53 | - [2024春夏季开源操作系统训练营-项目二:ArceOS 宏内核](https://opencamp.cn/os2edu/camp/2024spring/stage/4?tab=video) 54 | - [2023秋冬季开源操作系统训练营-项目二:ArceOS 宏内核](https://opencamp.cn/os2edu/camp/2023fall/stage/3?tab=video) 55 | - ArceOS hypervisor 相关 56 | - [2024春夏季开源操作系统训练营-项目四:Hypervisor虚拟化](https://opencamp.cn/os2edu/camp/2024spring/stage/6?tab=video) 57 | - [2023秋冬季开源操作系统训练营-项目四:Hypervisor虚拟化](https://opencamp.cn/os2edu/camp/2023fall/stage/5?tab=video) 58 | - [视频合集·从零开始用 Rust 语言实现一个 x86 hypervisor](https://space.bilibili.com/3493135044840333/channel/collectiondetail?sid=1118442&spm_id_from=333.788.0.0) 59 | - 对应课件:[RVM-Tutorial/wiki](https://github.com/equation314/RVM-Tutorial/wiki) 60 | 61 | - 参考书 62 | - [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/) 63 | - [深入了解计算机系统](https://hansimov.gitbook.io/csapp/) 64 | - [RISC-V Reader中文版](http://riscvbook.com/chinese/RISC-V-Reader-Chinese-v2p1.pdf) 65 | - [rCore Tutorial Book v3](https://learningos.github.io/rCore-Tutorial-Book-v3/) 66 | 67 | 68 | ### 总体学习要求和成绩考核方式 69 | 70 | #### 关于晋级问题 71 | 72 | 第三阶段是第四阶段的准备阶段,原则上不淘汰,但仍需要在12月1日之前提交本阶段的总结 Blog,按要求提交即可晋级。 73 | 74 | #### 关于实验题目 75 | 三阶段所有实验,目的都是帮助大家学习和巩固,同学们自行决定是否去做,不是晋级条件。 76 | 包括两类实验: 77 | 1. 每节课程都附带课后实验,对于这类实验,鼓励同学们自由讨论解决办法。完成情况不做考查。 78 | 2. 根据课程进度会发布挑战性的实验题目,要求独立完成,参与者按照完成顺序排名。 79 | 排名仅作为结营评优参考。具体题目与规则到时公布。 80 | 81 | 82 | **注:** 第四阶段各个选题方向的导师可能会根据第三阶段的完成情况为大家分配项目任务,请有意选择第四阶段相关选题的同学着重完成第三阶段的相关内容,希望大家通过第三阶段的学习可以为第四阶段的项目实操打下一个好的基础。 83 | 84 | 85 | ### 训练营剩余各阶段起止时间 86 | * 第三阶段(3周)2024/11/11 ~ 2024/11/29 组件化操作系统 87 | * 第四阶段(3周)2024/12/2 ~ 2024/12/22 项目实习,4个选题方向 88 | * [ArceOS单内核Unikernel](https://opencamp.cn/os2edu/camp/2024fall/stage/4) 89 | * [ArceOS宏内核](https://opencamp.cn/os2edu/camp/2024fall/stage/5) 90 | * [Hypervisor虚拟化](https://opencamp.cn/os2edu/camp/2024fall/stage/6) 91 | * [基于协程异步机制的操作系统/驱动](https://opencamp.cn/os2edu/camp/2024fall/stage/7) 92 | 93 | 94 | ### 关于学习记录与 总结 Blog 95 | 96 | 每个阶段结束后需要写总结报告,第三阶段需要完成本阶段的 Blog,请参照[2024 秋冬季训练营常见问题](https://opencamp.cn/os2edu/bbs/1382)第19问。 97 | 98 | - [学习记录的标杆1](https://github.com/LearningOS/record),浙江大学本科生徐文浩的2020开源操作系统训练营的过程记录,是大家学习的榜样,供大家学习参考。 99 | - [学习记录的标杆2](https://kiprey.github.io/tags/uCore/):湖南大学本科生肖政杭的自学ucore for x86的过程记录,是大家学习的榜样,供大家学习参考。 100 | 101 | One More Thing:当你看到这,还在想下一步要干啥时,我们的建议是:**Just Do It NOW!** 102 | 103 | 同时,欢迎大家参与 rCore 组织的 [discussions](https://github.com/orgs/rcore-os/discussions) 中的各种os模块化相关的探索性质的小项目 104 | -------------------------------------------------------------------------------- /2025-spring-scheduling-1.md: -------------------------------------------------------------------------------- 1 | # 2025年春夏季开源操作系统训练营:第一阶段 2 | 3 | - [OS 导学视频](https://opencamp.cn/os2edu/camp/2025spring/stage/0?tab=video) 4 | - [第一阶段学习:Rustlings Rust编程教程](https://classroom.github.com/a/S8vP0lDr) 5 | - Online Ranking (训练营在线排行榜) 6 | - [第一阶段排行:Rust Lang](https://opencamp.cn/os2edu/camp/2025spring/stage/1?tab=rank) 7 | 8 | - [常见问题解答](./QA.md) 9 | - [Learning Resource](./relatedinfo.md) (学习资源汇总) 10 | 11 | 欢迎在校学生/工程师在2025年春季参加清华大学、阿图教育等共同举办的**2025年春夏季开源操作系统训练营**活动(2025.3.30~2025.6.22)。训练营结束后,表现突出的同学将获得训练营优秀证书,部分优秀同学将得到前往**清华科技园、泉城实验室线下实习**的机会。鼓励同学继续以开源社区的方式参与到企业/科研院所的操作系统实习/实践/工作/学习等相关的活动。 12 | 13 | ## 目标: 14 | 15 | **培养具有开源思想的合作者,搭建开源合作平台。** 16 | 17 | **探索把现代系统语言Rust和灵活开放的系统结构RISC-V带入到操作系统的架构与设计的创新中来,思考未来的操作系统应该是什么样。** 18 | 19 | ## 宗旨: 20 | 21 | **希望本活动的组织,能为操作系统爱好者提供一个活跃的开源社区环境,为对Rust、RISC-V和操作系统感兴趣的人士营造一个平等的学习与交流空间,吸引更多对操作系统感兴趣的人士参与。** 22 | 23 | ## 相关信息: 24 | 25 | - [参加往届 OS 训练营学生的 Blog](https://rcore-os.github.io/blog/),鼓励参加2025 OS训练营的同学把自己在学习过程中的感悟/收获等写成blog,生成pr,并提交到 上,让更多人看到你的进步!**提交博客pr是第二、三、四阶段的必要要求**。 26 | - **注意** 为及时了解和指导同学的学习和实践情况并推动学生相互帮助,鼓励学生把每周学习实践的过程记录(Markdown格式)放在github上自己的公开repo中。可参见[参考实例](https://github.com/GCYYfun/DailySchedule)和[2020年每日学习汇总](https://github.com/rcore-os/rCore-Tutorial/issues/18 ) 。请参加实习的同学把记录每天的进展的git repo网址 更新到[2025年OS训练营同学的每日学习情况汇总](https://github.com/LearningOS/rust-based-os-comp2025/issues/1) 中。要求每位同学在自己的git repo中记录自己的每周进展,其他同学也可以参考学习。 27 | - **注意** 常见问题详见 [训练营常见问题](https://docs.qq.com/doc/DWFV2eWdaZktvaWVo),如果有问题可以在 [问答论坛](https://opencamp.cn/os2edu/bbs) 和微信群中进行提问。 28 | 29 | 30 | # 2025春夏季开源操作系统训练营第一阶段环境配置与学习资料 31 | 32 | 前提条件:要求有基本数据结构,算法基础,相对了解或熟悉C语言等编程. 33 | 34 | ## 自学基础知识 35 | 36 | - [阅读书籍/课程/视频等资源汇总](https://github.com/rcore-os/rCore/wiki/study-resource-of-system-programming-in-RUST) 37 | - 推荐:[Rust语言圣经(Rust教程 Rust Course和配套练习)](https://course.rs/) 38 | - 推荐:[半小时快速了解Rust](https://fasterthanli.me/articles/a-half-hour-to-learn-rust) 39 | - 推荐:[Rust速查表(cheatsheet)](https://cheats.rs/) 该项目不仅提供了基础的语法速查,还有执行顺序详解和编写时需要关注的注意事项。项目还包含了示例代码(EX)、书籍(BK)、标准(STD)等相关资料的扩展。 40 | - 推荐:[清华计算机系大一学生2022暑期课程:Rust程序设计训练(有课程视频)](https://lab.cs.tsinghua.edu.cn/rust/) 41 | 42 | ## 课程实验: Rustlings 训练 43 | 44 | - [点我创建课程实验仓库](https://classroom.github.com/a/S8vP0lDr),采用Github Classroom模式的Rustling小练习,点击上述链接,形成自己的练习用repo。请记住您的 github 仓库名称,格式一般为 `LearningOS/2025s-rcore-${YourGithubName}`。 45 | 46 | - 要求:**必须完成** 。完成所有练习后,将本地修改提交到上一步创建的 git 仓库上,CI 会进行自动评测。要求小练习全部通过GithubClassroom的CI自动评测。 47 | 48 | - [学习系列视频:Rust中文社群线上学习室--通过 Rustlings 学 Rust](https://space.bilibili.com/24917186/video) 49 | 50 | ### 实验环境配置和快速上手 51 | 52 | 1. 在网络浏览器中用自己的 github id 登录 github.com。 53 | 54 | 2. 接收 [Rust-lang Lab Test based on Rustlings 的github classroom在线邀请](https://classroom.github.com/a/S8vP0lDr) ,根据提示一路选择OK即可。 55 | 56 | 3. 完成第二步后,你的rustings实验练习 的 github repository 会被自动建立好,点击此github repository的链接,就可看到你要完成的实验了。 57 | 58 | 4. 请参考您的仓库中的 README(示例[README](https://github.com/LearningOS/rustling-classroom-2025s-rustling-25S-template/blob/main/README.md))开始进行 rustlings 的环境配置和实验。 59 | 60 | 5. 提交。当做完部分或所有练习之后,执行 ``git add; git commit -m "$Your commit message"; git push`` 命令,把更新提交到GithubClassroom的CI进行自动评测。你可以在github仓库页面的actions页面,看到你的CI提交结果,或者在排行榜上面查看自己的评分。 61 | 62 | 6. 上述步骤有任何问题都可以找助教。 63 | 64 | 65 | ## 自学编程(可选,非必须要求) 66 | 67 | - (Option)[32 Rust Quizes](https://dtolnay.github.io/rust-quiz/1) 68 | 69 | - 要求:小练习全部通过。(**非必须完成**) 70 | 71 | - (Option)[exercisms.io 快速练习(88+道题目的中文详细描述)](http://llever.com/exercism-rust-zh/index.html) 72 | 73 | - 要求:大部分练习会做或能读懂。(**非必须完成**) 74 | - [exercism.io官方站点](https://exercism.io/) 75 | 76 | ### 自学Risc-v系统结构(大约2~7天) 77 | 78 | **第二阶段**的操作系统的课程实验基于 RISC-V 架构。推荐同学在完成 Rust 语言的基本学习后,参考下面资料,预习 Risc-v 架构的内容。 79 | 80 | 前提条件:要求有基本计算机组成原理,计算机系统结构基础。 81 | 82 | 阅读《计算机组成与设计(RISC-V版)》第一、二章,可以在整体结构上对 RISC-V 体系建立基本认知。再进行后面的学习比较有效果。 83 | 84 | #### 自学材料和练习要求: 85 | 86 | 1. 阅读书籍和在线课程 87 | 88 | - 自学[PPT for RISC-V特权指令级架构](https://content.riscv.org/wp-content/uploads/2018/05/riscv-privileged-BCN.v7-2.pdf) 89 | - 自学[RISC-V手册:一本开源指令集的指南](http://riscvbook.com/chinese/RISC-V-Reader-Chinese-v2p1.pdf) 重点是第10章 90 | - (Option)自学[RISC-V特权指令级规范](https://riscv.org/technical/specifications/) 重点是与OS相关的特权硬件访问的规范内容(Privileged Spec) 91 | - (Option)自学[RISC-V汇编手册](https://github.com/riscv-non-isa/riscv-asm-manual/blob/master/riscv-asm.md) 92 | - (Option)[计算机组成与设计:RISC-V 教材](https://item.jd.com/12887758.html) 这是完整的课程教材,不要求全部看完,请根据自己的需求选择。 93 | - (Option)[计算机组成与设计:RISC-V 浙大在线课程](http://www.icourse163.org/course/ZJU-1452997167) 这是完整的一门课,不要求全部看完,请根据自己的需求选择。 94 | 95 | 2. 其他参考学习信息 96 | 97 | - (Option)[Berkeley CS61C: Great Ideas in Computer Architecture (Machine Structures)](http://www-inst.eecs.berkeley.edu/~cs61c/sp18/) 98 | 99 | > Option的含义是:如果有足够的时间建议看看,否则在后续要用到时或需要查询进一步信息时再查阅这些内容。 100 | 101 | 3. 通过要求 102 | 103 | - 掌握RUST编程,理解RISC-V与OS相关的硬件特性(中断,异常,系统调用,寄存器,特权级,MMU...)。 104 | 105 | One More Thing:当你看到这,感觉第一阶段还没开始,还在想下一步要干啥时,我们的建议是:**Just Do It NOW!** 106 | -------------------------------------------------------------------------------- /2025-spring-scheduling-2.md: -------------------------------------------------------------------------------- 1 | # 2025年秋冬季开源操作系统训练营:第二阶段 2 | 3 | ## [专业阶段 - OS设计实现](https://opencamp.cn/os2edu/camp/2025spring/stage/2) 4 | 5 | - [新闻与纪要](./news.md) 6 | - [常见问题解答](./QA.md) 7 | - [Learning Resource](./relatedinfo.md) (训练营学习资源) 8 | - [直播教室](https://opencamp.cn/os2edu/camp/2025spring/stage/2) 9 | - [视频回放与课件](https://opencamp.cn/os2edu/camp/2025spring/stage/2?tab=video) 10 | - [实验指导书](https://learningos.cn/rCore-Camp-Guide-2025S/) 11 | 12 | - Online Ranking (训练营在线排行榜) 13 | - [rCore Tutorial 晋级榜单](https://opencamp.cn/os2edu/camp/2025spring/stage/2?tab=rank) 14 | - Classroom 15 | - [rCore Tutorial ClassRoom邀请链接](https://classroom.github.com/a/pTgmDIG6) (点击创建仓库) 16 | 17 | 18 | ## 第二阶段活动安排 19 | 20 | 基于Rust语言进行操作系统内核实验--based on qemu (三周时间) 21 | 22 | 前提条件:要求有操作系统的基础,基本理解RISC-V与OS相关的硬件特性 23 | 24 | 25 | 26 | ### 建立基于ClassRoom实验的具体步骤 27 | 28 | - [rCore Tutorial ClassRoom邀请链接](https://classroom.github.com/a/pTgmDIG6):点击后按提示可以建立自己的rCore Tutorial实验专用仓库 29 | - [rCore Tutorial ClassRoom排名页面](https://opencamp.cn/os2edu/camp/2025spring/stage/2?tab=rank):可以查看自己的rCore Tutorial实验的排名情况 30 | 31 | 请根据各个实验的具体实验要求在自己的仓库中完成 ch[3,4,5,6,8] 5个实验。请在每完成一个实验(完成编码和实验报告文档)后,请通过执行 `git push` 命令来更新自己的实验专用 repos,来通过基于GitHub Classroom的CI测试。 32 | 33 | ### 实验指导 34 | 35 | 基于Rust语言的rCore Tutorial实验指导 [rCore-Tutorial-Guide-2025S](https://learningos.github.io/rCore-Tutorial-Guide-2025S/) 36 | 37 | - [实验代码](https://github.com/LearningOS/rCore-Tutorial-Code-2025S) 38 | 39 | - [测试用例](https://github.com/LearningOS/rCore-Tutorial-Test-2025S) 40 | 41 | 请按照指导书了解实验内核并完成对应的任务。 42 | 43 | ### 课程参考 44 | 45 | - [课程幻灯片](https://www.yuque.com/docs/share/4c39608f-3051-4445-96ca-f3c018cb96c7) 46 | 47 | - 参考书 48 | 49 | - [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/) 50 | - [深入了解计算机系统](https://hansimov.gitbook.io/csapp/) 51 | - [RISC-V Reader中文版](http://riscvbook.com/chinese/RISC-V-Reader-Chinese-v2p1.pdf) 52 | - [rCore Tutorial Book v3](https://learningos.github.io/rCore-Tutorial-Book-v3/) 53 | 54 | - [rCore实验讲解视频](https://www.yuque.com/docs/share/1b5b9260-8a80-4427-a612-78ec72b37e5f) 55 | 56 | ### 总体学习要求和成绩考核方式 57 | 58 | 晋级要求: 59 | 60 | 1. 第二阶段排行榜满**500分** 61 | 2. 每个实验的总结报告 (`reports/lab[3,4,5,6,8].md`) 62 | 3. 第一、二阶段的学习blog (通过 PR 合并) 63 | 64 | 注意:需提供 **排行榜截图 + blog PR截图** 进行确认,通过检查后方可晋级第三阶段。 65 | 66 | 67 | ### 关于学习记录与 blog 68 | 69 | 每个阶段结束后需要写总结报告,第二阶段需要完成第一、二阶段的blog。 70 | 71 | - [学习记录的标杆1](https://github.com/LearningOS/record),浙江大学本科生徐文浩的2020开源操作系统训练营的过程记录,是大家学习的榜样,供大家学习参考。 72 | - [学习记录的标杆2](https://kiprey.github.io/tags/uCore/):湖南大学本科生肖政杭的自学ucore for x86的过程记录,是大家学习的榜样,供大家学习参考。 73 | 74 | 75 | ## 相关信息 76 | 77 | - [参加2020--2022 OS训练营学生的blog](https://rcore-os.github.io/blog/),鼓励参加2025 OS训练营的同学把自己在学习过程中的感悟/收获等写成blog,生成pr,并提交到 上,让更多人看到你的进步! 78 | - **注意** 为及时了解和指导同学的学习和实践情况并推动学生相互帮助,本次活动要求学生把每周学习实践的过程记录(Markdown格式)放在github上自己的公开repo中。可参见[每日学习实践的具体例子](https://github.com/GCYYfun/DailySchedule)和[2020年OS训练营同学的每日学习情况汇总](https://github.com/rcore-os/rCore-Tutorial/issues/18 ) 。请参加实习的同学把记录每天的进展的git repo网址 更新到[2025年OS训练营同学的每日学习情况汇总](https://github.com/LearningOS/rust-based-os-comp2025/issues/1) 中。要求每位同学在自己的git repo中记录自己的每周进展,其他同学也可以参考学习。 79 | - 提问方式: 80 | 81 | - 问答论坛:https://opencamp.cn/os2edu/bbs,欢迎大家积极发帖讨论 82 | - 在微信群中提问:如果长时间未得到回复可以手动 at 负责人 83 | - **注意**:有任何疑问,请优先查看 [常见问题](https://github.com/LearningOS/rust-based-os-comp2025/blob/main/QA.md),确认常见问题列表中不存在您的问题,再通过微信群@助教以及【问答论坛】等方式提问,常见问题列表会随着训练营的推进不断补充完善,感谢大家的参与和支持! 84 | 85 | 86 | One More Thing:当你看到这,感觉第二阶段还没开始,还在想下一步要干啥时,我们的建议是:**Just Do It NOW!** -------------------------------------------------------------------------------- /2025-spring-scheduling-3.md: -------------------------------------------------------------------------------- 1 | # 2025年春夏开源操作系统训练营:第三阶段 2 | 3 | ## [项目基础阶段 - 组件化操作系统](https://opencamp.cn/os2edu/camp/2025spring/stage/3) 4 | 5 | - [新闻与纪要](./news.md) 6 | - [常见问题解答](./QA.md) 7 | - [Learning Resource](./relatedinfo.md) (训练营学习资源) 8 | - [直播教室](https://opencamp.cn/os2edu/camp/2025spring/stage/3) 9 | - [视频回放与课件](https://opencamp.cn/os2edu/camp/2025spring/stage/3?tab=video) 10 | 11 | ## 第三阶段主要安排 12 | 13 | ### 课程介绍 14 | 15 | 第三阶段是第四阶段的准备阶段,主要为大家介绍组件化操作系统的基本思想与结构。 16 | 17 | 项目核心 project:[ArceOS 组件化内核](https://github.com/arceos-org/arceos) 18 | 19 | 核心思想:Combining Various Operating Systems Using OS-Reusable Components 20 | 21 | 在三周时间内为大家带来 9 次线上课程,介绍组件化 unikernel、宏内核与 hypervisor 三部分内容。 22 | 23 | ### 授课安排 24 | 25 | **为降低大家的上课压力,方便大家自行安排学习时间,本届训练营三阶段采用慕课授课的形式** 26 | - 课程将以录播的形式一次性全部放出在[视频链接](https://opencamp.cn/os2edu/camp/2025spring/stage/3?tab=video),并给出参考学习建议,大家可以自行安排时间学习。 27 | - 每周会根据当周学习安排布置相应的**挑战题目**,欢迎大家探索、参与。挑战题的参与、完成程度会作为最终的项目分配和评优的部分参考。 28 | - 参考学习安排: 29 | - 第一周:ArceOS Unikernel —— 3 课时 30 | - 第二周:ArceOS 宏内核 —— 3 课时 31 | - 第三周:ArceOS Hypervisor —— 3 课时 32 | 33 | ### 课程题目 34 | 35 | 实验仓库创建链接详见:https://classroom.github.com/a/BaLc7UDP 36 | 37 | 包括两类实验: 38 | 39 | 1. 每节课程都附带课后实验,对于这类实验,鼓励同学们自由讨论解决办法。完成情况不做考查。 40 | 2. 根据课程进度会发布挑战性的实验题目,要求独立完成,参与者按照完成顺序排名。 41 | 42 | ## 总体学习要求和成绩考核方式 43 | 44 | ### 关于晋级问题 45 | 46 | 第三阶段是第四阶段的准备阶段,原则上不淘汰,但仍需要在**2025 年 5 月 25 日**之前提交本阶段的总结 Blog。Blog 要求详见[相关信息](#相关信息),按要求提交即可晋级。 47 | 48 | #### 关于实验题目 49 | 50 | 三阶段所有实验,目的都是帮助大家学习和巩固,同学们自行决定是否去做,不是晋级条件。 51 | 52 | 53 | 54 | **注:** 第四阶段各个选题方向的导师可能会根据第三阶段的完成情况为大家分配项目任务,请有意选择第四阶段相关选题的同学着重完成第三阶段的相关内容,希望大家通过第三阶段的学习可以为第四阶段的项目实操打下一个好的基础。 55 | 56 | ## 关于学习记录与 blog 57 | 58 | 每个阶段结束后需要写总结报告,第二阶段需要完成第一、二阶段的blog。 59 | 60 | - [学习记录的标杆1](https://github.com/LearningOS/record),浙江大学本科生徐文浩的2020开源操作系统训练营的过程记录,是大家学习的榜样,供大家学习参考。 61 | - [学习记录的标杆2](https://kiprey.github.io/tags/uCore/):湖南大学本科生肖政杭的自学ucore for x86的过程记录,是大家学习的榜样,供大家学习参考。 62 | 63 | 64 | 65 | ## 参考资料 66 | 67 | ### 课程背景 68 | 69 | - [基于泛型独立组件构建各种领域OS](https://github.com/chyyuu/thoughts/blob/main/tangram-oskits.md) 70 | - [rCore Tutorial Kernel组件化初步探索](https://github.com/rcore-os/rCore-Tutorial-in-single-workspace) 71 | - [ArceOS: unikernel架构的组件化操作系统内核的初步探索](https://github.com/LearningOS/os-lectures/blob/master/oslabs/biglabs-list-2023.md) 72 | - [贾越凯博士论文的第四章:“unikernel架构ArceOS内核的设计与实现”](https://github.com/rcore-os/arceos/wiki/docs/main-20240524-62-91.pdf) 73 | 74 | ### 课程参考 75 | - ArceOS 相关项目地址 76 | - unikernel 项目主仓库 [arceos-org/arceos](https://github.com/arceos-org/arceos) 77 | - 宏内核项目主仓库 [oscomp/starry-next](https://github.com/oscomp/starry-next) 78 | - hypervisor项目主仓库 [arceos-hypervisor/axvisor](https://github.com/arceos-hypervisor/axvisor/) 79 | - 基于 ArceOS unikernel 实现的宏内核 [Starry-OS](https://github.com/Starry-OS/Starry-Old), 80 | - 2024年全国大学生计算机系统能力大赛-操作系统设计赛(全国)-OS功能挑战赛道 一等奖作品 81 | - 往届参考书 82 | - [简明 ArceOS Tutorial Book](https://rcore-os.cn/arceos-tutorial-book/) (部分代码结构已更新,仅供参考) 83 | - 往届课程视频&课件 84 | - ArceOS unikernel 相关 85 | - [2024春夏季开源操作系统训练营-项目一:ArceOS 单内核 Unikernel](https://opencamp.cn/os2edu/camp/2024spring/stage/3?tab=video) 86 | - [2023秋冬季开源操作系统训练营-项目一:ArceOS 单内核 Unikernel](https://opencamp.cn/os2edu/camp/2023fall/stage/2?tab=video) 87 | - [2023春夏季开源操作系统训练营:第三阶段 ArceOS](https://opencamp.cn/os2edu/camp/2023spring/stage/2?tab=video) 88 | - ArceOS 宏内核相关 89 | - [2024春夏季开源操作系统训练营-项目二:ArceOS 宏内核](https://opencamp.cn/os2edu/camp/2024spring/stage/4?tab=video) 90 | - [2023秋冬季开源操作系统训练营-项目二:ArceOS 宏内核](https://opencamp.cn/os2edu/camp/2023fall/stage/3?tab=video) 91 | - ArceOS hypervisor 相关 92 | - [2024春夏季开源操作系统训练营-项目四:Hypervisor虚拟化](https://opencamp.cn/os2edu/camp/2024spring/stage/6?tab=video) 93 | - [2023秋冬季开源操作系统训练营-项目四:Hypervisor虚拟化](https://opencamp.cn/os2edu/camp/2023fall/stage/5?tab=video) 94 | - [视频合集·从零开始用 Rust 语言实现一个 x86 hypervisor](https://space.bilibili.com/3493135044840333/channel/collectiondetail?sid=1118442&spm_id_from=333.788.0.0) 95 | - 对应课件:[RVM-Tutorial/wiki](https://github.com/equation314/RVM-Tutorial/wiki) 96 | 97 | - 参考书 98 | - [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/) 99 | - [深入了解计算机系统](https://hansimov.gitbook.io/csapp/) 100 | - [RISC-V Reader中文版](http://riscvbook.com/chinese/RISC-V-Reader-Chinese-v2p1.pdf) 101 | - [rCore Tutorial Book v3](https://learningos.github.io/rCore-Tutorial-Book-v3/) 102 | 103 | 104 | ## 相关信息 105 | 106 | - [参加2020--2022 OS训练营学生的blog](https://rcore-os.github.io/blog/),鼓励参加2025 OS训练营的同学把自己在学习过程中的感悟/收获等写成blog,生成pr,并提交到 上,让更多人看到你的进步! 107 | - **注意** 为及时了解和指导同学的学习和实践情况并推动学生相互帮助,本次活动要求学生把每周学习实践的过程记录(Markdown格式)放在github上自己的公开repo中。可参见[每日学习实践的具体例子](https://github.com/GCYYfun/DailySchedule)和[2020年OS训练营同学的每日学习情况汇总](https://github.com/rcore-os/rCore-Tutorial/issues/18 ) 。请参加实习的同学把记录每天的进展的git repo网址 更新到[2025年OS训练营同学的每日学习情况汇总](https://github.com/LearningOS/rust-based-os-comp2025/issues/1) 中。要求每位同学在自己的git repo中记录自己的每周进展,其他同学也可以参考学习。 108 | - 提问方式: 109 | 110 | - 问答论坛:https://opencamp.cn/os2edu/bbs,欢迎大家积极发帖讨论 111 | - 在微信群中提问:如果长时间未得到回复可以手动 at 负责人 112 | - **注意**:有任何疑问,请优先查看 [常见问题](https://github.com/LearningOS/rust-based-os-comp2025/blob/main/QA.md),确认常见问题列表中不存在您的问题,再通过微信群@助教以及【问答论坛】等方式提问,常见问题列表会随着训练营的推进不断补充完善,感谢大家的参与和支持! 113 | 114 | - 训练营剩余各阶段起止时间 115 | - 第三阶段(3周)2025/05/05 ~ 2025/05/23 组件化操作系统 116 | - 第四阶段(4周)2025/05/25 ~ 2025/06/22 项目实习,3 个选题方向 117 | * [ArceOS宏内核](https://opencamp.cn/os2edu/camp/2025spring/stage/5) 118 | * [Hypervisor虚拟化](https://opencamp.cn/os2edu/camp/2025spring/stage/6) 119 | * [基于协程异步机制的操作系统/驱动](https://opencamp.cn/os2edu/camp/2025spring/stage/7) 120 | 121 | 122 | One More Thing:当你看到这,还在想下一步要干啥时,我们的建议是:**Just Do It NOW!** 123 | 124 | 同时,欢迎大家参与 rCore 组织的 [discussions](https://github.com/orgs/rcore-os/discussions) 中的各种 OS 模块化相关的探索性质的小项目 125 | -------------------------------------------------------------------------------- /2025-spring-summary.md: -------------------------------------------------------------------------------- 1 | # 2025 年春夏季操作系统训练营信息汇总 2 | 3 | ## 总材料 4 | 5 | - 训练营 Github 主页:https://github.com/LearningOS 6 | - 训练营任务公告(公告内容会有更详细的关于每一阶段的说明) 7 | - [第一阶段公告](https://github.com/LearningOS/rust-based-os-comp2025/blob/main/2025-spring-scheduling-1.md) 8 | - [第二阶段公告](https://github.com/LearningOS/rust-based-os-comp2025/blob/main/2025-spring-scheduling-2.md) 9 | - 第三阶段公告:TODO 10 | - 常见问题:[QA](https://github.com/LearningOS/rust-based-os-comp2025/blob/main/QA.md) 11 | - 提问方式: 12 | - 问答论坛:https://opencamp.cn/os2edu/bbs ,欢迎大家积极发帖讨论 13 | - 在微信群中提问,如果长时间未得到回复可以手动 at 负责人 14 | - **注意**: 有任何疑问,请优先查看 [常见问题](https://github.com/LearningOS/rust-based-os-comp2025/blob/main/QA.md),确认常见问题列表中不存在您的问题,再通过微信群@助教以及【问答论坛】等方式提问, 常见问题列表会随着训练营的推进不断补充完善,感谢大家的参与和支持! 15 | 16 | ## 时间表 17 | 18 | 总时间:2025 年 3 月 30 日~2025 年 6 月 22 日,共 12 周 19 | 20 | - 第一阶段(2周):2025/3/30~2025/4/13,讲授 Rust 编程语言 & Rustlings 强化训练 21 | 22 | - 第二阶段(3周):2025/4/14~2025/5/4,讲授 rCore Tutorial OS 23 | 24 | - 第三阶段(3周):2025/5/5~2025/5/25 ,讲授组件化操作系统 ArceOS 设计 25 | 26 | - 第四阶段(4周):2025/5/26~2025/6/22,项目实习,共有 3 个选题方向 27 | 28 | ## 前置准备 29 | 30 | ### 知识储备 31 | 32 | 建议同学们有一定的编程语言基础。如果从未接触过编程语言,直接上手 Rust 可能稍有复杂,可以考虑先学习 C 语言等内容,培养编程思维。 33 | 34 | 35 | 36 | 对于操作系统不需要额外的知识储备,我们将从零基础开始进行介绍。 37 | 38 | 39 | 40 | ### 配置准备 41 | 42 | - 请保证您拥有一个 Github 账号,如果没有可以临时注册一个 43 | 44 | - 请在训练营平台上完善自己的 Github 账号 45 | - 在训练营网站 https://opencamp.cn 上进行登陆 46 | - 点击右上角 `个人中心` 按钮,进入个人中心 47 | - 点击 `编辑个人信息`,或者访问 https://opencamp.cn/my/edit ,找到 `GithubName` 栏目,添加您的 Github 账号 48 | - 开发环境最好是 Linux 环境,后续可能会上线 Github Classroom 支持 49 | 50 | ## 第一阶段学习 51 | 52 | ### 阶段介绍 53 | 54 | 本阶段是 Rust 编程语言学习,我们将在课堂上讲解 Rust 语言,并提供了 Rustlings 强化训练,帮助大家了解、学习 Rust 这一门新兴但热门的语言。 55 | 56 | 57 | 58 | ### 课程资料 59 | 60 | - 课堂入口:https://opencamp.cn/os2edu/camp/2025spring/stage/1 61 | - `学习视频`可以查看每次课堂的回放录屏和相关的课程文件 62 | - `晋级榜单`可以查看自己的作业得分和当前所有人的晋级情况 63 | 64 | - 学习资料: 65 | 66 | - 往年的训练营课程回放:https://opencamp.cn/os2edu/camp/2024fall/stage/1 67 | 68 | - 推荐:[Rust语言圣经(Rust教程 Rust Course和配套练习)](https://course.rs/) 69 | 70 | - 推荐:[半小时快速了解Rust](https://fasterthanli.me/articles/a-half-hour-to-learn-rust) 71 | 72 | - 推荐:[Rust速查表(cheatsheet)](https://cheats.rs/) 该项目不仅提供了基础的语法速查,还有执行顺序详解和编写时需要关注的注意事项。项目还包含了示例代码(EX)、书籍(BK)、标准(STD)等相关资料的扩展。 73 | 74 | - 推荐:[清华计算机系大一学生2022暑期课程:Rust程序设计训练(有课程视频)](https://lab.cs.tsinghua.edu.cn/rust/) 75 | 76 | - 欢迎联系阿图教育,加入学习群和大家一起讨论 77 | 78 | ![img](https://opencamp.cn/_next/image?url=https%3A%2F%2Foss.opencamp.cn%2Ffile%2F20250314%2F20250314_534313.jpg&w=828&q=75) 79 | 80 | - Rustlings 训练作业 81 | 82 | - 仓库创建链接:https://classroom.github.com/a/S8vP0lDr 83 | 84 | - 点击该链接,接受邀请之后即可创建一个属于你的 Rustlings 训练仓库 85 | 86 | - 在该仓库上进行提交,便会通过 CICD 来 评分并且同步在比赛平台的排行榜:https://opencamp.cn/os2edu/camp/2025spring/stage/1?tab=rank 87 | 88 | - 如何开始训练:参考 [春夏季第一阶段公告](https://github.com/LearningOS/rust-based-os-comp2025/blob/main/2025-spring-scheduling-1.md) 进行环境配置和训练 89 | 90 | ### 晋级条件 91 | 92 | 排行榜【晋级榜单链接】:https://opencamp.cn/os2edu/camp/2024fall/stage/1?tab=rank 93 | 94 | 1. 完成110道Rustling编程题,排行榜达到满分 110 分 95 | 96 | 2. 然后**将含本次训练营分数的自己的个人中心界面( https://opencamp.cn/my )截图发给群内阿图教育账号**,由老师拉进群。一个示例如下: 97 | 98 | ![img](https://ssl.cdn.maodouketang.com/FqPjreit1li_0LXjeL4ErHvqsHwX) 99 | 100 | > 补充:**如果在个人中心没有找到训练营成绩**,请进入 https://opencamp.cn/my/edit 后,在 GithubName 一栏填写自己在 GitHub 的用户名。提交后,还需要在您的 Rustlings 重新产生一个新的提交,才能覆盖掉之前的成绩。 101 | 102 | ## 第二阶段学习 103 | 104 | ### 阶段介绍 105 | 106 | 本阶段开始我们将会讲授 rCore-Tutoril-OS。它是由清华大学开发的、使用 Rust 编写的教学用内核。我们将会从这个内核开始,一步步带领大家熟悉内核、了解内核,上手内核的开发过程。课程详细信息请查看 [第二阶段公告](./2025-spring-scheduling-2.md)。 107 | 108 | 109 | 110 | ### 课程资料 111 | 112 | - 课堂入口:https://opencamp.cn/os2edu/camp/2025spring/stage/2 113 | - `学习视频`可以查看每次课堂的回放录屏和相关的课程文件 114 | - `晋级榜单`可以查看自己的作业得分和当前所有人的晋级情况 115 | - rCore 训练 116 | - 仓库创建链接:https://classroom.github.com/a/pTgmDIG6 117 | - 点击该链接,接受邀请之后即可创建一个属于你的 rCore 训练仓库 118 | - 在该仓库上进行提交,便会通过 CICD 来 评分并且同步在比赛平台的排行榜:https://opencamp.cn/os2edu/camp/2025spring/stage/2?tab=rank 119 | - 请按照 [rCore 实验指导书](https://learningos.cn/rCore-Camp-Guide-2025S/): 进行环境配置和实验。 120 | 121 | - 学习资料: 122 | 123 | - 往年的训练营课程回放:https://opencamp.cn/os2edu/camp/2024fall/stage/2 124 | 125 | - rCore 实验指导书:https://learningos.cn/rCore-Camp-Guide-2025S/ 126 | 127 | > 注意:https://rcore-os.cn/rCore-Tutorial-Book-v3/index.html 是一部更加详细的指导书,但它里面所用的内核版本以及作业内容不是本次训练营的目标。同学们可以参考该指导书进行扩展学习,但是代码和任务仍然以 https://learningos.cn/rCore-Camp-Guide-2025S 为准 128 | 129 | 130 | 131 | ### 晋级条件 132 | 133 | 晋级需要满足如下条件: 134 | 135 | 1. 完成全部5个实验,获得**满分500分**。需要完成的 5 个 rCore 实验分别在【3/4/5/6/8】5个章节的`chapterX 练习`部分,如第 3 章的练习位于 [这里](https://learningos.cn/rCore-Camp-Guide-2025S/chapter3/5exercise.html/)。必须按指导书【要求的文件名】添加实验报告后才会通过测试。 136 | 2. 提交学习博客PR。可以参考[参加往届 OS 训练营学生的 Blog](https://rcore-os.github.io/blog/),鼓励参加2025 OS训练营的同学把自己在学习过程中的感悟/收获等写成blog,生成pr,并提交到 https://github.com/rcore-os/blog 上,让更多人看到你的进步!**提交博客pr是第二、三、四阶段的必要要求**。 137 | 3. 发送截图信息给老师(同第一阶段) 138 | 139 | 140 | 141 | ### 参考资料 142 | 143 | 进入第二阶段,之前的组队仍然可以继续,如果之前没有组队也欢迎这个阶段新建组队。第三阶段会根据项目实习导师要求,不同导师可能要求不同,届时不再以组队方式进行学习。 144 | 145 | - 对于第一节课的学习,可以参考以下学习记录:https://mp.weixin.qq.com/s/hLsKow_Zj_NEuNXZhCe5Vg 146 | 147 | - 对于第二节课的学习,可以参考:https://mp.weixin.qq.com/s/RbT6Yt88EsTglkheHEUgIQ 148 | - 对于整个阶段的学习记录也可以参考:https://unruliness.notion.site/Rust-and-rcore-OS-c089695a75e44f54bb387dc23db97ff6 149 | 150 | 大家可以多多写记录进行分享。 151 | 152 | ## 第三阶段学习 153 | 154 | TODO 155 | 156 | 157 | ## 参考资料 158 | 159 | - 训练营 Github 主页:https://github.com/LearningOS 160 | 161 | - 提问方式: 162 | 163 | - 问答论坛:https://opencamp.cn/os2edu/bbs ,欢迎大家积极发帖讨论 164 | - 在微信群中提问,如果长时间未得到回复可以手动 at 负责人 165 | - **注意**:有任何疑问,请优先查看 [常见问题](https://github.com/LearningOS/rust-based-os-comp2025/blob/main/QA.md),确认常见问题列表中不存在您的问题,再通过微信群@助教以及【问答论坛】等方式提问,常见问题列表会随着训练营的推进不断补充完善,感谢大家的参与和支持! 166 | 167 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /QA.md: -------------------------------------------------------------------------------- 1 | # 2025 年春夏季训练营常见问题收集 2 | ## 配置环境、入门相关 3 | 1. 我不会用 Linux 命令行 / Git? 4 | 5 | - Linux教程 https://101.lug.ustc.edu.cn 6 | - Git教程 https://liaoxuefeng.com/books/git/introduction/index.html 7 | 2. 安装 Rustlings 时报错 error: linker `cc` not found 8 | 9 | 安装build-essential和libclang-dev。具体命令与你的 Linux 发行版有关,例如 Ubuntu 是 10 | ```sh 11 | sudo apt-get install build-essential libclang-dev 12 | ``` 13 | 14 | 3. 推荐使用什么系统参加实验? 15 | 16 | 虽然 Rustlings 可在各平台运行,但后续阶段的实验只能在 Linux 运行。特别地,推荐 Windows 用户直接使用 WSL2 功能,这是大部分同学和老师的环境,遇到问题更方便解答。 17 | 18 | 4. WSL2 安装失败怎么办? 19 | 20 | 要打开 hyper-v,适用于linux的windows子系统等几个功能,见 21 | - https://blog.csdn.net/m0_62815143/article/details/141285504 22 | - https://blog.csdn.net/weixin_72451481/article/details/140964676 23 | 24 | ## 授课常见问题 25 | 1. “进入教室”的按钮为灰色无法点击? 26 | 27 | 先点左侧的“课程签到”再点击“进入教室” 28 | 29 | 2. 上课了,但是教室里是白屏且没有老师,怎么办? 30 | 31 | 不同阶段/项目有不同的教室,请确认当前阶段和地址栏链接是否正确。另外如果自查没问题,请在群里及时反馈,可能是平台出现了问题。 32 | 33 | 3. 进入教室提示“进入教室失败,聊天功能受限,请刷新页面重试”怎么办? 34 | 35 | 没有影响,直接刷新页面即可,不影响上课 36 | 37 | 4. 我满分了,但组队界面没显示晋级,有影响吗? 38 | 39 | 组队界面的“晋级”提示是所有人都晋级才会出现。晋级以个人为单位,就算队伍没晋级,也不受影响。组队功能只是鼓励同学们相互帮助,不作强制要求。 40 | 41 | 5. 上课结束后,没看到录播怎么办? 42 | 43 | 录播需要一定时间转码。可以在群里联系助教上传录播。 44 | 45 | ## 导学阶段常见问题 46 | 1. 这个组队是干啥的? 47 | 48 | 为了更好地发挥小组学习的互相促进作用,我们鼓励大家根据高校/城市来组队学习。学员可以自愿组队,不强制要求每个人必须参加组队。作为组队的队长,有责任协助所在学习小分队的成员完成学习任务。 49 | 50 | 我们鼓励推崇组内合作共同进步,因此只要队长所在小组的全体成员都能成功晋级,作为队长将会给予特别奖励,具体奖励办法会在队长小群里讨论公布,希望接下来还有更多学习小分队组建成立。 51 | 52 | 高校报名的学生鼓励提前组队磨合,训练营的组队人数每个队3-6人为宜。 53 | 54 | 2. 导学阶段的要求是啥?需要做实验吗? 55 | 56 | 导学阶段没有实验要求。公告的 Rustlings 实验是第一阶段内容,非导学阶段内容。第一阶段在9月29日开始,10月20日结束。关于实验的更多信息可以参考下面的 第一阶段常见问题 章节。 57 | 58 | 我们也鼓励学有余力的同学预习实验、观看导学阶段课程:https://opencamp.cn/os2edu/camp/2024fall/stage/0?tab=video 59 | 60 | 3. 前两个阶段不用组队吧? 61 | 62 | 组队不是强求的。组队的目的是促进小组内的互助学习,只要有人做founder,现在(从第一阶段开始之前)就可以开始填表来发起组队。 63 | 64 | 第三个阶段为项目实习,要听实习导师安排,不需要组队。 65 | 66 | 4. 如何才能参加项目实习? 67 | 68 | 要晋级到第三阶段才能参加项目。第三阶段是跟着项目选题走,不需要组队,由选题方向的负责人来统一安排实习内容和分组成员。第三阶段有点类似本科毕业了提前进入导师课题组。 69 | 70 | 5. 可以邀请我的同学或同事入群组队吗? 71 | 72 | 欢迎邀请同学或同事组队,本次训练营可以在网站上直接复制邀请链接进行邀请。邀请数量足够多的同学还可以获得一定的奖励哦。 73 | 74 | 6. 第三阶段可以当实习经历吗,还是说可以直接当毕设? 75 | 76 | 可以看看有目前的进展和选题,难度应该足够做为本科毕设。第三阶段有条件来北京或其他合作单位(国汽智联创新中心、济南泉城实验室等)的同学,可以作为校外实习,需要单独沟通实习协议。 77 | 78 | 关于是否可以当做毕设,向勇老师回复:在2022年和2023年主持开源毕设,这里有当时同学结果分享,需要做毕设的可以参考:https://shimo.im/docs/J9kWJRjYVyqhvJyD。后续向勇老师还会发布今年的开源毕设相关信息。有兴趣的同学可以关注群里消息。 79 | 80 | 7. 请问本训练营前置知识或者基础水平是怎么样的? 81 | 82 | Rust 可以是零基础,但编程最好有一门系统语言(C/C++语言)的基础。硬件方面预学习资料是 RISC-V 体系架构,可以提前做预习。参考陈渝老师给的链接: https://github.com/LearningOS -> Self Learning 83 | 84 | 我相信,如果您有一定的其他架构基础,如x86,aarch64,mips或者loongarch等架构的了解,这部分的知识对您而言应当不是非常困难。如果您对此没有相关基础,相比于其他硬件架构,riscv架构也足够简单,可以作为基本的入门学习使用。 85 | 86 | 8. 推荐学员的学习笔记 87 | 88 | RISC-V: 跟着清华训练营从零打造OS第一课:https://mp.weixin.qq.com/s/hLsKow_Zj_NEuNXZhCe5Vg 89 | 90 | 9. 导学阶段课程内容介绍 91 | 92 | - 导学阶段的课程视频也在训练营网站上https://opencamp.cn/os2edu/camp/2024fall/stage/0?tab=video。 93 | 主要内容为清华大学本科生操作系统课程,主要目的为在开课前希望大家对操作系统一些基本概念有一定的了解。建议观看一遍,但是我们并不会对其进行考察。 94 | 95 | - 训练营的同学也可以参考:https://github.com/LearningOS/os-lectures/。 96 | 97 | - 非常感谢刘恒意同学的针对清华大学操作系统课程的资料整理,在上述基础上做了一版mdbook格式的文档资料:https://lzzsg.github.io/Tsinghua-OS-mdbook/lec1/p5-tryunix.html。 98 | 99 | 10. 证书发放问题 100 | 101 | 本次训练营总共分为四个阶段(不包括正式开营前的导学阶段)。当通过了所有阶段,会为同学们发放最终证书。希望各位好好努力哦 102 | 103 | ## 第一阶段常见问题 104 | 1. rustling第一阶段什么难度? 105 | 106 | 晋级的往届学员,平均投入10小时就可完成110分,最快的学员3-4小时,慢一些的大约需要投入15-20个小时。另外,仓库的路径字典序不代表题目难度顺序。建议同学参考仓库的 exercises 目录下README.md文档中的顺序做题(从 structs 一节开始)。 107 | 108 | 2. rustling怎么检验呢 ? 109 | 110 | 可以提前本地试一试,提交成功会进入下一题,正式开营后需要从classroom认领作业再提交,这样的成绩评分才会出现在本期训练营排行榜上。 111 | 112 | 3. 全程自己一个人可以到第三阶段吗? 113 | 114 | 可以 115 | 116 | 4. 今年秋冬季训练营第一阶段晋级要求是什么? 117 | 118 | 第一阶段晋级要求是完成 110题达到满分才能晋级到第二阶段。 119 | 120 | 5. 这个没有晋级的话就只能等下一轮的训练营吗?还是整个训练营期间满分了就可以晋级? 121 | 122 | 后者,想学不嫌晚。训练营期间满分后都可以晋级(晋级也可以继续旁听,即进入下一阶段的微信群)。 123 | 124 | 6. 以往的晋级率是怎样的? 125 | 126 | 最近六届第一阶段升第二阶段的晋级率如下: 127 | - 2022春夏季:188人 -> 47人,晋级率 25% 128 | - 2022秋冬季:274 人 -> 102 人,晋级率 37% 129 | - 2023春夏季:283人 -> 128人,晋级率45% 130 | - 2023秋冬季:1529人 -> 583人,晋级率38% 131 | - 2024春夏季:2533人 -> 387人,晋级率15% 132 | - 2024 秋冬季:4116 人 -> 677 人,晋级率 16.4% 133 | 134 | 最近四届加入了第三阶段,从第二阶段到第三阶段的晋级率如下: 135 | - 2023春夏季:128人 -> 26人,晋级率20% 136 | - 2024秋冬季:583人 -> 84人,晋级率14% 137 | - 2024春夏季:387人 -> 59人,晋级率15% 138 | - 2024 秋冬季: 677 人 -> 125 人,晋级率 18.5% 139 | 7. 一阶段Rustling写完了,剩余时间干什么? 140 | 141 | 看RISC-V的文档提前熟悉不同特权级的概念和指令集。正常进度就是前三周之后第一阶段结束,如果跟不上到时可以先听第二阶段课程,但只有完成两个阶段晋级任务后才可以进入第三阶段项目课题组进行项目实习。 142 | 143 | 8. 开源操作系统训练营的管理要求 144 | 145 | 在第一阶段,下面的内容不做强制要求,但是从第二阶段开始便会对 Blog 提出要求。 146 | - 代码提交记录:完成练习和实验时的代码和注释 147 | yunwei37的参考样例:https://github.com/yunwei37/os-summer-of-code-daily 148 | - 进展日志:记录自己的进展、收获、遇到的问题 149 | 项晨东的参考样例:https://github.com/OS-F-4/usr-intr/tree/main/ppt 150 | - 总结报告:向训练营blog提交总结报告(见下问) 151 | 训练营 blog 提交库的链接:https://github.com/rcore-os/blog 152 | - 朱威浦的参考样例: 153 | https://github.com/bit-mips/about-contest/blob/master/%E5%A4%A7%E8%B5%9B%E5%BF%83%E5%BE%97%E6%80%BB%E7%BB%93.md 154 | 155 | 9. 关于如何写总结报告 156 | 157 | 在训练营第二、三、四阶段结束后,都需要将自己在这一阶段的收获形成一份总结报告提交到https://github.com/rcore-os/blog 这个仓库,总结报告是进入下一阶段的必要条件。 158 | 159 | >(注1:这个rcore-os/blog仓库,同学们没有提交权限,需要按照README.md文档中的说明,fork仓库到本地并修改之后,向该仓库提交pr,并找助教审核,如果长时间没有审核,请联系助教,如果提交存在问题,也可以联系助教) 160 | 161 | 另外我们鼓励同学们自行撰写学习记录,并在 [学习进展提交链接](https://github.com/LearningOS/rust-based-os-comp2025/issues/1) 提交相关链接。 162 | 163 | > 注2:日常学习记录和总结报告不能混为一谈,前者是每日/周学习记录,后者是一个阶段的最终总结) 164 | 165 | 我们会在总结报告blog中,挑选出部分优秀的报告,放在训练营主页上进行推荐。 166 | 167 | 10. Rustlings怎么开始练习? 168 | 169 | 参考公告 [2025 春夏季训练营公告](./2025-spring-scheduling-1.md)进行第一阶段的学习,该链接也可以从群公告获取。 170 | 171 | 11. 优胜队伍相关 172 | 173 | 已经组队的各位同学可以在https://opencamp.cn/os2edu/camp/2025spring/stage/1?tab=team上面看到组队晋级标志,对于全队成员均晋级的队伍,队长可以联系一下 @阿图教育 加入优胜队长群,帮助全部队员完成晋级的队长可以获得一份奖品。(注,只有人数大于1的组队才算是有效组队) 174 | 175 | 12. 为什么晋级榜单上没有自己的名字 176 | 177 | 请按照如下顺序进行检查: 178 | 1. 请确保 github 上仓库的 CICD 是否正常运行,并且返回一个绿色的✅。如果没有的话请根据 CI log 检查是否报错。 179 | 2. 请确保您在训练营平台上填写了您的 github 用户名。请进入 https://opencamp.cn/my/edit 后,在 GithubName 一栏填写自己在 GitHub 的用户名。提交后,还需要在您的 Rustlings 重新产生一个新的提交,才能覆盖掉之前的成绩。 180 | 181 | 182 | 13. 排行榜上的名字是一串字母,不是账号填写的姓名? 183 | 184 | 请进入 https://opencamp.cn/my/edit 后,在 GithubName 一栏填写自己在 GitHub 的用户名。提交后,还需要重新 git commit + git push 产生一个新的提交,才能覆盖掉之前的成绩。 185 | 186 | 14. 排行榜上我的成绩重复了,有影响吗? 187 | 188 | 没有影响。这是目前网站的一个小问题,可能时注册了多个账号或者先提交成绩再(按问题2)绑定账号造成的。助教老师会之后手动去重。 189 | 190 | 15. 排名会对成绩有影响吗? 191 | 192 | 没有影响。只要达到晋级要求即可,不会区分同学完成任务的时间早晚。 193 | 194 | 16. 更新了代码,为什么成绩没有更新? 195 | 196 | 排行榜成绩只取最高值,同分时取最早的提交时间点显示。如产生新的提交后得分不变,则不会更新。 197 | 198 | 17. 为什么本地做完了题目,提交时没有通过? 199 | 200 | Rustlings 要求每次做完一个测试时删掉代码中的 // I AM NOT DONE 注释。请检查自己的代码。 201 | 202 | 18. 本地测试没问题,但提交时却少了几分? 203 | 204 | 1. 请检查自己的 GitHub 远端代码仓库,找到 Actions 页面,然后点击最新的 workflow run 进入(在绿色的√那里) 205 | 206 | 2. 然后点击唯一的一个 Jobs(Autograding)进入,打开 Run yfblock/os-autograding@master 一栏,其中标注了每一栏的成绩和出错的题。 207 | 208 | 19. 在线测试也满分了,但排行榜上还是不对,怎么办? 209 | 210 | 有可能是训练营网站bug导致,可将截图和链接发到群里寻求帮助。 211 | 20. clippy2 测例为什么做对了但提交不通过? 212 | 213 | clippy 系列偶发问题,可以对 CICD Re-run all jobs 重新评测即可。或者也可以提交一个新的 commit (如任意文件加一个空格),再次触发评测 214 | 21. tests7 测例为什么做完了没法通过? 215 | 216 | 看代码注释,需要改同文件夹下 build.rs 文件,并且需要和 tests8 测例的要求一起完成。 217 | 22. 为什么我的总题目数量和别人的不一样? 218 | 219 | 请参照群公告加入 GitHub Classroom 生成自己的仓库,不要使用原版的 Rustlings。 220 | 221 | ## 第二阶段常见问题 222 | 1. 晋级要求是啥,五个实验+报告吗? 223 | 224 | 第二阶段排行榜满500分,加第二阶段学习blog,截图发给阿图教育 225 | 226 | 2. rCore-Tutorial 代码,如何提交结果并评测 ? 227 | 228 | 请在根目录下提交你的代码到 github 仓库,即会在 CICD 进行评测。 229 | 230 | 3. 完成代码后,如何进行本地测试? 231 | 232 | 参考实验指导书 https://github.com/LearningOS/os-rcore-classroom-2025s-rcore-rCore-Camp-Code-2025S?tab=readme-ov-file#grading 一节。 233 | ```sh 234 | cd ci-user && make test CHAPTER=$ID 235 | # ID 为目前待测章节,如 3,4,5 236 | ``` 237 | 238 | 这个命令会 clone 评测脚本仓库到项目目录的 ci-user 文件夹,以及用户程序测例程序到项目目录的 ci-user/user 文件夹,切换到被测分支,即可进行本地测试(本地测试的过程与同学向 GitHub 远程仓库提交之后触发的 action 评测流程基本是一致的,通过本地测试即可排查错误,建议在提交评测之前先进行本地自测。我们默认晋级第二阶段的同学有一定的 git 知识,没有在指导书里再额外说明这些修改 239 | 240 | 4. 尝试本地运行的时候 QEMU 卡住不输出怎么办? 241 | 242 | 优先考虑 QEMU 版本问题,见指导书 https://learningos.cn/rCore-Camp-Guide-2025S/0setup-devel-env.html#qemu 一节的说明 ,我们推荐使用 QEMU 7.0.0 版本进行实验。 243 | 244 | 5. 本地运行 ci-user 中的脚本进行测试时,输出结果都对,但OK后的数字串不对导致不通过怎么办? 245 | 246 | 可能是由于 hash 值不一致导致的误判。请优先检查自己的代码输出,确认输出无误后,可以尝试删除 ci-user 目录,重新 git clone 拉取后重新进行评测 247 | 248 | 6. 第二阶段开始需要提交blog,blog是什么? 249 | 250 | 每个阶段结束后需要写总结报告,第二阶段需要完成第一、二阶段的blog。 251 | 252 | 总结报告和每个实验的实验报告是两回事,都需要完成。 253 | 254 | 7. ch3完成后排行榜没有显示分数怎么办? 255 | 256 | 如果 Actions 中 basic-test 阶段失败:检查是否有实验报告文件 reports/lab1.md,或者本地使用 README.md 提供的 Grading 方法测试。 257 | 258 | 否则检查自己的 Actions 的具体报错是什么,如果自己无法解决可以截图发到群里。 259 | 260 | 8. 如何配置 Docker 开发环境 261 | 262 | 1. 拉取 Docker 镜像 263 | ```sh 264 | docker pull wangben18/rcore-tutorial-v3:v0.1.0 265 | ``` 266 | > 如果拉取镜像速度慢,可以考虑使用代理,请参考文档 [Docker pull 代理](https://www.lfhacks.com/tech/pull-docker-images-behind-proxy/) 和 [官方文档](https://docs.docker.com/engine/daemon/proxy/#systemd-unit-file) 267 | 268 | 269 | 2. 运行 Docker 容器:以 ch3 为例,请执行如下指令: 270 | ```sh 271 | # 拉取仓库 272 | git clone $YOUR_REPO_URL -b ch3 273 | 274 | # 进入仓库 275 | cd $YOUR_REPO_NAME 276 | 277 | DOCKER_NAME=wangben18/rcore-tutorial-v3:v0.1.0 make docker 278 | 279 | # 在 Docker 容器内 280 | 281 | # 设置 git 信任目录 282 | git config --global --add safe.directory /mnt 283 | 284 | # 运行 rCore-Tutorial-OS 285 | cd os && make run 286 | ``` -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Open-Source OS Training Comp 2025 2 | 3 | Welcome to Open-Source OS Training Comp 2025(欢迎加入 2025 年开源操作系统训练营) 4 | 5 | ## 重要信息 6 | - 2025.3.19:发布2025年春夏季开源操作系统训练营[**重要信息**](./2025-spring-summary.md),请仔细阅读。 7 | - 2025.3.15:2025年春夏季开源操作系统训练营准备中。 8 | 9 | ## 历史 10 | - [open-source os training comp 2024](https://github.com/LearningOS/rust-based-os-comp2024) 11 | - [open-source os training comp 2023](https://github.com/LearningOS/rust-based-os-comp2023) 12 | - [open-source os training comp 2022](https://github.com/LearningOS/rust-based-os-comp2023/tree/comp2022) 13 | - [open-source os training comp 2021](https://github.com/rcore-os/rCore/wiki/os-tutorial-summer-of-code-2021) 14 | - [open-source os training comp 2020](https://github.com/rcore-os/rCore/wiki/os-tutorial-summer-of-code-2020) 15 | 16 | ## 开源社区负责人 17 | - 李明 微信id:limingth 18 | 19 | ## 技术指导委员会 20 | 21 | - 陈向群 22 | - 吴庆波 23 | - 潘爱民 24 | - 张汉东 25 | - 赵霞 26 | - 曹东刚 27 | - 李栋 28 | - 向勇 29 | - 陈渝 30 | - 李国良 31 | - 任炬 32 | 33 | ## 支持与合作单位 34 | 35 | - [唐图(rCore-OS)开源社区](https://github.com/rcore-os) 36 | - [木兰开源社区](https://portal.mulanos.cn) 37 | - CCF开源发展委员会 38 | - CCF系统软件专业技术委员会 39 | - 清华大学 40 | - 北京工商大学 41 | - 国防科技大学 42 | - CSDN 43 | - 阿图教育 44 | - 鹏城实验室 45 | - 启元实验室 46 | - 中关村实验室 47 | - 之江实验室 48 | - 阿里云 49 | - 华为 50 | - 智谱 ai 51 | - 101 计划操作系统课程虚拟教研室 52 | - [上海大学开源社区](https://github.com/shuosc/) 53 | -------------------------------------------------------------------------------- /news.md: -------------------------------------------------------------------------------- 1 | # 2023 年开源操作系统训练营的新闻与活动纪要 2 | 3 | # 以往开源操作系统训练营的新闻与活动纪要 4 | - 2023.04.01:2023 年春夏季开源操作系统训练营正式启动。 5 | - 2023.03.23:请参加的同学填写[训练营报名登记表](http://chyyyuuu.mikecrm.com/2zxG8dp),并加入相关微信群。 6 | - 2023.03.19: 2023 年春夏季开源操作系统训练营启动&报名交流会,会议时间:2023/03/25 11:00-12:00 ,#腾讯会议号:231-190-126 会议密码:0325。请报名的同学参加。 7 | - 2023.02.05:[组件化操作系统设计与实现的相关题目](https://github.com/chyyuu/thoughts/blob/main/task-list.md),欢迎感兴趣的朋友联系我们。 8 | - 2023.02.05:[2022 秋冬季训练营总结会&组件化操作系统设计与实现技术交流会-part2](https://meeting.tencent.com/v2/cloud-record/share?id=b2bd335e-c3fb-4169-8558-7621c71dfb75&from=3&is-single=true) 9 | - 2023.02.02:[组件化操作系统设计与实现技术交流会-part1](https://meeting.tencent.com/v2/cloud-record/share?id=af9f763c-a862-4dd4-9552-7061b1355b0d&from=3) 10 | - 2023.02.01:2022 秋冬季训练营第二阶段学习结束,[通过第二阶段的学员名单和项目列表](stage2-passed.md)。 11 | - 2022.11.04:到目前为止,参与训练营的学员在 https://github.com/LearningOS 上创建了**2000 多个 public/private gitclassroom repos**。 12 | - 2022.11.01:2022 秋冬季训练营启动交流会,会议时间:2022/11/01 20:00-21:00 ,#腾讯会议号:838-197-763。请报名的同学参加。[视频回放](https://meeting.tencent.com/v2/cloud-record/share?id=00e0e809-1e03-4f41-8e6a-4e71c0ca1342&from=3) 13 | - 2022.10.16:2022 秋冬季训练营开始招生(报名时间段 2022.10.16 ~ 2022.10.30),请在[报名登记处](https://github.com/LearningOS/rust-based-os-comp2022/issues/101) 填写相关个人信息,并加入[相关微信群](./wechat1016.png)。(如加不了微信群,请写“OS训练营”联系助教许善朴 微信号id: bitmeet520 帮助加入。另外,如果你有时间,其实不用等待报名结束,现在就可以开始基于[第一阶段](./2023-spring-scheduling-1.md)安排进行自学&自我训练--这就是训练营的主要内容) 14 | - 2022.10.01:2022 秋冬季训练营筹备中,正在准备 2022 年开源操作系统训练营的第一/二阶段安排:[**Stage1 SCHEDULING**](./2023-spring-scheduling-1.md) & [**Stage2 SCHEDULING**](https://github.com/LearningOS/oscomp-kernel-training)。 15 | - 2022.09.28:[oscomp-kernel-training Github Class Room](https://github.com/LearningOS/oscomp-kernel-training)上线,基于全国大学生操作系统比赛内核挑战赛内容,提供编写支持 Linux App 的操作系统在线训练,在[学习资源](./relatedinfo.md)中增加清华大学计算机系暑期Rust编程课的信息。 16 | - 2022.09.10:祝贺[完成暑期训练营的学员](./excellent-students-2022summer.md)完成最终技术报告,并将获得训练营证书。到目前为止,参与训练营的学员创建了**1000 多个 public/private gitclassroom repos**。 17 | - 2022.08.07:形成三个微信群:训练营异步操作系统、训练营操作系统探索、训练营rcore/zcore,建立部分classroom, 进行有针对性的讨论,开展相关项目。 18 | - 2022.08.06:目前接触并创建rCore Tutorial OS Classroom突破400人次。下午两点交流各位同学的第二阶段项目分组,大致确定要做的事情。 19 | - 2022.08.05:从08.01~08.05,每晚8:30一个zCore技术报告,共完成5个zCore系列报告。 20 | - 2022.08.01:训练营第二阶段开始,中午12点前公布进入[第二阶段人员名单](./lab3-os5-passed.md),晚上19:30召开“训练营第一阶段总结&第二阶段启动会”,晚上20:30开始技术报告。 21 | - 2022.07.30:[训练营第一阶段结束的调查问卷](https://www.wjx.cn/vm/w8a5pG0.aspx)发布;第二阶段技术交流报告日程安排发布 22 | - 2022.07.15: [训练营在线排行榜](https://os2edu.cn/grading/)发布 23 | - 2022.07.05:晚上 20:30, 基于腾讯会议召开"开源操作系统学习训练营开幕式" 24 | - 2022.07.04:大约 150 人在线报名,微信群目前 120 人左右,162 人在 开始并建立了“lab0-0-setup-env-run-os1”作业的 repos 25 | - 2022.06.28:在微信部分群中发布“欢迎加入 2022 年开源操作系统训练营”的信息,感谢[Rust 语言中文社区](https://rustcc.cn/)、CSDN 和张汉东老师等的进一步宣传 26 | - 2022.06.27:完成夏令营日程内容、建立报名通道,初步建立训练营开发环境 27 | - 2022.06.26:完成基于 github classroom 等资源的训练营开发环境原型系统验证 28 | - 2022.06.22:开始尝试基于 github classroom 等资源 29 | - 2022.06.18:确定本次训练营的大致活动内容,确定支持与合作单位、指导委员会、助教等 30 | - 2022.06.01:训练营准备开始启动 31 | -------------------------------------------------------------------------------- /relatedinfo.md: -------------------------------------------------------------------------------- 1 | # 注意事项 2 | [**Stage1 SCHEDULING**](./2023-spring-scheduling-1.md) & [**Stage2 SCHEDULING**](./2023-spring-scheduling-2.md)是开源操作系统训练营的第一/二阶段安排,可根据阶段安排中的信息和下面列出的资源信息进行自学和自我联系。 3 | 4 | 5 | ## 2022夏季Rust程序设计训练课资源(easy) 6 | 7 | - [清华计算机系大一学生2022暑期课程:Rust程序设计训练](https://lab.cs.tsinghua.edu.cn/rust/) 8 | - [Rust相关书籍/课程/视频等资源汇总](https://github.com/rcore-os/rCore/wiki/study-resource-of-system-programming-in-RUST) 9 | 10 | ## RISC-V 计算机硬件相关资源(normal) 11 | - [RISC-V相关课程资源](https://github.com/rcore-os/rCore/wiki/os-tutorial-summer-of-code-2021#step-1-%E8%87%AA%E5%AD%A6risc-v%E7%B3%BB%E7%BB%9F%E7%BB%93%E6%9E%84%E5%A4%A7%E7%BA%A67%E5%A4%A9) 12 | 13 | ## 2022春季OS课资源(normal) 14 | 15 | ### 课程Slides 16 | 17 | - [清华计算机系大三学生2022春季OS课程Slides](https://learningos.github.io/os-lectures/) 18 | 19 | ### 课程参考书 20 | 21 | - [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/) 22 | - [rCore Tutorial Book v3](https://rcore-os.github.io/rCore-Tutorial-Book-v3/) 23 | 24 | ### 课程视频 25 | 26 | - [20220221第一次课视频](https://meeting.tencent.com/v2/cloud-record/share?id=5fcc9ef3-cb43-48f6-9d33-f75f640e8c38&from=3) 27 | - [20220228第二次课视频](https://meeting.tencent.com/v2/cloud-record/share?id=0c2a73ec-238a-453b-8f0f-aaadaeb55eca&from=3) 28 | - [20220307第三次课视频](https://meeting.tencent.com/v2/cloud-record/share?id=c21406cf-96f9-4df6-8cab-af4dbd798769&from=3) 29 | - [20220314第四次课视频](https://meeting.tencent.com/v2/cloud-record/share?id=5dae93b5-6f9d-40b9-86c3-f2c13670ecaf&from=3) 30 | - [20220321第五次课视频](https://meeting.tencent.com/v2/cloud-record/share?id=4e9dc00e-1c95-47b8-bd18-6a24fe2e3450&from=3) 31 | - [20220328第六次课视频](https://meeting.tencent.com/v2/cloud-record/share?id=a48d439c-c161-4a0a-bf75-70024d408526&from=3) 32 | - [20220418第八次课视频](https://meeting.tencent.com/v2/cloud-record/share?id=92b88816-805b-44f0-af5c-227654d5c5bd&from=3) 33 | - [20220425第九次课视频](https://meeting.tencent.com/v2/cloud-record/share?id=622c85a7-6549-4e1d-9ff1-6fb908107791&from=3) 34 | - [20220509第十次课视频](https://meeting.tencent.com/v2/cloud-record/share?id=26487a19-875a-457f-8a89-d0a3ca785915&from=3) 35 | - [20220516第11次课视频](https://meeting.tencent.com/v2/cloud-record/share?id=e45a7ab1-325a-44f1-904d-1bb661daa0dd&from=3) 36 | - [20220523第12次课视频](https://meeting.tencent.com/v2/cloud-record/share?id=5c2c8e4b-f9a0-4228-bb4d-b83c648057a0&from=3) 37 | - [20220530第13次课视频](https://meeting.tencent.com/v2/cloud-record/share?id=34309e7e-3835-4d3f-a056-eceec5598f66&from=3) 38 | 39 | > 缺第七次课,各次课的密码是8位数字中的后4位数字 40 | 41 | ## 2022春季Advanced OS课相关资源(hard) 42 | 43 | - [清华计算机系研究生2021春季Advanced OS课程视频/slides](https://www.xuetangx.com/course/thu080917777/3234209) 44 | - [论文阅读列表](https://github.com/chyyuu/aos_course_info/blob/master/readinglist.md) 45 | - [OS比赛相关的一些硬件/OS实例/教程](https://github.com/oscomp/os-competition-info/blob/main/ref-info.md) 46 | - [Rust based OS/Hypervisor/VMM/Firmwire](https://github.com/chyyuu/aos_course_info/blob/master/oslist.md) 47 | 48 | ## 2022春季OS课实验框架讲解 49 | 50 | - [20220001 rcore-tutorial-v3 ch1&ch2](https://cloud.tsinghua.edu.cn/f/254e6cc6921849e29e8c/) 51 | - [20220002 rcore-tutorial-v3 ch3](https://cloud.tsinghua.edu.cn/f/17a7c9d9b57f4838ae5f/) 52 | - [20220003 rcore-tutorial-v3 ch4](https://cloud.tsinghua.edu.cn/f/d44189eff077452e99a5/) 53 | - [20220004 rcore-tutorial-v3 ch5](https://cloud.tsinghua.edu.cn/f/e2a8b8b54037484fac73/) 54 | - [20220005 rcore-tutorial-v3 ch6](https://cloud.tsinghua.edu.cn/f/a5d5ece6e5b849a3ae8a/) 55 | - [20220006 rcore-tutorial-v3 ch8](https://cloud.tsinghua.edu.cn/f/b6b94ccebe084b31aa6b/) 56 | - [20220007 rcore-tutorial-v3 ch9](https://cloud.tsinghua.edu.cn/f/1c9706422ad54cad997c/) 57 | 58 | > 密码是 `xushanpu123` 59 | 60 | ## 2022春季OS课实验框架OS API DOC 61 | 62 | > 下面各章 ``[345678]`` 的源码与 本repo中的 ``os[345678]-ref/src`` 目录下的源码是相同的。 63 | 64 | ### OS API docs of rCore Tutorial Code 2022S 65 | 66 | - [OS API docs of ch3](https://learningos.github.io/rCore-Tutorial-Code-2022S/ch3/os/index.html) 67 | - [OS API docs of ch4](https://learningos.github.io/rCore-Tutorial-Code-2022S/ch4/os/index.html) 68 | - [OS API docs of ch5](https://learningos.github.io/rCore-Tutorial-Code-2022S/ch5/os/index.html) 69 | - [OS API docs of ch6](https://learningos.github.io/rCore-Tutorial-Code-2022S/ch6/os/index.html) 70 | - [easyFS API doc in ch6]( https://learningos.github.io/rCore-Tutorial-Code-2022S/ch6/easy_fs/index.html) 71 | - [OS API docs of ch7](https://learningos.github.io/rCore-Tutorial-Code-2022S/ch8/os/index.html) 72 | - [OS API docs of ch8](https://learningos.github.io/rCore-Tutorial-Code-2022S/ch8/os/index.html) 73 | 74 | ## 训练营rcore tutorial和rustlings视频讲解 75 | 76 | - [rustlings & OS lab0-0 搭建环境和初始开发过程](https://www.bilibili.com/video/BV1fY4y1n7up?share_source=copy_web) 77 | - [rustlings:rust所有权和借用相关](https://www.bilibili.com/video/BV1ze4y1R7C9?share_source=copy_web) 78 | - [chapter1&chapter2实践的框架和代码分析讲解](https://cloud.tsinghua.edu.cn/f/254e6cc6921849e29e8c/) 79 | - [chapter3(lab1)实践的框架和代码分析讲解](https://cloud.tsinghua.edu.cn/f/17a7c9d9b57f4838ae5f/) 80 | - [chapter4(lab2)的代码分析和编程练习讲解](https://cloud.tsinghua.edu.cn/f/d44189eff077452e99a5/) 81 | - [chapter5(lab3)进程管理的代码解析和编程练习讲解](https://cloud.tsinghua.edu.cn/f/e2a8b8b54037484fac73/) 82 | - [chapter6(lab4)文件系统的代码解析和练习讲解视频](https://cloud.tsinghua.edu.cn/f/a5d5ece6e5b849a3ae8a/) 83 | - [chapter8(lab5)同步互斥的代码解析和练习讲解视频](https://cloud.tsinghua.edu.cn/f/b6b94ccebe084b31aa6b/) 84 | - [chapter9(第二阶段训练)内核中断/外设管理的代码解析讲解视频](https://cloud.tsinghua.edu.cn/f/1c9706422ad54cad997c/) 85 | 86 | ## “秋冬季开源操作系统训练营”过程相关内容 87 | - 2022.11.01:[20221101:秋冬季训练营启动交流会视频回放](https://meeting.tencent.com/v2/cloud-record/share?id=00e0e809-1e03-4f41-8e6a-4e71c0ca1342&from=3) 88 | - 2023.02.05:[2022 秋冬季训练营总结会&组件化操作系统设计与实现技术交流会-part2](https://meeting.tencent.com/v2/cloud-record/share?id=b2bd335e-c3fb-4169-8558-7621c71dfb75&from=3&is-single=true) 89 | - 2023.02.02:[组件化操作系统设计与实现技术交流会-part1](https://meeting.tencent.com/v2/cloud-record/share?id=af9f763c-a862-4dd4-9552-7061b1355b0d&from=3) 90 | 91 | ## "夏季开源操作系统学习训练营开幕式" 相关slides 92 | 93 | - [20220705:2022年夏季开源操作系统学习训练营:日程安排:向勇](https://github.com/LearningOS/resrouce-on-rust-based-os-comp2022/blob/main/20220705-%E5%90%91%E5%8B%87-%E5%BC%80%E5%B9%95%E5%BC%8F%E4%B8%8A%E7%9A%84%E4%BB%8B%E7%BB%8D-v4.pdf) 94 | - [20220705:2022年夏季开源操作系统学习训练营:Rust学习与领域应用:张汉东](https://github.com/LearningOS/resrouce-on-rust-based-os-comp2022/blob/main/20220705-%E5%BC%A0%E6%B1%89%E4%B8%9C-Rust%E5%AD%A6%E4%B9%A0%E4%B8%8E%E9%A2%86%E5%9F%9F%E5%BA%94%E7%94%A8.pptx) 95 | 96 | > 如访问上述网址碰到问题,请联系助教了解访问方式。 97 | -------------------------------------------------------------------------------- /self-study.md: -------------------------------------------------------------------------------- 1 | ## 最近一次(2024秋冬季)OS训练营情况总结 2 | - 第一阶段:参加1547人,提交945人,晋级677人 3 | 4 | - 第二阶段:参加617人,提交243人,晋级125人 5 | 6 | - 第三、四阶段:选题61人,最终通过32人(含优秀12人) 7 | 8 | 大部分同学都是由于基础知识不足、时间冲突退出,训练营本身没有设计强的筛选机制。 9 | 10 | ## 给自学同学 11 | 12 | 同学可根据以下资料简要了解训练营课程与流程 13 | 14 | 训练营流程和自学资料: 15 | 16 | - [第一阶段](2024-autumn-scheduling-1.md) 17 | 18 | - [第二阶段](2024-autumn-scheduling-2.md) 19 | 20 | - [第三阶段](2024-autumn-scheduling-3.md) 21 | 22 | 会议视频资料: 23 | 24 | - [开营会回放](https://meeting.tencent.com/meeting-record/shares?id=1013a94c-fadb-4c66-8139-5acacd19d694&record_type=2&from=3) 25 | 26 | - [开营会 PPT](https://cloud.tsinghua.edu.cn/d/3d4fcd34bfa148b58fe6/) 27 | 28 | - [训练营中期 - 第三阶段实习交流会](https://meeting.tencent.com/cw/KEoDMqZG91) (密码1201) 29 | 30 | 课程录像与课件(需手机号登录,但无需加入): 31 | 32 | - [第一阶段](https://opencamp.cn/os2edu/camp/2024fall/stage/1?tab=video) 33 | 34 | - [第二阶段](https://opencamp.cn/os2edu/camp/2024fall/stage/2?tab=video) 35 | 36 | - [第三阶段](https://opencamp.cn/os2edu/camp/2024fall/stage/3?tab=video) 37 | 38 | 学习项目常见问题和bug: 39 | - https://opencamp.cn/os2edu/bbs/1382 40 | - https://opencamp.cn/os2edu/bbs/1396 41 | --------------------------------------------------------------------------------