• 博客区操作系统
  • MIT6.S081 Operating System Engineering | 操作系统设计 课程介绍 & 学习笔记

MIT6.S081 Operating System Engineering (Fall 2020)

前置课程:

  • MIT6.004 Computation Structures | 计算架构

2021-10-24更新:因为已经通关了,更新一下贴子,添加更多的课程介绍和资源,给后来想刷的同学指指路

课程介绍

MIT6.S081 Operating System Engineering 是麻省理工学院计算机科学本科的中级课程,前身是 MIT6.828 研究生课程。
课程基于 RISCV 架构以及类 unix 操作系统 xv6,介绍了操作系统最重要的几个基本概念,以及操作系统如何提供抽象、隔离、调度、资源管理,以及为上层应用程序提供服务。
Lab 作业几乎都是利用所学到的理论知识,为 xv6 操作系统添加新功能与改进。每个 lab 都带有自动评测功能。

课程资源

时间表:https://pdos.csail.mit.edu/6.S081/2020/schedule.html

为了方便后来的同学们,收集了一些中文资源:

课程翻译:https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/
中文字幕:https://www.bilibili.com/video/BV19k4y1C7kA/

(2021-10-29 update: 以上资源是 2020 秋学期的,2021 秋学期的 6.s081 已经出来了,在 https://pdos.csail.mit.edu/6.828/2021/schedule.html,但是粗看了一下变化不大,lab除了少了一个lazy page allocation以外就是调换了顺序,建议暂时可以学习2020年版的,资源较多)

Lab 指引

官方难度参考:
🟩 easy:小于 1 小时。通常是为后续练习的热身
🟧 moderate:1~2 小时。
🟥 hard:大于 2 小时,通常这些练习不需要写很多行代码, 但是要把代码写对很难

“个人耗时”是我个人在做这个 lab 的时候所用的时间,包含了研究、阅读代码、编码与调试全过程。

  • Lab1 - Unix utilities|Unix 实用工具:
    目标简述: 实现几个用户态程序及 unix 实用工具,熟悉 xv6 的开发环境以及系统调用的使用。
    实验难度: 🟩🟩🟩 3 easy, 🟧🟧🟧 3 moderate
    个人耗时: 4 小时
    参考解答: (2021-09-06) https://juejin.cn/post/7005116617478668296

  • Lab2 - System calls|系统调用:
    目标简述: 添加 syscall 跟踪,以及添加新的系统调用 sysinfo,帮助加深对 xv6 内核的理解。
    实验难度: 🟧🟧 2 moderate
    个人耗时: 4 小时
    参考解答: (2021-09-09) https://juejin.cn/post/7006016963029762056

  • Lab3 - Page tables|页表:
    目标简述: 探索页表,为每个进程维护独立的内核页表;修改页表以简化从用户态拷贝数据到内核态的方法。
    (难点:理解进程页表、内核页表概念)
    实验难度: 🟩 1 easy, 🟥🟥 2 hard
    个人耗时: 19 小时
    参考解答: (2021-09-13) https://juejin.cn/post/7008487319976017928

  • Lab4 - Traps|中断陷阱:
    目标简述: 探索中断以及中断处理机制(trap、trampoline、函数调用、现场保存、页表/特权切换、调用栈、栈指针及返回指针)
    (注:本 lab 并不非常难,重要的是理解 lecture5 与 lecture6 中的概念)
    实验难度: 🟩 1 easy, 🟧 1 moderate, 🟥 1 hard
    个人耗时: 8小时
    参考解答: (2021-09-22) https://juejin.cn/post/7010653349024366606

  • Lab5 - Lazy allocation|内存页懒分配:
    目标简述: 实现内存页懒分配机制,在调用 sbrk() 的时候,不立即分配内存,而是只作记录。在访问到这一部分内存页并触发缺页异常的时候才进行实际的物理内存分配。
    实验难度: 🟩 1 easy, 🟧 2 moderate
    个人耗时: 5小时
    参考解答: (2021-10-01) https://juejin.cn/post/7013843036996108325

  • Lab6 - Copy-on-write fork|fork 懒拷贝:
    目标简述: 实现 fork 懒复制机制,在进程 fork 后,与父进程共享物理内存页。在任一方尝试对内存页进行修改时,才对内存页进行复制。
    实验难度: 🟥 1 hard
    个人耗时: 4小时
    参考解答: (2021-10-05) https://juejin.cn/post/7015477978666631182

  • Lab7 - Multithreading|多线程:
    目标简述: 实现一个用户态的线程库;尝试使用线程来为程序提速;实现一个同步屏障
    实验难度: 🟧🟧🟧 3 moderate
    个人耗时: 3 小时
    参考解答: (2021-10-06) https://juejin.cn/post/7016228101717753886

  • Lab8 - Parallelism/Locking|并发与锁:
    目标简述: 重新设计并发代码以降低锁竞争,提高在多核系统上的性能。
    实验难度: 🟧 1 moderate, 🟥 1 hard
    个人耗时: 14 小时
    (在第二个实验做到无死锁无错误上构思花费了比较多时间,其实本 lab 测试没有那么强,测不出来这些边界情况)
    参考解答: (2021-10-14) https://juejin.cn/post/7021218568226209828

  • Lab9 - File System|文件系统:
    目标简述: 为 xv6 的文件系统添加大文件以及符号链接支持。
    实验难度: 🟧🟧 2 moderate
    个人耗时: 4 小时
    参考解答: (2021-10-15) https://juejin.cn/post/7022347989683273765

  • Lab10 - Mmap | 文件内存映射:
    目标简述: 实现 *nix 系统调用 mmap 的简单版:支持将文件映射到一片用户虚拟内存区域内,并且支持将对其的修改写回磁盘。
    实验难度: 🟥 1 hard
    个人耗时: 6 小时
    参考解答: (2021-10-22) https://juejin.cn/post/7022394470419136542

  • Lab11 - Network stack:
    目标简述: 熟悉系统驱动与外围设备的交互、内存映射寄存器与 DMA 数据传输,实现与 E1000 网卡交互的核心方法:transmit 与 recv。
    (本 lab 的难度主要在于阅读文档以及理解 CPU 与操作系统是如何与外围设备交互的。换言之,更重要的是理解概念以及 lab 已经写好的模版代码的作用。)
    实验难度: 🟥 1 hard
    个人耗时: 2 小时
    参考解答: (2021-10-24) https://juejin.cn/post/7022441307029110821

14 天 后
7 天 后

喜闻乐见。期待我们学校有更多的同学能够参与到这种活动中来。

16 天 后

2021/09/06~2021/10/24,在 210 节结束了接近两个月的 MIT6.S081 旅途。不得不说 MIT 的课程以及作业设计真的很不错,目标明确但又充满探索的 xv6 lab,加上自动 grading,体验简直好到爆。推荐同样对操作系统有兴趣的同学们可以来刷一刷,亲自动手体验实现操作系统各项机能的乐趣。

另外一个就是,最近感觉论坛的自学氛围逐渐有点起势,我觉得这是一个比较不错的机会。后面打算把一些质量比较高的目前自己想刷的课,提前开帖子介绍以及发布资源。这样同样感兴趣或者喜欢挑战的同学,可以上车一起刷😆

    18 天 后
    Miigon 更改标题为「MIT6.S081 Operating System Engineering | 操作系统设计 课程介绍 & 学习笔记
    7 个月 后

    21年据说是因为20的pgtbl太难了被疯狂吐槽所以改了下lab,想挑战的一律建议20版

    3 个月 后
    1 个月 后

    mark,把 The Linux Programming Interface 学完就搞这个课程

    loocq 怎么说,有什么实际上的教学课吗?就比如说网课或者线下课?
    我看到的版本似乎就是挪了一下xv6的lab然后写了一下文档的样子...

      OneDragon424 目前看还是起步阶段,估计还需要多些热情的学生参与,才有更完善的课程。

      © 2018-2025 0xFFFF