Skip to content

Latest commit

 

History

History
72 lines (33 loc) · 3.56 KB

README.md

File metadata and controls

72 lines (33 loc) · 3.56 KB

rCore-Learing-Blog

10.23

第一天配置好环境了,准备开始rCore之旅~

遇到一个问题:已经是root但是仍然permission denied,原因:因为文件本身没有可执行特性。

  • 解决方案:执行命令
chmod -R  777 riscv64-unknown-elf-gcc-8.3.0-2020.04.1-x86_64-linux-ubuntu14/

10.24

快速过了ch1,ch2,做了详细版教程的实验练习,原来裸机是这样运行os的,太神奇了

10.25

读了ch3,提交了第一个计分的实验,很有成就感

开始ch4!

10.26-10.28

ch4内容是真的多,看完并且读懂代码就花了接近2天,由于api太多了,下定决心自己捋一遍记录下来,后来发现还是多但比之前好了,很多api都是功能就是名字,很直观,多熟悉一下

做lab太痛苦了,因为不知道程序在哪里崩溃的,连打断点都不知道该干啥,加了一个大佬好友,可以在vscode上面可视化调试,一下子好多了。

一个bug是判断pte合法性只考虑pte是否valid,其实根本有可能pte未被创建。

10.29

今天偷了一点懒,没看多少,把ch5看完了,lab准备明天上午做完吧

今天学会了使用git diffgit cherry-pick $ID来把上一章节的修改继承到这章节,跟着gpt学会了看.rej文件,但还是有点没搞懂怎么解决冲突,于是手动调了半小时,最后有个新bug,arc的引用计数又不对了,明天做实验看debug一下,或者回退到上个版本,现在还没push

复习了一下trap,task上下文,有点混淆了

明天加油~

10.30

今天上下午一直在移植代码,尝试了git cherry-pick试了很久,重置过去重置过来,问了gpt,看了b站,csdn都无果,就是没有合并,只显示reports文件夹有冲突,主要的os没有,遂还是采用git diff打patch的笨方法,冲突太多了,合并了小一个小时。

移植好之后,make run确实能跑了,但是随便输一个就报错,说waitpid清除僵尸进程的引用计数有错,本来应该是1,结果是2,多了一个,debug找不出来,println也没看出来在哪里。仔细想想,找了跟Arc有关的所有代码,可以肯定一件事,模板代码一定没问题,那问题就出在我自己移植过来的代码,最后一个个注释排除法,找到了原来是我自己用了一个Arc没有drop,我以为drop了inner的RefMut就可以了,没想到这个也要drop。为啥这个不会自动drop呢?

目前还有usertest卡住的问题,再看看。

11.1

今天开始看第六章,文件,不得不说这一章的代码量真的多,但是逻辑上确实很清晰,不涉及页表,中断之类的,很重要的一个点是理解怎么通过直接索引和间接索引找到block,以及磁盘的布局与组织形式,今天看了一半多点,明天争取看完做ch6

11.2

今天看完了第六章,不得不说文件系统内容真的多,从下到上的几层抽象真是让我体会到操作系统的博大精深,需要潜心体会其中设计方法之妙,DiskInode => Inode => OsInode,其实都是一个东西但是不同的抽象

最后卡在了,file1不知道link哪里错了,真的要好好体会代码架构,不然连在哪里加代码都不知道

11.3

快被折磨哭了,今天从中午十一点一直改到晚上十一点,除去吃饭时间都在看link哪里错了,不知道是不是cherry-pick迁移的时候改错了,反正我就算用别正确的代码,全都复制粘贴也过不了,罢了罢了,我真的放弃了,能学到东西就好,300分就300分吧,哭