MIT6828课程大纲

HumanCore - CP/M-17 Version 1.0, Date: January 08, 1996

课程安排

Mon Tue Wed Thur Fri
Binary search trees, BST sort AVL trees, AVL sort LEC 2 (ab): PC hardware and x86 programming slides, notes Preparation: Read Bootstrap/PC hardware appendices and the related xv6 source files Assignment: HW: Boot xv6
Counting sort, radix sort, lower bounds for sorting and searching LEC 3 (TAs): C and gdb (pointers example) Homework 1 due: Boot xv6 Preparation: Read 2.9 (Bitwise operators), 5.1 (Pointers and Addresses) through 5.5(Character Pointers and Functions) and 6.4 (pointers to structures) in K&R Assignment: HW: shell Assignment: Lab 2: Memory management Hashing with chaining DUE: Lab 1LEC 4 (fk): Shell & OS organization Preparation: Read chapter 0 of the xv6 book. Homework 2 due: shell
Table doubling, Karp-Rabin LEC 5 (fk): Isolation mechanisms Preparation: Read “Chapter 1: Operating system organization” and the related xv6 source files Assignment: HW: system calls Open addressing, cryptographic hashing LEC 6 (ab): Virtual memory (1) (handouts: page table translation and registers) (slides) Preparation: Read “Chapter 2: Page Tables” Homework 3 due: system calls Assignment: HW lazy page allocation
Quiz 1 LEC 7 (ab): Virtual memory (2) (handout: JOS virtual memory layout) (slides) Homework 4 due: HW lazy page allocation Assignment: HW xv6 CPU alarm Assignment: Lab 3: User-Level Environments Integer arithmetic, Karatsuba multiplication DUE: Lab 2 LEC 8 (fk): System calls, interrupts, exceptions (handouts: IDT) Prep aration: Read “Traps, interrupts, and drivers” and the related xv6 source files Homework 5 due: HW xv6 CPU alarm Assignment: HW multithreaded programming
Square roots, Newton’s method LEC 9 (ab): Multiprocessors and locking (slides) Preparation: Read “Locking” with spinlock.c and skim mp.c Homework 6 due: HW multithreaded programming Assignment: HW xv6 locks Breadth-first search (BFS) DUE: Lab 3 (Part A)oct 10 Hacking day Assignment: Lab 4: Preemptive Multitasking
Depth-first search (DFS), topological sorting LEC 10 (ab): Processes and switching Preparation: Read “Scheduling” up to “Sleep and wakeup” and proc.c, swtch.S Homework 7 due: HW xv6 locks Assignment: HW uthreads Single-source shortest paths problem LEC 11 (fk): sleep&wakeup Preparation: Read remainder of “Scheduling”, and corresponding parts of proc.c Homework 8 due: HW uthreads Assignment: HW barrier
Dijkstra LEC 12 (fk): File systems Preparation: Read bio.c, fs.c, sysfile.c, file.c and “File system” except for the logging sections Homework 9 due: HW barrier Assignment: HW big files Bellman-Ford DUE: Lab 4 (Part A)oct 24 LEC 13 (fk): Crash recovery Preparation: Read log.c and the logging sections of “File system” Homework 10 due: HW big files Assignment: HW crash Assignment: Lab 6: Networking Assignment: Lab 7: Final project
Speeding up Dijkstra Quiz #1 open book and notes scope: Lectures 1 through 13, HW 1 through 10, labs 1 through 3 practice: previous years’ quizzes. Quiz 2 DUE: Lab 4 (Part B)oct 31 Hacking day Assignment: Lab 5: File system, spawn, and sh
Memoization, subproblems, guessing, bottom-up; Fibonacci, shortest paths LEC 14 (fk): File system performance and fast crash recovery Homework 11 due: HW crash Preparation: Read Journaling the Linux ext2fs Filesystem (1998) Assignment: mmap() Parent pointers; text justification, perfect-information blackjack DUE: Lab 4 (Part C)nov 7 LEC 15 (ab): Virtual Memory (3) (slides) Preparation: Read Virtual Memory Primitives for User Programs (1991) Homework 12 due: mmap
String subproblems, psuedopolynomial time; parenthesization, edit distance, knapsack LEC 16 (fk): OS Organization Preparation: Read Exokernel (1995) Homework 13 due: HW exokernel question Two kinds of guessing; piano/guitar fingering, Tetris training, Super Mario Bros. DUE: Final project proposal (if doing project)nov 19 LEC 17 (cc): Kernels and HLL Preparation: Read the Biscuit paper (2018) Homework 14 due: [HW Biscuit question
Computational complexity DROP DATE LEC 18 (ab): Scalable locks (slides) (code) Preparation: Read Non-scalable locks paper (2012) Homework 15 due: ticket lock question Algorithms research topics DUE: Lab 5nov 26 LEC 19 (ab): Scaling OSes slides Preparation: Read RCU (2013) Homework 16 due: RCU question DUE: Email us a status update on your final project (a paragraph)
LEC 20 (ab): Virtual Machines (1) (slides) Preparation: Read Software vs Hardware Virtualization (2006) Homework 17 due: VM question LEC 21 (ab): Virtual Machines (2) (slides) Preparation: Read Dune: Safe User-level Access to Privileged CPU Features (2012) Homework 18 due: Dune question
LEC 22 (fk): High-performance networking Preparation: Read IX: A Protected Dataplane Operating System for High Throughput and Low Latency (2014) Homework 19 due: IX question Quiz #2 DUPONT-Gym, 9am-11pm open book, notes, and papers. scope: Lectures 14 through last lecture (dec 12), labs 4 and 5. practice: previous years’ quizzes.

课程阅读

课程 内容 完成情况
LEC1 阅读:课程大纲 完成
观看:Unix系统介绍 完成
LEC2 阅读:PC hardware and x86 programming slides 完成
阅读:notes 完成
阅读:Bootstrap/PC hardware appendices and the related xv6 source files 完成,但是剩下三个题目不会
LEC3 阅读:gdb (mit.edu) 完成
阅读:K&R2.9、5.1-5.5、6.4章节 完成,2.9节三个练习没做
LEC4 阅读:Shell & OS organization 剩下三个挑战问题和两个问答题没做
阅读:chapter 0 of the xv6 book 完成
LEC5 阅读:Isolation mechanisms 完成
阅读:Chapter 1: Operating system organization” and the related xv6 source files 读到了22页
LEC6 阅读:Virtual memory (1) 完成
阅读:page table translation and registers 完成
阅读:slides 完成
阅读:Chapter 2: Page Tables 完成
LEC7 阅读:Virtual memory (2)
阅读:JOS virtual memory layout 完成
阅读:slides
LEC8 阅读:System calls, interrupts, exceptions 基本上看完了
阅读:IDT 完成
阅读:Traps, interrupts, and drivers” and the related xv6 source files 大致浏览了一遍,代码还没看,这个很重要,多看几遍
LEC9 阅读:Multiprocessors and locking (mit.edu) 前两页读完了
阅读:slides (mit.edu) 锁的实现没有读完
阅读: “Locking” with spinlock.c and skim mp.c
LEC10 阅读:Processes and switching
阅读:“Scheduling” up to “Sleep and wakeup” and proc.c, swtch.S
LEC11 阅读:sleep&wakeup
阅读:remainder of “Scheduling”, and corresponding parts of proc.c
LEC12 阅读:File systems
阅读:bio.c, fs.c, sysfile.c, file.c and “File system” except for the logging sections
LEC13 阅读:Crash recovery
阅读:log.c and the logging sections of “File system”
LEC14 阅读:File system performance and fast crash recovery
阅读:Journaling the Linux ext2fs Filesystem (1998)
LEC15 阅读:Virtual Memory (3)
阅读:slides
阅读:Virtual Memory Primitives for User Programs (1991)
LEC16 阅读:OS Organization
阅读:Exokernel (1995)
LEC17 阅读:Kernels and HLL
阅读:Biscuit paper (2018)
LEC18 阅读:Scalable locks
阅读:slides
阅读:code
阅读:Non-scalable locks paper (2012)
LEC19 阅读:Scaling OSes slides
阅读:RCU (2013)
LEC20 阅读:Virtual Machines (1)
阅读:slides
LEC21 阅读:Virtual Machines (2)
阅读:slides
阅读:Dune: Safe User-level Access to Privileged CPU Features (2012)
LEC22 阅读:High-performance networking
阅读:IX: A Protected Dataplane Operating System for High Throughput and Low Latency (2014)

阅读练习

章节 内容 完成情况
Chapter1
Chapter2
Chapter3
Chapter4 练习1:触发竞态
Chapter5
Chapter6

课程视频

由于本课程视频较为模糊,因此我们以其他的视频进行替代

课程 内容 完成情况
第一讲 为何学习操作系统 完成
完成
完成
第三讲 操作系统启动流程 完成
中断、异常和系统调用比较 完成
中断、异常和系统调用题目 完成
系统调用及题目 完成
第四讲
第五讲:物理内存管理 计算机体系结构和内存层次 完成
地址空间和地址生成 完成:笔记记录在内存管理章节
连续内存分配 完成:笔记记录在内存管理章节
碎片整理
第六讲:非连续内存分配 非连续分配需求背景 完成
段式管理 完成
页式管理 完成
第十一讲:进程和线程 进程的概念 完成
进程控制块 完成
进程状态 完成
进程三状态模型 完成
进程挂起 完成
线程 完成
第十二讲:进程控制 进程切换 完成
进程创建 完成
进程加载 完成
第十三讲:内核线程管理

作业

作业 内容 完成情况
作业1:boot xv6 (Lecture2) Boot xv6 完成
Finding and breaking at an address 完成
Exercise: What is on the stack?
作业2:shell (Lecture3) 完成:6.033: Hands-on Assignment (UNIX) (mit.edu)
阅读:chapter 0 of the xv6 book 完成
阅读:6.828 shell 完成
完成:实验环境搭建 完成
完成:执行简单命令 完成
完成:IO重定向 完成
完成:实施管道 完成
完成:挑战练习
作业3:xv6 system calls (Lecture5) 完成:syscall函数 完成
完成:date函数 完成
作业4:lazy page allocation(Lecture6) 完成:修改sbrk函数 完成
完成:lazy allocation 完成
完成:挑战任务
作业5:CPU Alarm(Lecture7) 阅读:作业内容
作业6:Threads and Locking 完成:对put进行加锁保护 完成,但是Hash表原理不太懂,复习了一下,基本懂了

实 验

实验 内容 完成情况
Lab1 完成
Lab2 阅读:Introduction 完成
完成:实验环境搭建 完成
阅读:第一部分,物理页管理 完成
阅读:第二部分,虚拟内存 完成
阅读:第三部分,内核地址空间 完成
编程:编写一个物理内存分配 boot_alloc 完成
第一部分:编写mem_init() 完成
第一部分:编写page_init 完成
第一部分:编写page_alloc和page_free 完成
第二部分:编写pgdir_walk 完成
编写boot_map_region 完成
编写page_lookup 完成
编写page_insert 完成
编写page_delete 完成
第三部分:内核地址空间 完成
Lab3 源码阅读 完成
阅读进程状态章节 完成
进程创建及运行章节代码 完成
阅读:IA-32 Developer’s Manual 第五章 读到了5.10节
阅读”Basics of Protected Control Transfer” 完成
练习4,编写trapentry 完成
练习5,编写trap_dispatch 完成
练习6,编写断点异常 完成
Lab 4 课程准备 完成
第一部分
练习1:编写mmio_map_region函数 完成
练习2:阅读boot_aps、mp_main以及mpentry.S 完成
练习2:修改page_init,删除特定内存 完成
阅读CPU状态 完成
练习3:初始化每个CPU的内核栈 完成
练习4:编写trap_init_percpu 完成
练习5:对内核进行锁保护 完成
挑战1:使用细颗粒锁
练习6:完成Round-robin调度 完成
挑战2:添加优先级调度
挑战3:浮点单元支持
完成用于支持进程创建的系统调用 完成
练习7:sys_exofork实现 完成
第二部分

测试

参考文献

0%