SICI · 天机门 · 第十七章

操作系统 · 元婴一层·系统御灵

你以为多进程共享资源就行。但死锁、竞态、饥饿让并发编程成为深渊。操作系统的灵魂不是管理充裕的资源——是承认资源永远不够。

死锁之环低语:「简单。开五个程序,资源够用的。赌不赌?」
序章

资源殿

五个程序同时跑,哪个不卡?操作系统管什么?

资源殿穹顶悬着四盏法器灯:CPU、内存、磁盘、设备,各泛着冷光。殿中央是一座环形祭坛,坛上刻着四个字——"万物皆资源"。

文件之库,文件系统
诺依曼老祖 诺依曼老祖

「操作系统是御灵者。它分配、调度、隔离、保护——让无数进程在一具肉身上共存。」

死锁之环 死锁之环

「简单。开五个程序,资源够用的。赌不赌?」

资源够用预测挑战器

反直觉下注(五选一,可连错)→ 资源占用全景拼合 → OS演进时间轴

死锁之环逼你下注:同时全开,哪个不会卡?
指认一个剪影——亮出它的资源占用
第一幕 · 自信→崩塌

进程阁 · 状态之轮

进程是运行中的程序,上下文切换有代价

阁中央悬着一架巨大的状态轮:就绪、运行、阻塞三盏灯,被箭头连成环。轮下排着五个进程晶核。

诺依曼老祖 诺依曼老祖

「进程是运行中的程序。程序是死的,进程是活的——它有状态、有身份、有上下文。开五个,看看会怎样。」

死锁之环 死锁之环

「开嘛。五个一起跑。资源够用的。」

进程状态轮转模拟 · 上下文切换实验台

激活五进程 → 状态轮转 → 切换频率滑块(CPU利用率先升后降)→ PCB解剖

切换频率
freq = 20
第一幕 · 崩塌

调度场 · 公平之妄

FCFS/SJF/RR/优先级/MLFQ——没有一种对所有人都公平

调度场是一片开阔的石台,台面刻着五道调度符文。台边立着一排进程——有长有短,有急有缓。

诺依曼老祖 诺依曼老祖

「CPU只有一个,进程有十个。谁先跑?你选一种调度,看看公不公平。」

死锁之环 死锁之环

「公平嘛。先来先服务,天经地义。选它。」

调度五算法推演器

线程切分 → 五算法符文切换 → 甘特图实时模拟 → 平均等待/周转时间 → 三种公平崩塌

分灵刀:进程太重,切成线程——共享内存,各有栈
第一幕 · 紧绷

实时钟 · 截止之刃

RM/EDF——硬实时任务迟一毫秒就是事故

石台尽头是一座倒计时钟塔,塔面嵌着多个任务,每个任务都带一个红色截止刻度。

诺依曼老祖 诺依曼老祖

「这些不是普通进程。刹车、气囊、心脏起搏器——迟一毫秒,就是一条命。RM按周期分配优先级,EDF按截止期最近优先。选一种,看看能不能让它们全部准时。」

实时调度模拟器 · RM/EDF双模式

RM试炼(T3错过截止期)→ EDF试炼(全部准时)→ 过载实验(EDF也错过)

第二幕 · 挣扎→再崩塌

内存域 · 分而治之

连续/分页/分段——没有免费的午餐,虚拟内存是最大的魔术

内存域是一片悬浮的方格阵列,每一格是一个内存页框。域中央有三座分配法器:连续分配柱、分页塔、分段阁。

诺依曼老祖 诺依曼老祖

「进程要占内存。怎么分?连续分配最直觉——但会碎。分页最整齐——但要查表。分段最贴合程序——但也会碎。你试。」

内存分配三法器 · 虚拟内存映射

连续/分页/分段切换 → 碎片可视化 → 虚拟页→物理页框映射 → 缺页中断

第二幕 · 谷底

置换渊 · 抖动之痛

FIFO有Belady异常,过载则抖动——CPU利用率归零

置换渊是一口深井,井壁嵌满了内存页框。井底是磁盘——换出去的页沉下去,换回来时再浮上来。井沿刻着四种置换符文。

诺依曼老祖 诺依曼老祖

「内存只有3个页框。进程要访问7个页。换谁出去?选一种。」

死锁之环 死锁之环

「换出去再换回来嘛,能有多难?选FIFO,简单的。」

置换曲线追踪器

四算法切换 → 帧数滑块(Belady异常检测)→ 缺页计数 → 抖动实验

抖动实验 · 并发进程数 vs CPU利用率

第二幕 · 系统视野

文件塔 · 持久之器

连续/链接/索引分配 + 磁盘调度——持久化存储的全链权衡

文件塔是一座层叠的石塔,每一层是一块磁盘盘面,盘面上布满扇区。塔基立着三座分配法器。

诺依曼老祖 诺依曼老祖

「进程死了,文件还在。怎么存?怎么找?怎么读得快?」

文件分配三法 + 磁盘调度四算法

连续/链接/索引分配 → inode解剖 → FCFS/SSTF/SCAN/C-SCAN磁头移动

磁盘调度 · 磁头从53柱面出发

第二幕 · 边界

设备阵 · 内核之门

轮询/中断/DMA + 系统调用trap + 宏/微内核权衡

设备渊是一条向下延伸的通道,尽头是一扇刻着"内核"二字的巨门。通道两侧悬着各种设备。

诺依曼老祖 诺依曼老祖

「用户程序在门外,硬件在门里。这扇门,叫系统调用。CPU有两种姿态——用户态和内核态。门只朝一个方向开。」

设备管理 · 系统调用 · 内核架构

三法I/O对比(CPU占用率)→ trap穿越动画 → 宏/微内核光谱滑块

系统调用 trap 演示 · 点击 read()

内核架构 · 性能↔安全光谱

第三幕 · 暗流

同步殿 · 共享之祸

互斥/信号量/管程 + 死锁四条件亲手凑齐 + 缓冲区溢出

内核门后是一座环形阵法,阵中央悬浮着一个共享变量水晶——多个进程的触手都伸向它。

诺依曼老祖 诺依曼老祖

「两个进程同时往一个账户里加钱。会发生什么?」

死锁之环 死锁之环

「加两次呗。共享嘛,大家一起用就行。」

死锁四条件公式组装器

竞态演示 → 三法同步 → 死锁构造(四条件拖拽组装)→ 栈溢出三防护

两进程并发写共享变量(余额=100,各加50)

死锁构造器 · 拖条件碎片进插槽

栈溢出攻击 · 8字节缓冲区写16字节

第三幕 · 最高潮

Boss 战 · 死锁之环

三问对决 · 排除法收网 · Banker破局

阵法灯火齐灭。暗紫色的环从四面八方压过来,凝成一个巨大的、缓慢自转的环——环上四道刻痕明灭可见。

死锁之环 死锁之环

「我是死锁之环。我不住在你的错误里——错误你能改。我住在你'以为资源总是够的'那份傲慢里。三问。答错一题,环就紧一分。」

渊账累计 0 笔 · 三问全对后清零

第三幕 · 收束

尾声 · 御灵之悟

元婴一层·系统御灵·圆满——下一章:编译原理

环散尽时资源殿重归清明,你手腕上的资源环微微发光——四道刻痕还在,像四枚没说出口的印章。

诺依曼老祖 诺依曼老祖

「你入门了。不是因为你答对了三问——答对的会忘。是因为你摔过的每一跤,都刻在你手上了。但——你管好了机器内部的资源。进程、内存、文件、设备、同步、死锁,你都摸过了。可你写的那些程序,从高级语言到机器码,中间那层翻译——会不会也丢了什么资源?明天,我们去看那座翻译殿。那座殿,叫编译原理。」

知识图谱点亮 · 御灵之悟

点亮全章11块碎片 → 死锁破局居中 → 境界突破