对2023秋季OS训练营的学习记录
- 从github获取了第一阶段的学习任务,并clone到本地
- 按照教程安装好了rust环境,准备开始做题
- 由于是rust初学者,打算从头开始看《Rust语言圣经》,边学边做题
- 周一至今一直边学习rust语法边做练习,今天终于通关了
- 于是继续寻找学习资料,发现Rust Quizes一题都不会...,于是决定等到第二阶段再边做项目边巩固
- 开始学习RISC-V相关知识,发现原来OS的很多设计被ISA给限定了(比如页表和中断处理),猜想rCore有些内容应该和xv6类似,于是打算做完两个6.S081剩下的2个lab来顺便复习一下
- 做完了一个fslab,开始做mmaplab
- 做完了所有lab,开始配置rCore的环境
- (千辛万苦终于)等到了新的阶段与新的任务
- 可能是由于之前配环境看的是往届的文档,今天上手clone内核跑不通,于是按照新文档重新配了一遍环境
感觉是我太笨了,找了好一会才弄懂要学什么,怎么做lab- 开始跟着文档学习,第一章看完了,println使用的宏和内嵌汇编语法不太懂,最后一节的汇编也不太理解,去补相关知识了
- 看完了第二章和第三章,开始做ch3实验了
- ch3实验做完了,开始ch4实验
- 在文档中发现了081许多没有提到的点,两个课程的内容串起来了
- 接着做ch4实验
- ch4实验做完了,踩了挺多坑,主要是不知道原来可以在本地Grading,然后本地多次测试才发现原来reports要带上之前全部的report
- ch5实验做完了
- 感觉自己做ch5实验过程踩了非常多坑,于是稍微整理形成了
trap.md
- 今天休息了大半天,晚上开始看ch6,明天早上看完就能接着做实验了
- 今天一整天的课,白天看完文档等到晚上才有时间开始做实验
- 感觉这个实验的难度一下子上来了,文件系统分了好几层,api特别多,花了好长时间才大概弄清部分的作用
- 然后仿照
Inode.create()
的样子实现了Inode.link()
,剩下的明天再写了
- 过了一晚上消化,对文件系统整体的理解比昨天好一些了
- 发现昨天写的
Inode.link()
有点问题,主要是三个系统调用互相有联系,需要修改部分结构来存额外的信息 - 一口气把实验做完了
- -_-老师叫我要好好准备区域赛了,这阶段剩下的实验大概率是没时间做了
- 学校的事暂时缓一缓,要开始第三阶段的任务了
- 先看了选课的录播,感觉项目3最有兴趣,虽然很想同时去做项目1/2,但是大概率没这么多时间,而且学校里也找不到志同道合能去参加OS大赛的-_-,下次训练营再来吧
- 跟着第一节课和实验文档开始配置环境,明天上完课再弄下应该就能好
- 第一次实际接触这么大的项目,啥也不会各种碰壁x_x
- Ubuntu-20.04 apt默认llvm工具链版本都是10,需要另外下载并调整Makefile
- 才发现wsl没有走win代理,很多包下载非常慢,于是研究了代理
- 还是没有跑通,明天再弄吧
- 早上弄了一会终于跑通了,但是用了各种各样的补丁,于是在跑通的基础上做各种尝试,来研究正确的方法,完成了exercise1
- 发现rust-analyzer不生效,经过群友的帮助将错误锁定到fujita版本上,换到官方源就可以了
- 开始做exercise2,在群友的帮助和自己的不断试错下,能编译出.ko了
- 由于这周末又要打区域赛,只能等下周再继续了