Lecture 28: 课程复习(Course Review)

目录 · ← l20 · appendix →

Lecture 28: 课程复习(Course Review)

概述

期末复习课:梳理三大主题(并发管理、内存管理、存储管理)的全部知识点,并提炼课程最重要的五条大思想(big ideas):虚拟化、并发、原子性、局部性、分层。

知识地图(Lecture 28)

┌─ 并发管理 ─────────────────────────────────────────┐
│ 进程与线程: 创建、调度                              │
│ 同步: 竞态/不一致, 锁/条件变量/monitor, 锁的实现     │
│ CPU调度: 时间片, round robin, 优先级                │
│ 死锁: 四条件(互斥/不可抢占/持有并等待/循环等待),      │
│       检测与预防(全局锁序)                          │
├─ 内存管理 ─────────────────────────────────────────┤
│ 链接: 静态与动态                                   │
│ 动态分配: 栈与堆, 悬垂指针/内存泄漏                 │
│ 重定位: 静态/动态(基址界限, 分段, 分页)             │
│ x86-64 页表, TLB, OS与地址空间, 碎片               │
│ 请求调页: 按需取页/预取, 置换(随机/FIFO/MIN/LRU/     │
│   时钟/全局vs局部), 抖动                            │
├─ 存储管理 ─────────────────────────────────────────┤
│ 磁盘: 机制/操作/中断/PIO/DMA                       │
│ 文件: 访问模式, inode, 块布局(连续/链表/多级索引/    │
│   FAT/Unix), 块大小权衡                            │
│ 空闲空间: 链表/位图                                │
│ 缓存: 块缓存, 延迟写                              │
│ 磁盘调度: FIFO/SPTF/CSCAN                         │
│ 目录: 硬链接/符号链接                              │
│ 崩溃恢复: fsck/有序写/预写日志                     │
│ 闪存: FTL                                        │
└───────────────────────────────────────────────────┘
期中截止: 链接/动态分配/静态与动态重定位(基址界限/分段/分页)

五条大思想(带走的核心)

  1. 虚拟化(Virtualization):把一样东西变成另一样或许多个——CPU→线程、存储→文件、主存→地址空间(乃至整台机器→虚拟机)。
  2. 管理并发(Managing Concurrency):同步是最难的部分——竞态、死锁、调度都源于”多个执行流共享资源”。
  3. 原子性(Atomicity):让一组操作看起来不可分割——同步、文件系统一致性(事务/日志)都靠它。
  4. 局部性(Locality):过去常能预测未来——调度(SRPT 近似)、TLB、分页(LRU/时钟)、文件缓存全部建立在此假设上。
  5. 分层(Layering):用高层抽象隐藏底层细节——把难题解决掉,让其他人生活更美好。

后续课程建议(Lecture 28)

CS112(内核实现项目)、CS140E(OS 设计与实现)、CS240(OS 高级专题)、CS143(编译器)、CS144(计算机网络)、CS145(数据库)、CS244C(高级网络与分布式系统)。

思考题(总复习)

  1. 问题:用”虚拟化”一句话解释线程、文件、地址空间、虚拟机四个抽象。
    • 答案:线程虚拟化 CPU(一个核变多个执行流)、文件虚拟化磁盘(块集合变命名字节序列)、地址空间虚拟化内存(物理内存变每进程私有虚拟空间)、虚拟机虚拟化整台机器(一台物理机变多台完整机器)。
  2. 问题:原子性在”锁”和”日志文件系统”中分别起什么作用?
    • 答案:锁用原子操作(关中断/原子读改写)保证临界区互斥;日志文件系统用”事务”把一组日志条目变为原子单元(全有或全无),保证崩溃后文件系统一致。
  3. 问题:局部性如何同时解释 TLB、LRU 置换和磁盘调度?
    • 答案:TLB 靠时间/空间局部性缓存翻译(命中率>95%);LRU 用”过去最久未用=未来最久不用”预测替换;磁盘调度把请求按位置排序(SCAN/CSCAN)利用顺序访问局部性减少寻道——三者都是”过去预测未来”。