Add comments for MIT 6.s081

This commit is contained in:
Jinming Hu
2021-06-19 23:53:24 +08:00
parent 80dd65888e
commit 62c6ab3e4d

View File

@@ -0,0 +1,53 @@
课号:[MIT 6.S081 Fall 2020](https://pdos.csail.mit.edu/6.S081/2020/)
教授:[Frans Kaashoek](https://pdos.csail.mit.edu/~kaashoek/) & [Robert Morris](https://pdos.csail.mit.edu/~rtm/)
评论贡献者:[Jinming Hu](https://conanhujinming.github.io/)
- [x] Videos[Youtube](https://pdos.csail.mit.edu/6.S081/2020/schedule.html), [B站](https://search.bilibili.com/all?keyword=6.s081&from_source=webtop_search&spm_id_from=333.851)
- [x] [Lab x 11](https://pdos.csail.mit.edu/6.S081/2020/labs/guidance.html)
- [x] [AutoGrader](https://pdos.csail.mit.edu/6.S081/2020/labs/guidance.html)
- [x] [Slides & Reading](https://pdos.csail.mit.edu/6.S081/2020/schedule.html)
## 课程信息
操作系统导论。是在两位教授开发的供教学用的迷你操作系统xv6做一些进一步的开发来理解操作系统内核的工作原理。这门课程适合想要深度理解操作系统的同学而操作系统可以说是计算机科学中极为基础和重要的领域学扎实的话无论是做工程还是做科研都受益无穷。
## 适合人群
个人认为适合作为第二门操作系统课程第一门的话更推荐CMU 15-213。
## 课程评价
我有些不适应来自FK教授的授课视频。个人觉得这门课的精髓在那11个lab上结合做lab与阅读xv6 book则可以对xv6操作系统内核的工作原理有较为深刻的认识而这些原理也是现代操作系统中最为核心的部分。lab使用c语言完成难度较大尤其是第三个lab page table应该可以说是所有lab中最大的坎但这些lab能很好地加深对操作系统的认识也能较好地磨练自己的工程能力非常值得一做。视个人基础大概需要100到200小时左右的学习时间。
## 需要注意的坑点
这里主要给出前两个lab的坑点
1. 在开始lab之前先按照[tools](https://link.zhihu.com/?target=https%3A//pdos.csail.mit.edu/6.828/2020/tools.html) 配环境。如果是使用ubuntu的话我个人推荐用ubuntu20这样可以免去自己配toolchain的痛苦而如果是更早的ubuntu系统的话那么需要按照页面上的指点自己build toolchain。另外使用`apt-get`安装的QEMU的版本估计是不够新的如果版本号低于5.1.0那么也需要自己手动build QEMU. 最后验证安装的时候如果不是自己手动build的toolchain的话可能不是按照官方说的用`riscv64-unknown-elf-gcc`之类的,而是其他的一些命令,具体可以在`/usr/bin`或者`/usr/local/bin` 下查看 。对于验证安装我个人建议先确定qemu版本再尝试在xv6运行`make qemu`,如果能够正常进入,应该就没有问题了。
2. 之后阅读[guidance](https://link.zhihu.com/?target=https%3A//pdos.csail.mit.edu/6.828/2020/labs/guidance.html) 注意一个坑点是`make qemu-gdb`的部分,在另一个窗口跑`gdb`或者`riscv64-linux-gnu-gdb`可能都不一定有用,也许是`gdb-multiarch`或者是 `riscv64-unknown-elf-gdb` 具体同样可在`/usr/bin`或者`/usr/local/bin`下查看。可以自己试试哪个会work>_<
3. 如果你要用xv6的某些自带的函数发现它们不像你想得那样工作那么请大胆地去看源码也许它们的实现的behavior和标准库的是不一样的>_< 并且要敢于而且主动地去看xv6的源码甚至可以说这些Lab的目的就是帮助你熟悉了解xv6的源码的。
4. 如果你的机器像我一样很烂在某些case上可能会碰到timeout的问题纯粹是因为机器太烂那么可以把gradelib里默认的timeout调大一些......
5. 关于用gdb在user程序中打断点出现Cannot access memory at address错误的问题
xv6的主分支上已经修复了这个问题。但是2020版的前几个lab没merge这个patch需要自己在.gdbinit.tmpl-riscv里加一行`set riscv use-compressed-breakpoints yes`
关于后面lab的注意事项可以加入[6.S081学习交流群](https://zhuanlan.zhihu.com/p/251366985)了解。
## 非官方资料推荐
1. 强推[肖宏辉大神](https://www.zhihu.com/people/xiao-hong-hui-15)的[课程内容翻译](https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/)。
2. [6.S081学习交流群](https://zhuanlan.zhihu.com/p/251366985) 的群piazza里也有大量优质问答。
## 后续课程推荐
- [MIT 6.828](https://abelay.github.io/6828seminar/index.html) 系统论文阅读研讨会,适合对系统领域的科研感兴趣的同学。
- [System Paper Reading Seminar](https://learn-sys.github.io/cn/reading/):很多同学自己组织的系统论文研讨会,中文资源,有视频。
- [MIT 6.824](https://pdos.csail.mit.edu/6.824/):分布式系统。