操作系统大纲

请注意以下标记约定:

  • L10, Px: 指 "Lecture 10 - Threads.pdf" 的第 x 页。
  • L11, Px: 指 "Lecture 11 - The Mutual Exclusion Problem.pdf" 的第 x 页。
  • L12, Px: 指 "Lecture 12 - Algorithmic Solutions to the Mutual Exclusion Problem.pdf" 的第 x 页。
  • L13_Sem, Px: 指 "Lecture 13 - Semaphores.pdf" 的第 x 页。
  • L13_HD, Sx: 指 "L13 (The hard disk).md" 中提及的 "CS253_L13ab.pdf" 的幻灯片编号 S x。
  • L14, Px: 指 "Lecture 14 - Producer Consumer Problem.pdf" 的第 x 页。
  • L15-16, Px: 指 "Lecture 15 and 16 - Dining Philosophers and Readers Writers Problems.pdf" 的第 x 页。
  • L17, Px: 指 "Lecture 17 - Deadlocks.pdf" (或 "Lecture 17 - Deadlocks (1).pdf", 内容相同) 的第 x 页。
  • L18, Px: 指 "Lecture 18 - Introduction to Memory Management.pdf" 的第 x 页。
  • L19-20, Px: 指 "Lecture 19 and 20 - Memory Management II.pdf" 的第 x 页。
  • L21-23, Px: 指 "Lecture 21 and 22 and 23 - File Systems.pdf" 的第 x 页。

操作系统原理与实践 (拟定书名)

教材目录

第一部分:引言与基础

  • (可从 L18 冯诺依曼体系结构引入)

第二部分:进程与线程管理

  • 第1章:线程 (Threads)
    • 1.1 顺序进程执行模式 (L10, P1-2)
    • 1.2 进程创建开销回顾 (L10, P2)
    • 1.3 顺序进程内存空间组织 (L10, P3)
    • 1.4 进程执行上下文相关数据子集 (L10, P4)
    • 1.5 多线程进程 (L10, P5-7)
      • 1.5.1 线程的优势 (L10, P6-7)
        • 更好的资源利用/创建更快 (L10, P6)
        • 多核架构下改进程序性能及GUI应用响应性 (L10, P7)
        • 减少网络协议问题 (服务器响应性) (L10, P7)
        • 易于程序员理解的并行概念 (L10, P7)
    • 1.6 实现线程支持 (L10, P8)
      • 1.6.1 用户空间线程 (L10, P9-11)
        • 优点与缺点 (L10, P9-11)
      • 1.6.2 内核空间线程 (L10, P12-13)
        • 优点 (L10, P12-13)
      • 1.6.3 内核多线程设计 (L10, P14)
    • 1.7 Unix中的线程管理 – POSIX接口 (L10, P15-20)
      • 1.7.1 pthread 线程创建 (L10, P16-17)
      • 1.7.2 线程终止与结果收集 (L10, P18)
      • 1.7.3 分离线程与清理已分配结构 (L10, P19)
      • 1.7.4 pthread 创建与终止示例 (L10, P17, P19-20)

第三部分:并发控制

  • 第2章:互斥问题 (The Mutual Exclusion Problem)

    • 2.1 互斥问题陈述 (L11, P1)
    • 2.2 火车司机问题类比 (L11, P2-7)
      • 2.2.1 方法一及其问题 (L11, P4-5)
      • 2.2.2 方法二及其问题 (L11, P6)
      • 2.2.3 方法三及其问题 (L11, P7)
      • 2.2.4 方法四及其分析 (L11, P8-9)
    • 2.3 互斥问题的算法解决方案 (L12, P1-13)
      • 2.3.1 正确解决方案的必要条件 (L12, P1)
      • 2.3.2 设计目标 (L12, P2)
      • 2.3.3 双线程软件解决方案 (L12, P2-4)
        • 方法二回顾 (turn变量) (L12, P2)
        • 方法三回顾 (flag数组) (L12, P3)
        • Peterson算法 (结合方案) (L12, P3-4)
      • 2.3.4 N线程通用软件解决方案 (面包店算法) (L12, P5-7)
        • 选择票号 (L12, P5)
        • 等待进入临界区 (L12, P6)
        • 算法代码 (L12, P6-7)
      • 2.3.5 多处理器系统和带缓存系统的互斥问题 (L12, P8-9)
      • 2.3.6 多处理器系统互斥解决方案 (L12, P10-12)
        • 禁用中断/禁用抢占 (L12, P10)
        • 原子test-and-set指令 (L12, P10-11)
        • 不可分割的硬件指令 (swap/xchg) (L12, P12)
      • 2.3.7 忙等待 (Busy Waiting) (L12, P13)
  • 第3章:信号量 (Semaphores)

    • 3.1 已有互斥解决方案的局限性 (L13_Sem, P1-3)
      • 3.1.1 软件算法与多处理器操作 (L13_Sem, P2)
      • 3.1.2 基于原子指令的自旋锁方案 (L13_Sem, P3)
    • 3.2 忙等待问题回顾 (L13_Sem, P4-5)
      • 3.2.1 忙等待实现的缺点 (L13_Sem, P5)
    • 3.3 信号量引出 (L13_Sem, P6)
    • 3.4 信号量定义 (L13_Sem, P7)
      • 3.4.1 P操作和V操作 (L13_Sem, P7)
      • 3.4.2 P和V操作的原子性 (L13_Sem, P7)
    • 3.5 信号量类型 (L13_Sem, P8)
      • 3.5.1 二进制信号量 (Mutex) (L13_Sem, P8)
      • 3.5.2 计数信号量 (L13_Sem, P8)
    • 3.6 实现P和V操作原子性的建议 (L13_Sem, P9-10)
    • 3.7 信号量的使用 (L13_Sem, P11)
      • 3.7.1 实现互斥 (L13_Sem, P11)
      • 3.7.2 通用同步 (L13_Sem, P11)
    • 3.8 C程序中使用POSIX Mutex示例 (L13_Sem, P12)
    • 3.9 信号量的实际实现 (克服忙等待和公平访问) (L13_Sem, P13-14)
    • 3.10 经典协调问题引言 (L13_Sem, P15)
  • 第4章:经典同步问题 (Classical Coordination Problems)

    • 4.1 生产者-消费者问题 (有界缓冲区问题) (L14, P1-14)
      • 4.1.1 Java同步和内置对象锁回顾 (L14, P1)
      • 4.1.2 wait() 和 notify() (L14, P2)
      • 4.1.3 Java实现的信号量类 (L14, P3)
      • 4.1.4 问题描述 (L14, P4)
      • 4.1.5 同步方法 (使用3个信号量: empty, full, mutex) (L14, P5)
      • 4.1.6 Buffer类实现 (L14, P6-8)
      • 4.1.7 Producer线程行为定义 (L14, P9-11)
      • 4.1.8 Consumer线程行为定义 (L14, P12-13)
      • 4.1.9 主程序模拟 (L14, P14)
    • 4.2 哲学家就餐问题 (L15-16, P1-13)
      • 4.2.1 问题描述 (L15-16, P1-2)
      • 4.2.2 信号量类回顾 (L15-16, P3)
      • 4.2.3 初始同步实现 (可能死锁) (L15-16, P4-6)
      • 4.2.4 避免死锁的方法 (L15-16, P7-12)
        • 方法一:限制并发性 (最多允许四个哲学家) (L15-16, P7-8)
        • 方法二:预防“持有并等待” (同时获取两只筷子) (L15-16, P9-10)
        • 方法三:预防“持有并等待” (非对称解决方案) (L15-16, P11-12)
      • 4.2.5 关于哲学家就餐问题的总结思考 (饥饿问题) (L15-16, P13)
    • 4.3 读者-写者问题 (L15-16, P14-33)
      • 4.3.1 问题描述 (L15-16, P14)
      • 4.3.2 两种解决方案概述 (L15-16, P15)
      • 4.3.3 第一种读者-写者问题解决方案 (读者优先) (L15-16, P16-25)
        • 设计策略 (L15-16, P16-17)
        • Java实现 (DataAccessPolicyManager类) (L15-16, P18-20)
        • 模拟:Reader和Writer线程定义 (L15-16, P21-23)
        • 系统快照示例 (L15-16, P24-25)
      • 4.3.4 第二种读者-写者问题解决方案 (写者优先) (L15-16, P26-33)
        • 设计策略与所需数据结构 (L15-16, P26)
        • Java实现 (DataAccessPolicyManager2类) (L15-16, P27-31)
        • 代码问题与改进 (减少rdr信号量竞争) (L15-16, P32-33)
  • 第5章:死锁 (Deadlocks)

    • 5.1 死锁模型与资源 (L17, P1)
    • 5.2 跟踪系统资源使用情况 (L17, P2)
    • 5.3 细致编程的重要性 (L17, P3)
    • 5.4 资源使用协议 (请求-使用-释放) (L17, P4)
    • 5.5 死锁的定义 (L17, P5)
    • 5.6 死锁的四个必要条件 (L17, P6)
      • 5.6.1 互斥 (L17, P6)
      • 5.6.2 持有并等待 (L17, P6)
      • 5.6.3 非抢占 (L17, P6)
      • 5.6.4 循环等待 (L17, P6)
    • 5.7 资源分配图 (L17, P7)
    • 5.8 死锁的识别 (L17, P8-10)
      • 5.8.1 图中环路与死锁 (L17, P8-10)
    • 5.9 处理死锁的方法 (L17, P11)
      • 5.9.1 确保系统永不进入死锁状态 (L17, P12-23)
        • 死锁预防 (L17, P12-14)
        • 死锁避免 (L17, P15-23)
          • 银行家算法 (L17, P16-23)
      • 5.9.2 允许系统进入死锁然后恢复 (L17, P24-26)
        • 死锁检测 (L17, P24)
        • 死锁恢复 (进程终止,资源抢占,回滚) (L17, P25-26)
      • 5.9.3 完全忽略问题 (如Unix) (L17, P11)

第四部分:内存管理

  • 第6章:内存管理导论 (Introduction to Memory Management)

    • 6.1 冯诺依曼体系结构回顾 (L18, P1-3)
    • 6.2 内存系统层次结构 (L18, P4-6)
    • 6.3 操作系统内存管理器的职责 (L18, P6-7)
    • 6.4 单道程序设计 (Monoprogramming) (L18, P8)
    • 6.5 多道程序设计 (Multiprogramming) (L18, P9-10)
      • 6.5.1 内存保护需求 (L18, P9)
      • 6.5.2 地址重定位需求 (L18, P10)
    • 6.6 内存分区与硬件支持 (L18, P11)
      • 6.6.1 固定大小区域 (方案1) (L18, P11)
      • 6.6.2 动态地址生成 (基址寄存器和界限寄存器) (L18, P12)
      • 6.6.3 保护机制 (L18, P13)
    • 6.7 固定分区的问题 (L18, P14-16)
      • 6.7.1 进程分配到固定分区 (L18, P14)
      • 6.7.2 固定分区的效率问题 (L18, P15)
      • 6.7.3 分区大小的确定 (L18, P15-16)
        • 外部碎片 (External Fragmentation) (L18, P15)
        • 内部碎片 (Internal Fragmentation) (L18, P16)
    • 6.8 动态分区 (方案2) (L18, P17-20)
      • 6.8.1 动态创建分区 (L18, P17)
      • 6.8.2 内存空间分配与回收示例 (L18, P18)
      • 6.8.3 动态分区导致的外部碎片 (L18, P19)
      • 6.8.4 内存紧缩 (Compaction) (L18, P20)
  • 第7章:高级内存管理技术 (Memory Management II)

    • 7.1 动态分区回顾与堆管理 (L19-20, P1-2)
    • 7.2 线性内存空间管理的关键思想 (L19-20, P3)
      • 7.2.1 位图 (Bit Maps) (L19-20, P4-8)
        • 结构开销 (L19-20, P5)
        • 分配单元大小的影响 (L19-20, P6-7)
        • 操作效率 (分配与回收) (L19-20, P7-8)
      • 7.2.2 链表 (Linked Lists) (L19-20, P9-13)
        • 跟踪空闲内存空间 (L19-20, P9)
        • 分配与回收 (L19-20, P10)
        • 开销与存储位置 (L19-20, P11)
        • 搜索与分配策略 (放置算法:最佳、最差、首次、下次适应) (L19-20, P12)
        • 回收时的合并操作 (L19-20, P13)
      • 7.2.3 位图与链表比较 (L19-20, P14)
      • 7.2.4 伙伴系统 (Buddy System) (L19-20, P15-16)
    • 7.3 页式架构 (Paged Architecture) (L19-20, P17-22)
      • 7.3.1 硬件支持需求 (MMU) (L19-20, P17)
      • 7.3.2 页与页表 (L19-20, P18-20)
      • 7.3.3 地址转换 (L19-20, P20)
      • 7.3.4 页式架构的优点 (保护、非连续分配、易于重定位和扩展) (L19-20, P21)
      • 7.3.5 页式架构的缺点 (页表大小、额外内存访问、内部碎片) (L19-20, P22)
    • 7.4 请求调页 (Demand Paging) (L19-20, P23-27)
      • 7.4.1 系统性能与设备利用率 (L19-20, P23)
      • 7.4.2 局部性原理 (Locality of Reference) (L19-20, P23)
      • 7.4.3 请求调页的关键思想 (L19-20, P24)
      • 7.4.4 交换文件 (Swap File) (L19-20, P25)
      • 7.4.5 页表修改 (有效/无效位) (L19-20, P26)
      • 7.4.6 页错误 (Page Fault) 处理 (L19-20, P26-27)
    • 7.5 工作集 (Working Set) (L19-20, P28)
    • 7.6 页面置换算法 (Page Replacement Algorithms) (L19-20, P29-41)
      • 7.6.1 页面置换的效率问题 (L19-20, P30-31)
        • 颠簸 (Thrashing) (L19-20, P30)
        • 有效访问时间计算示例 (L19-20, P31)
      • 7.6.2 最优页面置换算法 (Optimal) (L19-20, P32-33)
      • 7.6.3 先进先出算法 (FIFO) (L19-20, P34-35)
      • 7.6.4 最近最少使用算法 (LRU) (L19-20, P36-37)
      • 7.6.5 最不经常使用算法 (LFU) (L19-20, P38)
      • 7.6.6 Belady异常 (Belady's Anomaly) (L19-20, P39-41)

第五部分:存储管理

  • 第8章:硬盘驱动器与基本I/O (The Hard Disk & Basic I/O)

    • 8.1 硬盘基本结构 (L13_HD, S1)
      • 8.1.1 主要组件 (盘片, 磁头, 马达, 外壳) (L13_HD, S1)
    • 8.2 磁盘布局 (L13_HD, S2)
      • 8.2.1 关键概念 (柱面, 主轴, 磁道, 扇区) (L13_HD, S2)
      • 8.2.2 数据读取方式与容量计算 (L13_HD, S2)
    • 8.3 磁读/写头原理 (L13_HD, S2)
      • 8.3.1 写入与读取原理 (法拉第定律) (L13_HD, S2)
      • 8.3.2 信号处理 (放大器, 阈值比较器) (L13_HD, S2)
    • 8.4 磁头与盘片间隙 (L13_HD, S3)
    • 8.5 数据编码方式 (L13_HD, S3-S5)
      • 8.5.1 FM数据编码 (L13_HD, S3)
      • 8.5.2 锁相环 (PLL) (L13_HD, S4)
      • 8.5.3 MFM数据编码 (L13_HD, S4)
      • 8.5.4 RLL数据编码 (L13_HD, S5)
      • 8.5.5 GMR磁头技术 (L13_HD, S5)
    • 8.6 硬盘性能参数 (L13_HD, S6-S7)
      • 8.6.1 访问时间, 寻道时间, 等待时间, 传输速率 (L13_HD, S6-S7)
    • 8.7 磁道/扇区格式 (L13_HD, S6-S7)
      • 8.7.1 扇区内容与校验和 (L13_HD, S6-S7)
      • 8.7.2 格式化操作 (L13_HD, S6-S7)
    • 8.8 磁盘驱动器控制器 (L13_HD, S8)
      • 8.8.1 作用与示例 (8272软盘控制器) (L13_HD, S8)
    • 8.9 错误检测与纠正 (L13_HD, S8-S9)
      • 8.9.1 基本思想与多维奇偶校验码 (MDPC) (L13_HD, S8-S9)
    • 8.10 磁盘接口 (L13_HD, S13)
      • 8.10.1 IDE/EIDE (L13_HD, S13)
      • 8.10.2 SCSI (L13_HD, S13)
    • 8.11 RAID (随机廉价磁盘阵列) (L13_HD, S13-S14)
      • 8.11.1 目的与基本原理 (L13_HD, S13)
      • 8.11.2 优点与RAID级别 (0, 1, 3, 5, 10) (L13_HD, S14)
    • 8.12 CD-ROM 与 DVD (L13_HD, S15-S16)
      • 8.12.1 容量对比与生产方式 (L13_HD, S15)
      • 8.12.2 CD-ROM结构与读取原理 (L13_HD, S16)
    • 8.13 (章节移至下方“操作系统结构与保护”)
  • 第9章:文件系统 (File Systems)

    • 9.1 文件系统基本概念 (L21-23, P1)
      • 9.1.1 文件与文件系统定义 (L21-23, P1)
      • 9.1.2 存储设备 (SSD vs 磁盘) (L21-23, P1)
    • 9.2 磁盘组织 (L21-23, P2)
      • 9.2.1 数据块 (L21-23, P2)
    • 9.3 文件系统设计需求 (L21-23, P3-4)
    • 9.4 文件系统用户接口功能 (L21-23, P5)
      • 9.4.1 Open, Close, Create, Delete, Copy, Rename, Get/Set Attributes (L21-23, P5)
    • 9.5 文件组织 (L21-23, P6)
      • 9.5.1 非结构化字节集合与结构化记录集合 (L21-23, P6)
    • 9.6 文件访问操作 (L21-23, P7)
      • 9.6.1 Read, Write, Seek, Append, 结构化文件操作 (Retrieve, Update, Insert, Remove) (L21-23, P7)
    • 9.7 文件I/O操作实现示例 (L21-23, P8-13)
      • 9.7.1 目录文件 (Directory File) (L21-23, P9-10)
      • 9.7.2 连续分配下的物理块定位 (L21-23, P11-12)
      • 9.7.3 提取记录并移至缓冲区 (L21-23, P13)
    • 9.8 提高文件访问效率 (L21-23, P14-17)
      • 9.8.1 目录的存储与访问 (L21-23, P15)
      • 9.8.2 打开与关闭文件 (缓存目录信息) (L21-23, P16)
      • 9.8.3 磁盘块缓存 (L21-23, P17)
    • 9.9 空闲空间管理 (L21-23, P18-19)
      • 9.9.1 自动文件空间分配 (L21-23, P18)
      • 9.9.2 使用目录数据结构描述空闲区 (连续分配) (L21-23, P19)
    • 9.10 动态空间分配 (L21-23, P20-22)
      • 9.10.1 连续分配的问题 (L21-23, P20-21)
      • 9.10.2 文件重定位 (L21-23, P22)
    • 9.11 其他空间分配技术 (L21-23, P23-33)
      • 9.11.1 链接分配 (Linked Allocation) (L21-23, P24-28)
        • 优缺点 (L21-23, P25-27)
        • 文件分配表 (FAT) (L21-23, P28; 另见 L13_HD, S10-S12)
      • 9.11.2 索引分配 (Indexed Allocation) (L21-23, P29-33)
        • 优缺点 (L21-23, P31-32)
        • 空闲空间索引 (L21-23, P33)
    • 9.12 最佳分配方法的选择 (L21-23, P34)
    • 9.13 磁盘格式化与引导记录 (L13_HD, S9)
    • 9.14 文件分配表 (FAT) 与簇 (L13_HD, S10)
      • 9.14.1 FAT16 (L13_HD, S10)
      • 9.14.2 FAT32 (L13_HD, S11)
    • 9.15 根目录结构 (FAT) (L13_HD, S11)
    • 9.16 文件与簇的链接 (FAT) (L13_HD, S12)
    • 9.17 文件删除机制 (FAT) (L13_HD, S15)
    • 9.18 分层文件系统命名空间 (L21-23, P35-42)
      • 9.18.1 需求与子目录 (L21-23, P35-37)
      • 9.18.2 唯一文件名与路径 (L21-23, P38)
      • 9.18.3 根目录与遍历 (L21-23, P39)
      • 9.18.4 当前目录与搜索路径 (L21-23, P40)
      • 9.18.5 命名空间导航 (父目录 "..", 当前目录 ".") (L21-23, P41-42)
    • 9.19 分层命名空间实现示例 (索引分配) (L21-23, P43-44)
    • 9.20 Unix文件系统 (L21-23, P45-52)
      • 9.20.1 索引节点 (inodes) (L21-23, P45-46)
      • 9.20.2 Unix目录文件 (L21-23, P47)
      • 9.20.3 Unix文件系统结构 (引导块, 超级块, inode列表, 数据块) (L21-23, P48-51)
      • 9.20.4 统一文件命名空间 (挂载) (L21-23, P52)
    • 9.21 内核文件系统数据结构 (Unix) (L21-23, P53-56)
      • 9.21.1 用户描述符表 (User Descriptor Table) (L21-23, P54)
      • 9.21.2 系统文件表 (System File Table) (L21-23, P55)
      • 9.21.3 vnode结构 (L21-23, P56)

第六部分:操作系统结构与保护

  • 第10章:系统操作与硬件保护 (主要来自 L13_HD 的模块五)
    • 10.1 计算机系统操作概述 (L13_HD, S17)
      • 10.1.1 典型组件与启动过程 (L13_HD, S17)
    • 10.2 中断 (Interrupts)
      • 10.2.1 中断向量表与处理流程 (L13_HD, S18)
      • 10.2.2 中断禁用与优先级 (L13_HD, S18)
      • 10.2.3 中断概述 (控制权交接, 轮询) (L13_HD, S18下半部分 & S19)
      • 10.2.4 I/O与中断时序 (L13_HD, S18)
      • 10.2.5 8086中断来源 (硬件, 软件, 错误/故障) (L13_HD, S19)
      • 10.2.6 中断检测时机 (L13_HD, S19)
    • 10.3 I/O 结构与方法
      • 10.3.1 设备控制器与UART示例 (L13_HD, S19)
      • 10.3.2 同步I/O (L13_HD, S20)
      • 10.3.3 异步I/O (L13_HD, S20)
      • 10.3.4 更优的异步I/O (设备状态表, 请求队列) (L13_HD, S21)
    • 10.4 硬件保护机制 (L13_HD, S21-S24)
      • 10.4.1 目标与错误处理 (L13_HD, S21)
      • 10.4.2 双重模式操作 (用户模式, 监控模式) (L13_HD, S22)
      • 10.4.3 I/O 保护 (特权指令) (L13_HD, S23)
      • 10.4.4 内存保护 (基址寄存器, 界限寄存器) (L13_HD, S23-S24)
      • 10.4.5 CPU 保护 (定时器中断, 上下文切换, 时间片) (L13_HD, S24)
    • 10.5 系统调用 (System Call) (L13_HD, S25)
      • 10.5.1 定义与实现方式 (陷阱) (L13_HD, S25)

这个目录应该能很好地组织这些讲义内容。您可以根据实际需要调整章节划分和顺序。祝您编撰顺利!

posted @ 2025-05-25 20:52  糖子哥  阅读(21)  评论(0)    收藏  举报