Skip to content

xBINj/learning_os

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 

Repository files navigation

learning_os

2025 春夏季开源操作系统训练营学习记录,地址:https://opencamp.cn/os2edu/camp/2025spring

第二阶段

2025.03.31-2025.04.11

2025.04.10

第三章:https://learningos.cn/rCore-Camp-Guide-2025S/chapter3/index.html 今日开始阅读第三章,准备先快速翻阅参考书籍《计算机组成与设计:硬件软件接口(原书第五版.RISCV版)》(2018年,机械工业出版社)。

  • 翻看完毕了#1到#3章,知识就够用本次训练营了。阅读本书比直接去阅读riscv.org中的RISCV的指令集规范更容易让人理解指令格式和使用。

2025.04.09

第二章阅读完成。几个点记录备忘一下:

  • 为了能阅读懂riscv的汇编码部分,快速翻阅了《RISC-V开放架构设计之道》(2023年版),对RISCV的指令格式,汇编码,指令集有了一些初步了解。
  • 第二章第三节“实现特权级的切换”中的trap管理那一段,基本上没读懂,先跳过了,后续在研究这段。

2025.04.08

继续翻看第二章的代码,对整个流程以及代码结构都比较有更多的了解,但是要深究细节的话,还有不少的点可以再次深入学习。 到本章为止,基本上对一个os以及跑在os上的user-mode的程序运作机制就全部都讲解完了,但是涉及的点太多了,没法一一都去深究。等后续老师的讲课再补充吧,希望能都搞得比较明白和清晰。

  • batch部分逻辑还有点模糊,主要是run_next_app和load_app,且加载后在内存中的地址部分。
  • 构建部分基本上玩完,只有少部分能够读懂。
  • rust工程目录结构,看起来no std的和有std的是不太一样的,这个点要求对使用者对rust的工程目录结构、包和模块等理解比较深。

2025.04.07

第二章:https://learningos.cn/rCore-Camp-Guide-2025S/chapter2/index.html

  • 今天事情比较多,只把文章都看完了,例子make run起来没有任何问题,接下去继续啃代码吧。几个问题可以在看代码时搞懂:
  • 搞懂os内核跑起来之后,是怎么跳转到第一个应用的。
  • trap的完整的代码逻辑。
  • 整体流程再捋一遍,包括os和user 这2个目录。

2025.04.04

仔细阅读完第一章,把所有的代码都仔细过了一遍。

  • 如果用最新版的nightly编译,通过不了,最新的nightly报错,比如no_mangle需要添加unsafe,#![feature(panic_info_message)]已经在1.8.1之中稳定了,不用开头添加说明了;print的宏定义出现参数不符合等。部分仔细研究可以修改,部分一时间没有很好的应对,故继续采用nightly-2024-05-02版本学习。
  • 也发现了以前学习Rust时没有深究的点,比如board明明没有被弄成mod,也没到处,却可以通过crate::XXXX的形式使用里面的函数。

2025.04.03

粗翻看完毕导学视频的第4,6,7章(进程管理与单处理器调度,地址空间-物理内存管理和实践与实验概述),把之前跳过的补了一下。今天重新细读了第一章。对第一章说的很多概念以及细节,清晰了很多。

2025.04.02

主要回去翻看了导学视频的第1~3节课内容(操作系统概述和基于特权级的隔离与批处理操作系统),对操作系统底层的调用关系、3种模式的切换、代码目录结构、批处理OS的运行过程等了解到了更多的信息。

2025.04.01

第一章:https://learningos.cn/rCore-Camp-Guide-2025S/chapter1/index.html 看完了第一章,例子测试通过,只看懂了原理,涉及到rust asm,RISCV,linker.ld的地方比较头脑混沌,暂时先不继续第二章了,先寻找一些资料补充一下基础。

  • 回头看导学视频,之前跳着看,现在仔细的看一下其中的一些章节。

2025.03.31

第零章的说明: https://learningos.cn/rCore-Camp-Guide-2025S/0setup-devel-env.html 配置环境,整个过程比较顺利。

  • 由于我是在Windows 11上开发,所以需要安装wsl2,安装wsl2和Ubuntu 24.04.1,这一段网上都有现成的教程,没有什么问题。
  • qemu安装,原本想试试最新的stable版本9.2.3,但是发现自己是新手,而且依照指南中的提示可能会遇见需要安装额外的依赖包,就继续使用7.0.0版本(其实有7.2.17版本,但是考虑到不熟悉,还是严格遵守教程的7.0.0版本,有兴趣的同学可以自己尝试)。
  • 编译qemu过程中,只遇见了缺少Ninja,所以用sudo apt update, sudo apt install ninja-build 安装即可。
  • 试运行rCore-Tutorial时,下载cargo nightly-2024-05-02版本很慢,大家要多等待一下,一次性完成编译和运行ch1,很顺利。

第一阶段

2025.03.24-2025.03.30

因为之前已经自学过Rust,所以导学视频和Rust视频就没仔细的看,挑选的看了一部分。 编程中遇见最大的困难就是那10道算法题,其中bsf,dsf,graph的比较难,结合kimi查阅了文档,编写了出来。 Rust在编写诸如链表之类的数据结构的时候,比较不友好,远没有C那么容易学会。

About

2025 春夏季开源操作系统训练营学习记录,地址:https://opencamp.cn/os2edu/camp/2025spring

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors