MIT 6.S081 Operating Systems Engineering

既然选择了文化课 Hard 模式,就从这一门 MIT 操作系统神课开始吧!

顺带一提,由于疫情,这门课 2020 Fall 的版本是完全开源的,课程视频、lab 作业都将是公开的,2020 Fall 打算刷这门课的同学可以和 MIT 学生同步学习。

课程链接 我的github仓库

Progress

2020.9.21 Lab util (100/100), 5h

2020.9.21 Lab syscall (35/35), 2h

2020.10.4 Lab pgtbl (66/66), 14h

2020.10.4 Lab traps (85/85), 2h

2020.10.5 Lab lazy (90/90), 5h

Labs

Lab util

第一个实验,目的是为了让大家熟悉 UNIX system call 的语义。

  • prime 实验,居然还可以利用管道实现并发!对于 pipe 的理解加深了很多。
  • xargs 实验,原来 UNIX 还有这么好用的工具…

Lab syscall

这个实验比较简单…但这其实是暴风雨前的黎明:) 本质是通过实验强制让我理解了 xv6 对应代码的原理。

  • xv6 的 kalloc 每次分配一页,直接用了个空闲链表维护;
  • 认识了 copyincopyout 函数,嘿嘿,为下个实验做铺垫…

Lab pgtbl

目前最牛逼的实验… 没有之一。我花了相当长的时间,也踩了无数个坑。后面有节课讲解 lab,一位 MIT 小哥给教授说因为一个不起眼的问题(xv6 中 kernel 模式无法访问标有 PTE_U 的 PTE)少睡了 4 小时… 我只想说,俺也一样!做完后回过头看可能没那么难,但是完成这个实验需要对页表机制有着充分的理解,并且要充分读懂 xv6 的代码。我到后来还出了同步问题,有概率通过所有样例也有概率 panic… 还好最后找到原因了。完成这个 lab

2020.10.4 Lab traps (85/85), 2h

2020.10.5 Lab lazy (90/90), 5h