Vince Jiang

CSCI3150 / 阅读与复习 · 本站更新

CSCI3150 全新课程伴读

这套笔记面向第一次学习操作系统的读者,按原课件顺序分段讲解。可以从定义、代码、图表和原例题一路读到中间推理与结果,不必同时开着 PPT 对照才能继续。2026-10-22 再次对照 Lecture 与 Tutorial 原页检查,补清代码执行、指针关系、页表寻址和图片中的 FAT16 编码表;补充例子与原课件内容明确区分。

Lecture 与 Tutorial 的现有来源共 792 页,Lab01 和 Lab02 另有 38 页,对应 39 份逐讲/分段解释。其余为 Lab02 操作教程、HW01 详读、HW01 分级提示和 HW02 详细解析。页数表示现有材料范围,不代表已经取得所有本学期后续课件。

本入口串联 43 篇正文与练习引导。第一次学操作系统,可以从“一个命令如何运行”进入,再走到文件、调度、内存与并发;已经在做实验时,则按卡住的具体机制跳转。每篇保留原课件页序,补充段会区分课件事实、解释用例子与接口边界。

先认版本:L00–L02、Lab01、Lab02、HW01和HW02使用2026T1材料;Lab02原PDF未印学期,按当期单元归类。L03–L06、L08–L15使用2022未核历史讲义,适合概念预习;T01–T12为2025T2(2026春)历史辅导,个别封面日期冲突在正文说明。L07缺原件,不补造一讲。历史作业日期、环境规格、评分规则不自动沿用到2026T1。

原PPT、PDF与教师代码包保留本地,网页展示的是学习解释。正文中原件链接用于说明出处,不表示课件已公开下载。题型证据区分直接题目、讲义说明与通识训练,不把历史考过说成本学期必考。

从哪里开始

你现在遇到的问题 先读什么 读完应能独立解释什么
不清楚OS究竟管理什么 课程介绍 → 概览 一个文件求和程序怎样跨越接口、存储、调度、内存与并发
fork后有几份变量、谁在运行 进程 → T03管道 父子执行位置、exec成功/失败路径、wait回收
指针、数组和free混淆 内存API → Lab02逐页 对象大小、存储期、别名、首次非法访问
输出重定向或EOF卡住 文件与目录 → HW01详解 描述符表、打开对象、所有端点引用与等待依赖
不明白文件在磁盘上怎样找 文件系统实现 → FAT 目录查名、inode/索引或FAT查块、字节偏移和容量
不会画调度表 调度入门 → MLFQ → T07逐步表 到达、片到期、预算、提升分别改变哪个状态
地址位数与页表总算错 地址空间 → 分页 → T10按字编址 地址单位、各级索引、页内偏移与最终数据地址
多线程偶尔正确、偶尔挂住 线程竞争 → 条件变量 → 并发故障 不变量、wait释放锁、通知对象、死锁等待环

按顺序学完所有 Lecture

第一次学建议依次走完下面六段。同一讲拆成多个 Part 时按 P1、P2、P3、P4 顺读;不要因为已经会算例题就跳过题目前面的假设。每次读完一小节,先合上答案自己画一次状态,再继续下一节。

阶段 Lecture 顺序 这一段必须能自己做出来的事 配套练习
1.建立执行模型 L00 → L01 区分程序、进程、线程;逐条说明 load/add/store 为什么会丢失一次更新 L01 两线程 50→51 的逐页过程
2.从 C 程序请求 OS 服务 L02 → L03 → L04 画 fork 分支、对象寿命和描述符引用;解释 exec、wait、EOF、链接和 rename T03、Lab02
3.追到磁盘与设备 L05 → L06 从路径查 inode,从文件偏移查数据块;沿请求队列解释驱动怎样等待并被唤醒 HW02、T11、T12
4.决定 CPU 先给谁 L08 P1 → P2 → P3 → P4 区分周转与响应;按到达、片长、预算和提升事件逐段排队;说明多核共享队列的竞争 T07
5.把虚拟地址变成实际访问 L09 P1 → P2 → L10 P1 → P2 → L11 P1 → P2 → L12 写清地址单位和位划分;分别算页表项地址、表项内容、最终物理地址;区分 TLB miss、缺页与非法访问 T09、T10
6.让共享状态按规则改变 L13 P1 → P2 → L14 P1 → P2 → L15 P1 → P2 构造错误交错,再用锁、条件变量或信号量解释怎样排除;区分工作完成通知、线程终止与资源回收 T04、T05、T06

L07 目前没有原件,所以从 L06 接 L08;这里没有把缺讲隐去或自行编造。历史 Tutorial 的试题可用于练机制,当前课程的要求仍看当期材料。读到原课件代码的拼写、作用域或同步错误时,先看紧邻的说明:原样片段帮助理解老师讲什么,明确标注的修正才说明应怎样改。

动手学习的入口

  • 编译基础:Lab01环境 → GCC与Makefile。先确定命令在哪个系统和目录执行,再区分编译、链接与运行错误。
  • C与文件读取:Lab02逐页伴读 → 操作教程。2026-09-26公告已允许stdio或POSIX两套文件I/O路线,只交exercise.c,不改Makefile;最终以该任务的当期公告为准。
  • 独立挑战Shell:HW01分级提示。先自己画参数与资源状态,卡住再开下一层;完整解析链接另行收起,避免误看答案。
  • 文件系统题解:HW02 详细解析,逐问解释文件块映射、目录项与路径遍历。
  • 对照具体解释:HW01进程与管道详读展示原教程、描述符接线与官方样例过程;它与提示版用途不同。

怎样判断自己真的理解了

读数值题时先遮住结果,写清单位和假设,再按事件逐行更新状态;最后用守恒关系反查,但别把总量正确当成每步正确。读程序时分开记录“对象有几份、谁有引用、谁能修改、何时失效”,既走成功路径也走一个失败路径。读并发时主动构造一次会打断检查与使用的交错,说明同步协议怎样挡住它。正文中的折叠自测供你先回答再对照,不必一开始全部展开。

下面保留逐单元版本与原页码,适合对照讲义查阅。分Part并不改变原课件主题顺序。

单元 版本 页数 伴读
L00 2026T1 12 L00-课程介绍
L01 2026T1 50 L01-课程概览
L02 2026T1 22 L02-系统调用-进程
L03 2022未核 17 L03-系统调用-内存
L04 2022未核 48 L04-系统调用-文件与目录
L05 2022未核 28 L05-文件系统实现
L06 2022未核 26 L06-IO设备
L08 2022未核 64 L08-P1-调度入门、L08-P2-多级反馈队列、L08-P3-比例份额、L08-P4-多处理器调度
L09 2022未核 45 L09-P1-地址空间、L09-P2-地址转换
L10 2022未核 33 L10-P1-分段、L10-P2-分页
L11 2022未核 40 L11-P1-TLB、L11-P2-高级分页
L12 2022未核 18 L12-交换空间与缺页
L13 2022未核 51 L13-P1-线程与竞争、L13-P2-线程API
L14 2022未核 52 L14-P1-锁的实现、L14-P2-条件变量
L15 2022未核 55 L15-P1-信号量、L15-P2-并发故障
Lab02 当期单元,封面未印学期 16 C内存与文件IO、操作教程
HW01 2026T1 教程4页、图解1页、题目1页 分级提示、进程与管道详读
Lab01 2026T1 22 Lab01-P1-环境配置、Lab01-P2-GCC与Makefile
T01 2025T2(2026春) 16 T01-Linux与C基础
T02 2025T2(2026春) 17 T02-Shell行为与框架
T03 2025T2(2026春) 13 T03-系统调用与管道
T04 2025T2(2026春) 14 T04-pthread与读写锁
T05 2025T2(2026春) 20 T05-条件变量与屏障
T06 2025T2(2026春) 21 T06-进程间信号量
T07 2025T2(2026春) 45 T07-MLFQ逐步演算
T08 2025T2(2026春) 24 T08-期中题与解答核验
T09 2025T2(2026春) 14 T09-换页算法演算
T10 2025T2(2026春) 10 T10-分页地址转换
T11 2025T2(2026春) 21 T11-文件系统API
T12 2025T2(2026春) 16 T12-FAT文件系统

各单元原件与页码

页码均是对应PDF副本的页号。每份按原课件顺序展开;分Part的范围连续衔接。

L00 · 2026T1

原件(本地课件) · 页码来源(本地课件),共12页。

L01 · 2026T1

原件(本地课件) · 页码来源(本地课件),共50页。

L02 · 2026T1

原件(本地课件) · 页码来源(本地课件),共22页。

L03 · 2022未核

原件(本地课件) · 页码来源(本地课件),共17页。

L04 · 2022未核

原件(本地课件) · 页码来源(本地课件),共48页。

L05 · 2022未核

原件(本地课件) · 页码来源(本地课件),共28页。

L06 · 2022未核

原件(本地课件) · 页码来源(本地课件),共26页。

L08 · 2022未核

原件(本地课件) · 页码来源(本地课件),共64页。

L09 · 2022未核

原件(本地课件) · 页码来源(本地课件),共45页。

L10 · 2022未核

原件(本地课件) · 页码来源(本地课件),共33页。

L11 · 2022未核

原件(本地课件) · 页码来源(本地课件),共40页。

L12 · 2022未核

原件(本地课件) · 页码来源(本地课件),共18页。

L13 · 2022未核

原件(本地课件) · 页码来源(本地课件),共51页。

L14 · 2022未核

原件(本地课件) · 页码来源(本地课件),共52页。

L15 · 2022未核

原件(本地课件) · 页码来源(本地课件),共55页。

Lab01 · 2026T1

原件(本地课件) · 页码来源(本地课件),共22页。

T01 · 2025T2(2026春)

原件(本地课件) · 页码来源(本地课件),共16页。

T02 · 2025T2(2026春)

原件(本地课件) · 页码来源(本地课件),共17页。

T03 · 2025T2(2026春)

原件(本地课件) · 页码来源(本地课件),共13页。

T04 · 2025T2(2026春)

原件(本地课件) · 页码来源(本地课件),共14页。

T05 · 2025T2(2026春)

原件(本地课件) · 页码来源(本地课件),共20页。

T06 · 2025T2(2026春)

原件(本地课件) · 页码来源(本地课件),共21页。

T07 · 2025T2(2026春)

原件(本地课件) · 页码来源(本地课件),共45页。

T08 · 2025T2(2026春)

原件(本地课件) · 页码来源(本地课件),共24页。

T09 · 2025T2(2026春)

原件(本地课件) · 页码来源(本地课件),共14页。

T10 · 2025T2(2026春)

原件(本地课件) · 页码来源(本地课件),共10页。

T11 · 2025T2(2026春)

原件(本地课件) · 页码来源(本地课件),共21页。

T12 · 2025T2(2026春)

原件(本地课件) · 页码来源(本地课件),共16页。