Skip to content

Latest commit

 

History

History
754 lines (602 loc) · 51.7 KB

README.md

File metadata and controls

754 lines (602 loc) · 51.7 KB

MIT6.S081: Operating System Engineering

🥂课程资料

实际上,这门课就是大名鼎鼎的 MIT 6.828 ,只不过2020年课号改成了 6.S081 。

官方课程安排与资源索引:

中文文档与翻译:

B 站视频:

实验:

参考:

🥞本仓库资源

🍱课程索引

LEC 1 (rtm): Introduction and examples

sep 2

我认真读了书(第一张,一些 Unix 6 接口简单原理与使用),记了笔记:./docs/drafts/lec.01.md

然后听课,课堂笔记:./docs/drafts/lec.01c.md

本节作业笔记:./docs/drafts/lec.01hw.md

LEC 2 (TAs/dm): C and gdb

sep 9

  • LEC 2 (TAs/dm): C and gdb (pointers example)
  • Preparation: 2.9 (Bitwise operators) and 5.1 (Pointers and addresses) through 5.6 (Pointer arrays) and 6.4 (pointers to structures) by Kernighan and Ritchie (K&R)
  • Assignment: Lab syscall: System calls

课前预习,读书:./docs/drafts/lec.02.md

这节课就是读书课,留了个 lab ,下节课听完再做。

LEC 3 (fk): OS organization and system calls

  • LEC 3 (fk): OS organization and system calls (boards) video
  • Preparation: Read chapter 2 and xv6 code: kernel/proc.h, kernel/defs.h, kernel/entry.S, kernel/main.c, user/initcode.S, user/init.c, and skim kernel/proc.c and kernel/exec.c

这节课需要预习的东西和上节课一样。

听课笔记在这里:./docs/drafts/lec.03c.md

然后把 lab 2 做了吧:./docs/drafts/lec.03hw.md

LEC 4 (fk): Page tables

sep 16

课前预习是读书第三章,我的笔记在这了:./docs/drafts/lec.04.md

课堂笔记:./docs/drafts/lec.04c.md

lab 3 地址如下:./docs/drafts/lec.04hw.md

这个实验对我来讲真的是难,断断续续做了五天。做完后,发现其实真的很简单:只要捋清了页表在哪里会被创建(与进程被创建、被 fork 、被扩容有关),在哪里被取消映射、取消哪里的映射。实际上,由于这个操作系统的优秀设计,把用户虚拟地址和内核虚拟地址放在一个页表上完全不会冲突。

LEC 5 (TAs/nk): Calling conventions and stack frames RISC-V

sep 21

课前读书是关于 the C compiler standards for RV32 and RV64 programs ,读书笔记在此:./docs/drafts/lec.05.md

课上内容:./docs/drafts/lec.05c.md

LEC 6 (rtm): Isolation & system call entry/exit

sep 23

课前读书笔记在这里:./docs/drafts/lec.06.md

课堂笔记在这里:./docs/drafts/lec.06c.md

lab 先不做,先把下节课答疑听了再做。

LEC 7 (fk): Q&A labs

sep 28

一些课堂笔记:./docs/drafts/lec.07c.md

好了,现在把 Lab traps: Trap 给做了吧,笔记:./docs/drafts/lec.07hw.md

LEC 8 (fk): Page faults

sep 30

读了一个小节,与课堂内容有很多重叠,不详细记录了:./docs/drafts/lec.08.md

上课:./docs/drafts/lec.08c.md

lab 就是设计一个 lazy allocation ,挺简单的:./docs/drafts/lec.08hw.md

LEC 9 (fk): Interrupts

oct 5

  • LEC 9 (fk): Interrupts (boards) video
  • Preparation: Read Chapter 5 and kernel/kernelvec.S, kernel/plic.c, kernel/console.c, kernel/uart.c, kernel/printf.c

课前预习读读书:./docs/drafts/lec.09.md

上课内容:./docs/drafts/lec.09c.md

好了,在进入 Multiprocessors and locking 之前,先把 page allocation 的内容解决掉,把 Lab 6 Copy-on-Write Fork for xv6 写了:./docs/drafts/lec.09hw.md

LEC 10 (fk): Multiprocessors and locking

oct 7

这个 Lab 上节课写完了。

读书预习一下:./docs/drafts/lec.10.md

课堂笔记:./docs/drafts/lec.10c.md

LEC 11 (rtm): Thread switching

oct 14

课前预习把书 7.4 读了:./docs/drafts/lec.11.md

听课笔记:./docs/drafts/lec.11c.md

作业很简单:./docs/drafts/lec.11hw.md

LEC 12 (rtm): Q&A labs

oct 19

  • LEC 12 (rtm): Q&A labs (video)

这节课不记录了。

LEC 13 (rtm): sleep&wakeup and code

oct 21

读书收获总是很小,因此先把课听了,之后有什么问题再查书。听课笔记:./docs/drafts/lec.13c.md

课上没讲的信号量 semaphore ,读书看看:./docs/drafts/lec.13.md

把实验做了吧:./docs/drafts/lec.13hw.md

LEC 14 (fk): File systems

oct 26

先把课听了:./docs/drafts/lec.14c.md

趁热打铁,把下节课课后 Lab fs: File system 写了吧:./docs/drafts/lec.14hw.md

LEC 15 (fk): Crash recovery

oct 28

这个 Lab 在上节课课后写了。

首先先把课听了:./docs/drafts/lec.15c.md

LEC 16 (rtm): File system performance and fast crash recovery

nov 2

把课听了:./docs/drafts/lec.16c.md

LEC 17 (fk): Virtual memory for applications

nov 4

把课听了:./docs/drafts/lec.17c.md

把 mmap 系统调用 map 做了吧:./docs/drafts/lec.17hw.md

LEC 18 (rtm): OS Organization

nov 9

把课听了:./docs/drafts/lec.18c.md

LEC 19 (rtm): Virtual Machines

nov 16

把课听了:./docs/drafts/lec.19c.md

LEC 20 (fk): Kernels and HLL

nov 18

先把课听了:./docs/drafts/lec.20c.md

lab 下节课听完再做。

LEC 21 (rtm): Networking

nov 30

这节课很重要,收获很大,让你彻底理解网络分层、协议栈:./docs/drafts/lec.21c.md

把最后一个 lab 写了:./docs/drafts/lec.21hw.md

LEC 22 (rtm): Meltdown

dec 2

把课听了:./docs/drafts/lec.22c.md

LEC 23 (rtm): RCU

dec 7

把课听了:./docs/drafts/lec.23c.md

LEC 24 (fk): Q&A

dec 9

  • LEC 24 (fk): Q&A (video)

最后的内容,没什么可记录的。所有的 lab 都已经 bug-free 并且 make grade 满分。

🎉 完结撒花!

🥪Lab 笔记索引

原地址: https://github.com/PiperLiu/xv6-labs-2020 (已经设为 private)

具体笔记索引、 Lab 配置见: ./lab.md