CHAPTER ZERO · INDEX 2026.05.24 · 中文版
&
CPU 架构与操作系统的演化简史
— 从 8086 到 Apple Silicon,从 Unix 到 Linux —
SYS.READY FOR_SOPHIE VOL. 1
02 / 46
▌ 目录 · CONTENTS

讲义的
结构

  1. PART I CPU 架构入门:什么是指令集 ISA · CISC vs RISC · 冯诺依曼
  2. PART II x86:CISC 的庞大帝国 Intel · AMD · 缓存 · 流水线 · Spectre
  3. PART III ARM:RISC 的精巧革命 伯明翰起源 · 移动霸主
  4. PART IV 其他架构 & RISC-V 开源 · 龙芯 · 国产 CPU 全谱
  5. PART V 苹果芯片 + 半导体之争 M1 · 摩尔定律终结 · 台积电
  6. PART VI Unix 源头与哲学 贝尔实验室 · BSD · POSIX · 许可证
  7. PART VII Linux 内核:开源神话 单内核 · 抢占式调度
  8. PART VIII macOS 与 Windows:两种哲学 NeXT 血统 · NT 内核
  9. PART IX 内核原理:操作系统在做什么 进程 · 内存 · 文件
  10. PART X GPU 与异构计算 SIMT · CUDA · NPU · TPU
  11. PART XI OS 的另一半 Android · RTOS · 启动 · 虚拟化
  12. PART XII 全景与启示 该选哪条路
I.
CPU 架构入门
什么是"指令集"?
FOUNDATION · 基础概念
03 / 46
▌ 01 · 核心概念

§指令集架构(ISA)
软硬件之间的契约

CPU 听不懂"画一张图"或者"打开 Word"。它只听得懂一些极其原始的命令——比如"把这个数从这里搬到那里"、"两个数相加"、"如果相等就跳到这一行代码"。

这些命令的说明书,就叫"指令集架构",英文 Instruction Set Architecture,简称 ISA

想象你雇了一个外国厨师。你必须用他听得懂的语言下单——比如他只会日语,你点菜就得说日语。指令集就是 CPU 的"语言"

x86 是一种语言,ARM 是另一种语言。一份"x86 语言"写的菜单(程序),递给只会"ARM 语言"的厨师(CPU),他完全看不懂——这就是架构不兼容

// 一段最简单的 x86 汇编:把 5 和 3 相加 $ MOV EAX, 5 ; 把数字 5 放进寄存器 EAX $ MOV EBX, 3 ; 把数字 3 放进寄存器 EBX $ ADD EAX, EBX ; EAX = EAX + EBX,结果 8 在 EAX 里
// 同样的事,用 ARM 汇编写 $ MOV R0, #5 ; 把 5 放进寄存器 R0 $ MOV R1, #3 ; 把 3 放进寄存器 R1 $ ADD R2, R0, R1 ; R2 = R0 + R1,结果在 R2

两段代码"做的事一样",但说出来的咒语完全不同。这就是不同 ISA 的根本区别。

04 / 46
▌ 02 · 设计哲学

§两条路:
复杂派 vs 精简派

1980 年前后,计算机学界发生了一场"路线之争"。怎么设计 CPU 才最好?两派给出了完全相反的答案。

CISC

Complex Instruction Set · 复杂指令集

代表:x86

  • 指令种类多、功能复杂
  • 一条指令可以做很多步
  • 指令长度不固定(1–15 字节)
  • 硬件复杂,软件简单
  • 历史动机:节省内存、方便人写汇编
vs

RISC

Reduced Instruction Set · 精简指令集

代表:ARM、RISC-V、POWER、MIPS

  • 指令种类少而精
  • 每条指令只做一件简单的事
  • 指令长度固定(通常 32 位)
  • 硬件简单,靠编译器组合
  • 历史动机:让 CPU 跑得更快、更省电

想象 CPU 是一个工人。

CISC 给他一把瑞士军刀:刀、剪刀、起子、开瓶器一应俱全。一个指令"煮一碗面",他自动会烧水、下面、调料、装碗。功能强,但这把刀又重又贵又难做。

RISC 只给他几把简单工具:菜刀、勺子、火柴。但每样都很轻很快。煮面要拆成 100 步——但他每一步都飞快完成。

!

有趣的事实:现代 x86 CPU 内部其实"偷偷"是 RISC 风格的!

x86 处理器内部有一个"解码器",把外面看起来复杂的 x86 指令,悄悄翻译成内部更简单的"微操作"(micro-ops),再用 RISC 的方式执行。所以严格说,今天 CISC 和 RISC 在内部已经融合,区别更多在外部接口。

追加 · 01 / NEW
▌ 03 · 计算的根

§冯·诺依曼架构
所有现代计算机的祖宗

x86、ARM、RISC-V 看起来千差万别,但它们都遵循同一个最古老的总图——1945 年由数学家 约翰·冯·诺依曼(John von Neumann)写在一份报告里的结构。

八十年过去,这张图一笔都没有改

五大部件

① 运算器 (ALU)
做加减乘除、与或非——CPU 内部真正"算"的地方
② 控制器 (Control Unit)
取指令、解码、决定下一步——CPU 的"指挥官"
③ 存储器 (Memory)
程序和数据混在一起放——这是冯诺依曼最革命的一招
④ 输入设备 / ⑤ 输出设备
键盘、鼠标 / 屏幕、打印机——与外界通信

核心创举:程序也是数据

在冯诺依曼之前,计算机的"程序"是写死在电路里的——想换一个程序,得拆开机器重新接线(早期的 ENIAC 就是这样,编程要花几天)。

冯诺依曼的洞见是:程序本质上也是一堆数字,把它和数据一样存进内存就行。这一步让"软件"成为可能——换程序只是换一段内存内容,瞬间完成。

想象一个厨师。旧模型是:你想让他做新菜,得把厨房重新装修一遍(换电路)。冯诺依曼模型是:你把菜谱(程序)写在纸上递给他,他照着做。换菜谱比换厨房容易得多。

更妙的是,菜谱食材都放在同一个柜子里——这就是"程序和数据共享存储"。

取指 → 译码 → 执行:CPU 的永恒循环

// CPU 一秒钟里重复几十亿次的循环

loop:
  FETCH       // 从内存取下一条指令
  DECODE      // 翻译这条指令是什么意思
  EXECUTE     // 真正去做(加法 / 跳转 / 访问内存)
  WRITEBACK   // 把结果写回寄存器或内存
  PC += 1     // 程序计数器指向下一条
  goto loop

无论 x86、ARM 还是 RISC-V,所有 CPU 都在跑这个循环。差别只是怎么取、怎么译、怎么执行更快。这就是为什么我们后面要讲缓存、流水线、推测执行——它们全是在优化这个循环的某一步。

另一条路:哈佛架构

冯诺依曼架构

Von Neumann · 主流

  • 程序和数据共用一块内存
  • 结构简单、灵活通用
  • 取指令和取数据要排队,可能竞争同一条总线
  • 代表:所有现代 PC / 服务器 / 手机
vs

哈佛架构

Harvard · 嵌入式专用

  • 程序和数据分开放两块内存
  • 取指令和取数据可以同时进行
  • 速度更快,但灵活性低(程序难修改)
  • 代表:DSP 数字信号处理器、单片机内部
现代 CPU 其实是混合的——主内存(DRAM)是冯诺依曼式(共享),但 CPU 内部的 L1 缓存通常分成"指令缓存"和"数据缓存"两块,这一层是哈佛式的。两种思想在今天融合并存

"冯诺依曼瓶颈"

!

所有冯诺依曼机的根本缺陷:CPU 算得飞快,但每次都得通过同一条窄路从内存取指令和数据。CPU 越快,这条路越是瓶颈。

过去 50 年计算机体系结构的大部分创新,本质都是绕开或缓解这个瓶颈:多级缓存、流水线、推测执行、超线程、GPU 大规模并行、近内存计算……都是在跟"冯诺依曼瓶颈"作斗争。

所谓"后冯诺依曼"架构(神经形态芯片、存算一体芯片)正在尝试从根本上换思路——但还在实验室阶段。

给我一个内存,再给我一条指令"取这块内存的内容、做点变化、写回去"——只要这两样,我就能构建出今天所有的软件。

这就是冯诺依曼的礼物:极简到无法再简,又强大到容纳整个数字文明。
对冯诺依曼架构的一种概括
II.
x86:CISC 的庞大帝国
从 8086 到今天的 AVX-512
INTEL · AMD · 40 YEARS
05 / 46
▌ 03 · 历史脉络

§x86 的家谱
1978 → 今天

x86 这个名字来自 Intel 早期型号——8086、80186、80286、80386……都以 "86" 结尾,于是这一整个家族就被叫做 "x86"。

1978
8086 · 一切的起点

Intel 推出 16 位处理器 8086,奠定了 x86 指令集基础。后来 IBM 选择了它的"低成本版" 8088 作为 IBM PC 的 CPU——这一选择,让 x86 走上了称霸 PC 几十年的道路。

1985
80386 · 进入 32 位时代

32 位 x86 架构定型,影响极其深远。很长时间里 32 位 x86 程序都被称为 "i386" 程序——这个名字今天在 Linux 包管理器里还能看到。

1993
Pentium · 超标量执行

奔腾时代开启。CPU 开始在一个周期里同时执行多条指令(superscalar),性能突飞猛进。

2003
AMD64 · 命运的转折

这里有个戏剧性转折:本来 Intel 想用全新的 IA-64(安腾) 进入 64 位时代,但安腾不兼容老的 x86 软件,市场反应冷淡。AMD 反其道而行,在 x86 基础上扩展出 64 位,叫 AMD64(即 x86-64),保持向下兼容。结果 AMD64 大获成功,Intel 反过来只好采用 AMD 的方案,改叫 "Intel 64"。

2006
Core 微架构 · Intel 王朝

Intel Core 系列发布,性能与能效大幅提升。从此 i3/i5/i7/i9 成为大家熟悉的命名。

2017
AMD Zen · 王者归来

AMD 推出 Ryzen,打破了 Intel 多年的桌面垄断。x86 内部竞争重新激烈,消费者受益。

2021
Intel 12 代 · 大小核异构

Intel Alder Lake 引入 P-core(性能核)+ E-core(能效核)混合设计——这其实是从 ARM 阵营学来的思路(big.LITTLE)。x86 开始重视能效。

现在你说的"x86 架构"严格说是 x86-64。它累积了 40 多年的指令扩展——MMX、SSE、SSE2、AVX、AVX-512……是世界上最复杂的指令集之一。
06 / 46
▌ 04 · 走进 x86

§看一段真实的
x86 代码

你写一个 C 程序,比如 int sum = a + b;——编译器最终会把它翻译成机器码。我们看看一段简化的函数调用过程。

C 源代码

// 一个简单的加法函数 int add(int a, int b) { return a + b; } // 调用 int result = add(3, 5);

编译成 x86-64 汇编(GCC 输出,已简化)

add 函数本体 add:
  # 函数入口:保存栈帧
  push rbp
  mov rbp, rsp
  # 参数 a 在 edi,b 在 esi
  mov eax, edi  # eax = a
  add eax, esi  # eax += b
  # 返回值在 eax 中
  pop rbp
  ret
调用方 main:
  # 准备参数
  mov edi, 3    # 第一个参数
  mov esi, 5    # 第二个参数
  call add    # 调用函数
  # 返回值现在在 eax 里
  mov [result], eax

关键名词速查

REGISTER

寄存器

eax, rbp, rsp, edi... 是 CPU 内部的超高速存储格子。比内存快几十倍,但只有 16 个左右。

INSTRUCTION

指令助记符

MOV(搬)、ADD(加)、PUSH(压栈)、CALL(调用)、RET(返回)。

STACK

调用栈

函数调用层层嵌套,靠"栈"这种数据结构管理。每次 call 都会在栈上分配一块空间。

把 CPU 想象成一个图书管理员。内存是后面巨大的书库,寄存器是他桌子上的几个小格子。要做加法,他得先把两本书从书库搬到桌上的格子里,算完再放回书库。

x86 的"哲学"是允许偶尔直接对着书库算账(指令可以直接操作内存),ARM 则要求必须先搬到桌上格子里再算。后者笨一点,但更规整、更快。

追加 · 02 / NEW
▌ 07 · 性能之心 · 上

§缓存层次
CPU 跑得快的真正秘密

为什么同一个 CPU 跑两段功能一样的代码,速度能差十倍?答案不在 CPU 本身,而在它面前的缓存

现代 CPU 大部分时间都不在"算",而在等内存。缓存就是为了缩短这段等待。

速度的悬崖

寄存器
~0.3 ns
L1 缓存
~1 ns
L2 缓存
~4 ns
L3 缓存
~12 ns
主内存 (DRAM)
~100 ns
SSD
~100 μs
机械硬盘
~10 ms

注意单位:寄存器是纳秒(ns),机械硬盘是毫秒(ms),差了 3000 万倍。如果寄存器是 1 秒,机械硬盘就是 1 年。

把寄存器想象成你手里拿着的那本书——拿起来就读,几乎不花时间。

L1 缓存是桌上的几本书——伸手就拿到。
L2 缓存是书架第一格——起身两步就够到。
L3 缓存是同一房间的书柜——走几步。
主内存是楼下图书馆——下楼、找书、上楼,半天没了。
硬盘是城市另一头的仓库——叫快递、等送达,几小时甚至几天。

所以 CPU 设计的核心智慧就是:让最常用的东西永远在你手边。这就是"缓存"做的事。

为什么缓存有效:局部性原理

PRINCIPLE

① 时间局部性

刚用过的数据,很可能马上再用。比如循环里 for (i=0; i<n; i++) sum += a[i];sum 每次循环都用,留在 L1 就行。

PRINCIPLE

② 空间局部性

用了某个地址的数据,附近地址的数据也很可能马上要用。比如遍历数组,访问 a[0] 后大概率要访问 a[1]。所以缓存一次载入一整块(通常 64 字节,叫 "cache line")。

实战:数组 vs 链表为什么差这么多

数组遍历 · 缓存友好 int sum = 0;
for (int i = 0; i < n; i++) {
  sum += arr[i];  // 连续地址
}

// CPU 一次预读 64 字节,
// 下面 16 次访问全在缓存命中
链表遍历 · 缓存灾难 Node* p = head;
int sum = 0;
while (p) {
  sum += p->val;
  p = p->next;  // 跳到任意地址
}

// 每次跳转都可能 cache miss,
// 大概率比数组慢 5-10 倍

两段代码看起来"复杂度都是 O(n)",但实际跑起来差好几倍。算法书里那个抽象的 "n",在硬件里要乘以一个"是否缓存友好"的系数。

缓存一致性 · MESI

多核 CPU 下还有个新麻烦:每个核都有自己的 L1/L2,但大家都在改同一份共享变量。怎么保证大家看到的值一致?

// MESI 协议:每条 cache line 处于以下四种状态之一

M · Modified   // 我改过,别人没有这份;将来要写回内存
E · Exclusive  // 我独有,但没改
S · Shared     // 几个核都有这份,都没改
I · Invalid    // 别人改了,我手里这份过期了

多核之间通过这个协议互相通知,保持缓存一致。这套机制是无形的,但每次跨核共享数据都要走一遍——这就是为什么多线程程序"假共享"(false sharing) 会让性能急剧下降

这也解释了为什么 Apple M1 的"统一内存架构 (UMA)"那么快——CPU 和 GPU 共享同一个最后一级缓存,连"跨芯片同步"的开销都省了。
追加 · 03 / NEW
▌ 08 · 性能之心 · 下

§流水线、推测执行
与 Spectre 的诅咒

CPU 的另一个速度秘密:不傻等。一条指令还没做完,下一条就开始预备了——这就是流水线。流水线的极致就是"猜着往前跑",而这种猜测,正是 2018 年震惊业界的 Spectre / Meltdown 漏洞的源头。

流水线 · 像工厂装配线

没有流水线(4 阶段)
每条指令 4 个时钟周期,串行做
指令A: [取][译][算][写]
指令B:                 [取][译][算][写]
         两条指令要 8 个周期
有流水线(4 阶段并行)
不同指令的不同阶段同时进行
指令A: [取][译][算][写]
指令B:     [取][译][算][写]
指令C:         [取][译][算][写]
指令D:            [取][译][算][写]
         四条指令只要 7 个周期 — 接近 4 倍速

现代 CPU 的流水线不止 4 级,Intel 高性能 CPU 流水线可以做到 14-20 级。理论上每个时钟周期都能"出"一条指令的结果。

分支预测 · 猜跳哪条路

问题来了:遇到 if (x > 0) goto A; else goto B; 怎么办?流水线已经流到第 5 级了,到底该把指令 B 还是指令 A 灌进去?

傻办法:等 if 判断完再继续——但流水线就停顿了,全部白等。

聪明办法赌一把!根据过去这条 if 通常走哪边,先猜一边继续往前。猜对了就赚到,猜错了就把流水线清空重来。

这就是"分支预测器"。现代 CPU 的分支预测准确率可以做到 95% 以上——这是几十年的硬件设计积累。

推测执行 · 把"猜"做到底

更激进的优化:CPU 不只是猜下一条走哪条路,而是真的去执行了。猜对了,结果直接采纳,省了等待;猜错了,把这些"未完成的副作用"扔掉,假装啥都没发生。

这个机制在 2018 年之前被认为是完全安全的——既然"扔掉"了,外界又怎么会知道呢?

Spectre & Meltdown · 推测执行的暗黑面

!

2018 年 1 月,全球安全研究者同时披露了两个震惊业界的漏洞:MeltdownSpectre

核心发现:推测执行虽然"扔掉了结果",但它访问过的内存留下了缓存痕迹。攻击者可以通过测量后续访问的延迟,反推出 CPU 在推测时偷看了什么

这是"侧信道攻击"(side channel)的一种——你不能直接看到秘密,但能通过秘密造成的间接影响反推出来。

更可怕的是:这不是某家厂商的 bug,而是所有现代高性能 CPU 共有的设计——Intel、AMD、ARM、IBM 全中招。修复要么牺牲性能(每次系统调用清空缓存),要么改硬件(要重新流片,几年时间)。

Spectre 之后,整个行业才意识到:性能优化和安全保障,并非天然兼容。过去三十年我们追求"让 CPU 跑得更快"的所有花招——流水线、推测、缓存——同时也是新攻击面

现代 CPU 的设计哲学,从此多了一条:"快,但要快得安全"。
对 Spectre/Meltdown 事件的回顾

超线程 · 一个核装两个

Intel 的"Hyper-Threading"(超线程,HT)和 AMD 的 SMT 都是同一个思路:当一个线程在等内存时,让另一个线程占用流水线,CPU 一秒都不浪费

所以你电脑显示"8 核 16 线程"——物理上只有 8 个核,但每个核能同时处理 2 个"逻辑线程"。两个逻辑线程共享同一套缓存和执行单元,所以加速通常是 20-30%,而不是翻倍。

缓存、流水线、推测执行、超线程——这四件套是现代 CPU 性能的"四根柱子"。M1 跑得快,不是因为它跳过了这些机制,而是因为每一项都做到了极致——再加上苹果的统一内存架构(UMA)省掉了 CPU/GPU 之间的数据拷贝。
III.
ARM:RISC 的精巧革命
从英国小公司到全球霸主
RISC · MOBILE · ENERGY
07 / 46
▌ 05 · ARM 起源

§剑桥一家小公司
怎样改变了世界

1980 年代初,英国剑桥有家叫 Acorn Computers 的小公司,专门给 BBC 做"教育电脑"。他们想造自己的 CPU——但小公司没钱用 Intel 那一整套复杂方案。

于是他们决定基于当时学术界新兴的 RISC(精简指令集)理念,从头设计一个简单的 CPU。这就是
—— Acorn RISC Machine。

ARM,由此诞生。

1990 年,Acorn、Apple、VLSI 三家合资成立了 ARM 公司——这时候 ARM 改了个名字:Advanced RISC Machines。Apple 出资是因为想给自家的 Newton 掌上电脑做芯片。 ARM 公司成立
UNIQUE MODEL

ARM 独特的商业模式

ARM 自己不生产芯片,只设计架构和 IP 核,授权给别人。

这就是为什么今天市面上的:

  • › 高通骁龙
  • › 苹果 A 系列 / M 系列
  • › 三星 Exynos
  • › 华为麒麟
  • › 联发科天玑

——全都基于 ARM 架构,但芯片设计各不相同。ARM 就像建筑师,授权图纸,由各家自己盖楼。

ARM 的关键特点

▌ 01

极致低功耗

RISC 简单的指令集意味着 CPU 内部的解码、调度电路可以做得很简单,晶体管少,功耗自然低。你的手机能用电池跑一整天,很大程度上靠 ARM。

▌ 02

Load-Store 架构

严格区分"搬数据"和"算数据"。所有算术运算只能在寄存器之间进行,要操作内存必须先 Load 到寄存器,算完再 Store 回去。流水线更规整。

▌ 03

更多寄存器

ARM64 有 31 个通用寄存器,x86-64 只有 16 个。寄存器多了,函数调用、临时变量不太需要频繁访问内存,速度更快。

▌ 04

big.LITTLE 大小核

ARM 在一颗芯片里同时放高性能大核低功耗小核。轻负载用小核省电,重负载切大核。这个思路后来被 Intel 学走了。

IV.
其他架构 & RISC-V 在中国
开源的、自主的、地缘政治的
RISC-V · LOONGARCH · 自主可控
08 / 46
▌ 06 · 全景

§除了 x86 和 ARM
还有谁?

RISC · 开源

RISC-V

2010 年由加州大学伯克利分校发起。

最大特点:完全开源开放——任何人都可以免费使用、修改、商用,不需要交授权费。

跟 x86(Intel/AMD 垄断)和 ARM(要交授权费)都不同。下一页会详细讲它在中国的发展。

RISC · IBM

POWER / PowerPC

IBM 主导。

曾经在苹果 Mac(2006 年之前)、游戏机(PS3、Xbox 360、Wii)和服务器(IBM 大型机)上广泛使用。

现在主要在 IBM 自家服务器和高性能计算领域,是银行核心系统的常客。

RISC · 学院派

MIPS

斯坦福大学项目商业化。

早期 RISC 代表。曾在路由器、游戏机(PS2、PSP、N64)、嵌入式系统中广泛使用。

中国的龙芯早期就基于 MIPS 兼容架构开发。MIPS 公司现已转向 RISC-V。

中国自主

LoongArch · 龙架构

龙芯中科自研,2021 年发布。

从 MIPS 兼容路线转向完全自主。是中国在 CPU 架构自主化方面的重要尝试。

能否在生态上突破,是它的最大挑战。

SUN · 已退场

SPARC

Sun Microsystems(后被 Oracle 收购)的 RISC 架构。

曾经在 Unix 工作站和服务器领域很重要。现在基本退出市场。

INTEL · 失败品

IA-64 · 安腾

Intel 在 2001 年推的 64 位架构。

试图绕过 x86 另起炉灶,但不兼容旧软件导致市场失败。最终被 AMD 的 AMD64 反杀。

2021 年 Intel 正式停止生产,写入计算机史的"教训"。

09 / 46
▌ 07 · 深入

§RISC-V 在中国
开源浪潮 + 地缘政治

RISC-V 不仅是技术上的新选项,更是一场关于知识产权和地缘政治的全球博弈。中国为什么这么重视它?

为什么中国关注 RISC-V?

!

问题的根源:x86 由 Intel 和 AMD 两家美国公司垄断,授权几乎不可能拿到;ARM 虽然可以授权,但它是英国公司(现属日本软银),授权随时可能因美国出口管制而受阻。

2019 年华为事件之后,ARM 一度暂停了对华为的部分授权,给中国半导体行业敲响了警钟——核心架构必须有备份方案

RISC-V 的特点正好对症:开源、免授权费、任何人可以修改、谁也不能"撤销"你的使用权。

RISC-V 的设计哲学

模块化

核心指令集很小(RV32I 只有几十条),其他功能通过"扩展"按需加。要做 IoT 芯片就用基础集,要做服务器就加上向量、虚拟化扩展。

现代化

诞生在 2010 年,没有历史包袱。吸取了 x86 和 ARM 几十年的经验教训,从一开始就设计得干净、规整。

中立

由非营利的 RISC-V International 基金会管理,总部已从美国搬到瑞士,以保持中立性。

中国 RISC-V 的主力玩家

公司 / 产品 定位 意义
阿里平头哥 · 玄铁系列 从低功耗 IoT 到高性能桌面级 CPU 都有 玄铁 C910 是早期较成熟的高性能 RISC-V 核心
中科院计算所 · 香山 开源高性能 RISC-V 处理器项目 目标是追赶 ARM Cortex 系列高端核心,全代码开源
芯来科技 嵌入式 RISC-V IP 核 面向 MCU、IoT 市场,已大量量产
兆易创新 GD32V 基于 RISC-V 的 MCU 单片机 替代 STM32 的国产方案,在工控、家电中广泛应用
SiFive(美国,但中国深度参与) RISC-V 商业化的领头羊 提供商业级 IP 核,许多中国公司基于它二次开发

现状与挑战

✓ 已经做到的

· 嵌入式市场(MCU、IoT)大量应用
· AI 加速器内部控制核常用 RISC-V
· 开发板生态比较成熟(如 VisionFive、Lichee Pi)
· Linux、Android 都已经支持 RISC-V

✗ 还需要突破的

· 高性能 CPU 性能与 ARM/x86 顶级产品仍有差距
· 软件生态薄弱——Windows 不支持,macOS 不支持,大多数商业软件没适配
· 缺乏"杀手级"消费产品
· 标准扩展碎片化风险(避免重蹈 Unix 分裂的覆辙)

RISC-V 之于 CPU 架构,就像 Linux 之于操作系统——它不会一夜之间取代谁,但它的存在让整个产业有了"开源备份",永远不会被一家公司卡脖子。这种"保险价值"在地缘政治紧张的当下,比性能数字更重要。 对 RISC-V 战略意义的一种概括
追加 · 04 / NEW
▌ 11 · 中国全景

§国产 CPU 的
五条平行路线

说到"国产 CPU",很多人只想到龙芯。其实中国今天有五条不同的自主化路线,每条都有自己的取舍——是要兼容生态,还是要完全自主?是要短期落地,还是长期独立?

路线全谱

品牌 架构 / 路线 策略 主要场景
华为鲲鹏 ARM v8 架构授权 买 ARM 永久授权 + 自研核心设计 服务器、云、华为云生态
飞腾 (Phytium) ARM 架构授权 军工 / 政企背景,桌面 + 服务器双线 党政办公电脑、信创桌面
海光 (Hygon) x86 (AMD Zen 授权) 2016 年合资公司,拿到 Zen1 一次性授权 服务器,对接现有 x86 生态
兆芯 (Zhaoxin) x86 (VIA 授权) 继承 VIA 老牌 x86 授权 桌面、笔记本、嵌入式
龙芯 LoongArch 自研指令集 从 MIPS 兼容 → 完全自主指令集 党政、教育、嵌入式
申威 (Sunway) 自研 RISC (SW64) 军用背景,专注超算 神威·太湖之光超算(曾经的世界第一)
阿里平头哥 / 香山 / 兆易 RISC-V (开源) 站队开源标准,赌未来生态 嵌入式 / IoT / AI 加速器内嵌核

策略四象限:自主程度 × 生态成熟度

"借生态" 路线

代表:海光(x86)、兆芯(x86)、鲲鹏(ARM)、飞腾(ARM)

优势:软件生态现成可用,Windows/Linux 上的程序基本不用改。短期能落地。

风险:授权随时可能被卡(美国制裁先例),永久授权也只是"这一代"——下一代不一定。

"自建生态" 路线

代表:龙芯(LoongArch)、申威(SW64)

优势:真正不依赖外部授权,永远不会被卡脖子。

风险:软件生态要从零做起——Windows 没有、商业软件大多没适配。需要中国 Linux 发行版、统信 UOS、麒麟 OS 等配套。

"开源备份" 路线

代表:阿里玄铁中科院香山兆易 GD32V

优势:架构本身免授权费、开源、谁也卡不了。可以自由扩展指令。

风险:RISC-V 在高性能 CPU 上还很年轻,对标 ARM Cortex-A 高端核仍有差距。

"专用赛道" 路线

代表:寒武纪(AI 加速器)、燧原(AI)、壁仞(GPU)、摩尔线程(GPU)

避开通用 CPU 红海,做AI / GPU 专用芯片——这里没有兼容性历史包袱,弯道超车空间大。

!

"信创"是什么?

"信创"= 信息技术应用创新,是中国近年推动的党政办公 IT 国产化工程。明确要求中央和部分省市的电脑必须用国产 CPU + 国产操作系统 + 国产数据库 + 国产办公软件。

四大主推 CPU 平台:鲲鹏(ARM)、飞腾(ARM)、海光(x86)、龙芯(LoongArch)、兆芯(x86)、申威(自研)都在名单内——配套统信 UOS、麒麟 OS、达梦数据库、WPS Office 等。这是这些 CPU 当下最大的市场和现金流来源。

没有哪条路线一定对。短期靠借(兼容),中期靠开源(RISC-V),长期靠自研(LoongArch / 申威)——中国把鸡蛋分到了几个不同的篮子里。这不是浪费,而是分散风险。

真正的护城河,永远不在 CPU 本身,而在 CPU 之上的编译器、操作系统、数据库、行业软件——这些才是十年功夫。
对国产 CPU 路线的一种解读
V.
苹果芯片转型背后的逻辑
三次大迁移 · M1 革命
APPLE SILICON · 2020 转折
10 / 46
▌ 08 · 一段传奇

§苹果的三次
"换芯"大迁徙

在过去 30 年里,苹果 Mac 经历过三次整体架构迁移。每一次都是一场赌博,但每一次都成功了。这本身就是个奇迹。

1994
迁移 1:摩托罗拉 68K → PowerPC

1984 年初代 Mac 用的是摩托罗拉 68000 系列 CPU。1994 年苹果联合 IBM、摩托罗拉成立 AIM 联盟,迁移到 PowerPC 架构(RISC)。为兼容老软件,引入了软件模拟器

2006
迁移 2:PowerPC → Intel x86

PowerPC 在功耗和性能跟进上落后了。乔布斯 2005 年宣布转向 Intel x86,用 Rosetta 软件模拟工具兼容老的 PowerPC 软件。这一步让 Mac 性能大跃进,也使 Mac 上能装 Windows(Boot Camp)。

2020
迁移 3:Intel x86 → Apple Silicon (ARM)

苹果发布 M1 芯片,开始用自研 ARM 芯片完全替换 Intel。Rosetta 2 实时翻译老的 x86 软件。这次迁移再次震惊业界——M1 笔记本的续航和性能都打破了 PC 笔记本的纪录。

为什么 2020 年苹果要抛弃 Intel?

推力 · PUSH

Intel 让苹果失望

2015 年后 Intel 工艺升级一再延期,10nm 难产,14nm "+++"挤牙膏,桌面 CPU 功耗墙摆在那里。Mac 笔记本散热和续航被钉死,苹果的产品设计被迫迁就 Intel。

拉力 · PULL

苹果自己的 A 系列已经太强

苹果给 iPhone 设计的 A 系列芯片(A11、A12、A13…)单核性能逐年逼近 Intel 桌面 CPU,且功耗只有几瓦。"既然手机芯片已经这么强,为什么不直接放进 Mac?"

11 / 46
▌ 09 · M1 的秘密

§M1 为什么"逆天"?
三个核心技术决策

技术决策 1 · 统一内存架构 (UMA)

▌ 传统 PC:CPU 内存 + GPU 显存 + 总线传输
↓ 数据要在它们之间复制,很慢
▌ M1:CPU、GPU、神经引擎共享同一块物理内存
↓ 没有复制,所有部件直接读同一份数据
▌ 结果:在视频编辑、3D 渲染、AI 推理上速度翻倍

传统 PC 像两个不同部门的办公室,要传文件得走人复印一份送过去。M1 像把所有部门搬到同一张大桌子上,文件就摊在桌上,谁都直接看。少了搬运的开销,效率自然飞起。

技术决策 2 · 高性能大核 + 高能效小核

核心类型代号用途功耗
性能核 × 4Firestorm跑前台繁重任务(视频导出、编译)每核 ~5W
能效核 × 4Icestorm跑后台日常任务(邮件、网页、Spotify)每核 ~0.5W

系统调度器根据任务负载,智能分配到不同核心。你看个网页只用小核,电池能撑 18 小时;你导出视频自动切大核,速度满血。

技术决策 3 · 把所有东西放进一颗芯片(SoC)

M1 不只是 CPU,而是个完整的 SoC(System on Chip):CPU + GPU + 神经引擎(NPU)+ ISP(图像信号处理)+ 视频编解码器 + 安全芯片 + 内存控制器 + 雷电控制器 + ……

这种"集成度极高"的设计来自苹果做手机的经验——iPhone 二十年都是这么做的。把它搬到 Mac 上,立刻获得了功耗优势和系统级优化。

Rosetta 2:让老软件无缝运行

// Rosetta 2 的工作原理(简化)

user 双击一个 Intel x86 版本的 Photoshop
  
macOS 检测:这是 x86 程序,不能直接跑
  
Rosetta 2 启动,把 x86 指令提前翻译成 ARM 指令
  ↓ (只翻译一次,结果缓存)
M1 CPU 执行翻译后的 ARM 代码
  
Photoshop 在不知情的情况下"以为自己跑在 Intel Mac 上"

Rosetta 2 翻译效率惊人——许多 x86 软件在 M1 上跑得比原生 Intel Mac 还快。这是因为 M1 的硬件性能足够强,即使打了"翻译税"还有富余。

苹果做对的,不只是芯片本身。它同时控制了 CPU 设计、操作系统、编译器(Clang/LLVM)、应用商店分发、开发工具(Xcode)。这种"垂直整合"使得 M1 每一层都为下一层量身打造——这是 PC 厂商永远做不到的。 Apple Silicon 成功的本质
追加 · 05 / NEW
▌ 14 · 硅之争

§摩尔定律的黄昏
台积电为什么是关键

M1 的成功不只是设计上的成功,更是制造上的成功——它能跑得这么快、这么省电,是因为用上了当时最先进的 5nm 工艺,而这工艺只有一家公司能做:台积电(TSMC)

这一节讲讲这个被低估的产业链环节:芯片是怎么造出来的,为什么 Intel 慢了,为什么台积电赢了。

两条曾经的"信仰"

摩尔定律

Moore's Law (1965)

Intel 创始人 Gordon Moore 观察到:每隔约 18-24 个月,单位芯片上能塞进的晶体管数量翻倍,价格不变

这条"经验法则"驱动了半导体行业 50 年的疯狂进步——你 5 年前的电脑跑不动新游戏,就是它在起作用。

Dennard Scaling

登纳德缩放 (1974)

IBM 工程师 Robert Dennard 发现:晶体管变小,功耗也按比例下降,频率可以按比例升高

这条规律是更深的——它意味着每代 CPU 能免费变得又快又省电。1990-2005 年 CPU 主频从 100MHz 飙到 3GHz,靠的就是它。

2005 · 两条规律开始失效

!

Dennard Scaling 在 2005 年左右终结——晶体管小到一定程度后,漏电流开始急剧增加,功耗不再按比例下降。结果是:CPU 主频卡在 3-5 GHz 上不去了,因为再快就烧坏散热

这是整个 IT 产业的"大拐点"。从此:

· 桌面 CPU 不再追求高频,转向多核(双核 → 四核 → 8 核 → 16 核)
· 移动设备崛起——能效比主频重要
· ARM 因低功耗优势开始侵蚀 PC 市场
· 专用加速器(GPU、TPU、NPU)兴起——通用 CPU 不够用了

苹果 M1 / Apple Silicon 的整个故事,就是这个拐点之后的产物。

摩尔定律本身也在放缓——晶体管已经小到 10 个硅原子那么大,再小就要碰到量子力学的"隧穿效应"。每一代工艺升级越来越难、越来越贵。

"工艺节点"到底是什么意思?

媒体常说 "苹果用了 3nm 工艺"、"Intel 在 7nm 卡了三年"——这 nm 数字越来越是营销名词,不再严格对应物理尺寸。但越小确实越好:晶体管越密,单芯片能塞更多核 / 更省电。

2002 · 130nm
奔腾 4
2010 · 32nm
i7 一代
2015 · 14nm
Intel Skylake
2018 · 7nm
苹果 A12 (TSMC)
2020 · 5nm
M1 (TSMC)
2022 · 4nm
M2 / A16 (TSMC)
2024 · 3nm
M3 / A17 Pro / M4 (TSMC)
2025+ · 2nm
TSMC / 三星

EUV 光刻机 · 全球最复杂的机器

"光刻"是芯片制造的最关键一步——用极短波长的光,把电路图样像照相一样"印"到硅片上。

问题是,到了 7nm 以下,普通紫外光的波长都大于要刻的线条本身了——好比你用一支毛笔画头发丝,怎么画都画不细。

解决方案叫 EUV(极紫外光刻),波长只有 13.5nm。但要稳定产生这种光,要用激光打融化的锡液滴,让锡爆炸成等离子体——这种机器全世界只有一家公司能造:荷兰的 ASML

一台 EUV 光刻机 2 亿美元,重 180 吨,要 40 个货柜运输。台积电、三星、Intel 都在排队买。

三大代工厂的赛跑

TAIWAN

TSMC · 台积电

全球第一大芯片代工厂,不设计、只造。1987 年张忠谋创立"纯代工"模式。

客户:苹果、AMD、NVIDIA、高通、博通、华为海思(被制裁前)……几乎所有顶级芯片设计公司都靠它代工。

3nm / 2nm 工艺独家领先 1-2 代。

USA

Intel · 自产

曾经是全球工艺标杆。但 10nm 难产了 4 年(2015-2019 反复延期),被台积电、三星超越。

苹果 2020 抛弃 Intel 的根本原因,就是 Intel 工艺停滞——M1 用 TSMC 5nm,比 Intel 当时的 14nm 领先两代。

2024 后 Intel 推出 18A (1.8nm) 工艺试图反扑,能否成功还是问号。

KOREA

Samsung · 三星

同时自产 + 代工。手机芯片(Exynos)、内存霸主。代工业务体量仅次于 TSMC。

3nm 良率长期落后台积电,最大客户高通也转身去找 TSMC

中国的处境:中芯国际 + 制裁

中国大陆的旗舰代工厂 中芯国际(SMIC),2020 年被美国列入实体清单,买不到 EUV 光刻机。理论上工艺被卡在 7nm。

但 2023 年华为 Mate 60 Pro 用上了中芯 7nm 工艺的麒麟 9000S——震惊业界,证明中芯靠"多次曝光 DUV"(用旧设备多次叠加)硬做出了 7nm。这是付出极大良率和成本代价的"突围方案",但展示了"卡脖子也卡不死"的可能性。

过去 50 年,架构创新(CISC vs RISC)和工艺进步(更小的晶体管)共同推动了 CPU 性能。但摩尔定律放缓之后,仅靠工艺已经不够——架构、专用加速器、软硬协同开始成为更重要的杠杆。

这就是为什么 NVIDIA 凭 GPU 市值超过 Intel,为什么苹果靠 SoC 整合赢过 Intel——半导体的舞台中心,从工厂转向了系统设计。
对摩尔定律时代终结的回顾
VI.
操作系统的源头:Unix
贝尔实验室 · BSD · Unix 大战
1969 · THE ORIGIN
12 / 46
▌ 10 · 起点

§1969 · 一切的开始
贝尔实验室的两个年轻人

1969 年,AT&T 贝尔实验室。两个年轻工程师 Ken ThompsonDennis Ritchie(后来发明了 C 语言的那位),在一台闲置的 PDP-7 小型机上开发了一个新操作系统。

最初的动机?据传是为了能玩自己写的太空游戏。

这个系统,他们叫它 Unix

Unix 是简单的。但你得是一个天才,才能理解它的简单。 — Dennis Ritchie

Unix 的革命性设计

① 一切皆文件:硬件、进程、网络全部抽象成"文件"。你打印文档可以 cat file > /dev/printer

② 小工具组合:每个程序只做一件事但做好,通过"管道"(pipe)组合。ls | grep .txt | sort 比写一个大程序优雅。

③ 多用户、多任务:同一台机器同时为多个用户服务。

④ 用 C 语言重写(1973):这一步是革命性的。之前所有操作系统都是用汇编写的,绑死在一种硬件上。C 重写让 Unix 可以移植到任何机器。

Unix 的扩散:从学术界到大公司

1970s
AT&T 因反垄断不能商业销售

AT&T 当时受反垄断诉讼限制,不能直接卖软件。于是以极低价格把 Unix 授权给大学。结果在学界一传十、十传百,成为学术界标准。

1977
BSD 诞生

伯克利大学拿到源码后大改特改,搞出了 BSD(Berkeley Software Distribution)。BSD 加入了 TCP/IP 网络栈——是的,今天整个互联网的协议栈,最早就是在 BSD Unix 上实现的。

1980s
Unix 大战(Unix Wars)

AT&T 拆分后能商业化了,Unix 立刻分裂成无数版本:System V(AT&T)、BSD(伯克利)、Solaris(Sun)、AIX(IBM)、HP-UX(HP)、IRIX(SGI)……每家不兼容,给开发者带来巨大痛苦。这是 Unix 后来衰落的重要原因。

1983
GNU 项目启动

MIT 的 Richard Stallman 发起 GNU 项目(GNU's Not Unix 的递归缩写),目标做一个完全自由的 Unix 兼容系统。陆续做出了 GCC 编译器、Bash shell 等核心工具,但关键的内核 GNU Hurd 一直难产。这个空缺,很快会被一个芬兰大学生填上。

Unix 像一本写得太好的菜谱。AT&T 把它送给了世界上所有的厨师学校(大学),学校的厨师们各自又写了自己的菜谱变种。等 AT&T 想回过头来收钱时,已经晚了——市面上有无数版本的"菜谱",谁也不服谁,最后整个 Unix 阵营在内斗中错过了 PC 革命。

追加 · 06 / NEW
▌ 16 · Unix 的灵魂

§Unix 哲学、POSIX
与一场"许可证之争"

Unix 不只是一个操作系统,它定义了一种做软件的方式。几十年后,这套思维方式还在影响我们今天写程序、设计系统、做开源协议。

Unix 哲学 · Doug McIlroy 三原则

1978 年,Unix 管道(pipe)的发明人 Doug McIlroy 总结了 Unix 哲学,就三句话

RULE 1

做一件事,把它做好

每个程序专注一个小目标,不堆砌功能。grep 只搜索、sort 只排序、wc 只数行——简单到可以预测。

RULE 2

程序之间可以协作

通过"管道"把多个小程序连起来,输出变输入。cat log | grep ERROR | sort | uniq -c 比一个 500 行的大程序优雅得多。

RULE 3

文本是通用接口

程序之间不传"对象"或"二进制结构",传纯文本。文本人能读、机能写、跨语言无障碍——这是 Unix 最低调但最伟大的决定。

把 Unix 哲学想成瑞士军刀 vs 一套日本料理刀。Windows / macOS 的图形软件像瑞士军刀——一个工具啥都能干,但每样都不够锋利。Unix 工具像料理刀——每把只为一件事而生,但组合起来无所不能。

这种思维不只在 Shell 里。微服务架构RESTful API函数式编程UNIX 风格的命令行工具(jq、ripgrep、fd)——本质都在贯彻 Unix 哲学。

POSIX · 让 Unix 们勉强能通用

Unix 大战导致几十个互不兼容的版本(System V、BSD、Solaris、AIX、HP-UX...)。开发者抓狂——同样的程序在不同 Unix 上要改一遍。

1988 年,IEEE 牵头制定 POSIX(Portable Operating System Interface)标准——规定所有 Unix 必须提供这些统一的接口

// POSIX 规定的核心接口举例

文件 I/O:   open() / read() / write() / close()
进程:       fork() / exec() / wait() / kill()
线程:       pthread_create() / pthread_mutex_lock()
Shell:       sh / awk / sed / grep / wc / find / ...
目录:       /etc, /var, /tmp, /usr, /home

// 只要符合 POSIX 的程序,理论上能在任何符合 POSIX 的系统上运行

今天 macOS 是经过 Open Group 认证的 UNIX(POSIX 兼容);Linux 兼容 POSIX 但没去认证(开源项目交不起认证费),所以严格说是 "Unix-like";Windows 通过 WSL 和 POSIX 子系统也能跑 POSIX 程序

为什么你能把同一份 C 代码在 Mac、Linux、Ubuntu、FreeBSD、甚至云端 Docker 容器之间随便编译——靠的就是 POSIX 这层"大家说好的暗号"。

开源许可证三大流派

软件做出来后用什么"许可证"发布,决定了别人能不能用、怎么用、改了之后还要不要开源。这个看似法律问题,深刻影响了整个软件世界的格局

COPYLEFT

GPL · 传染性

代表:Linux 内核、GCC、Bash

"用了我的代码?好,你的代码也必须开源(同样用 GPL)。"

意图:保证开源代码永远开源,防止被商业公司"私吞"。

后果:大公司谨慎使用——所以 Apple 不直接用 GPL 代码(macOS 用 BSD 部件)。

PERMISSIVE

MIT / BSD · 宽松

代表:FreeBSD / OpenBSD、React、Vue、TensorFlow

"随便用,注明一下原作者就行。改了不开源也无所谓。"

意图:最大化代码被使用的可能性。

后果:苹果能光明正大地把 BSD 用进 macOS——iOS 的网络栈大量来自 FreeBSD。索尼 PS4/PS5 系统也基于 FreeBSD。

PATENT-SAFE

Apache 2.0 · 含专利保护

代表:Android (AOSP)、Kubernetes、Hadoop

"随便用 + 不能事后用专利起诉用户。"

意图:解决 MIT/BSD 没法防范"专利埋伏"的漏洞。

企业用户最喜欢——既宽松又有法律保障。

许可证战争的真实例子

为什么 Android 不用 Linux 全部组件?

Android 用了 Linux 内核(GPL),但 Google 故意没用 GNU 的 glibc(GPL),而是自己写了 Bionic libc(BSD 许可证)。

原因?GPL 的"传染性"会要求所有用 glibc 的 App 也开源——这显然不适合应用商店里的商业 App。换成 BSD 的 Bionic,商业 App 才能合法闭源发布

所以选择许可证不是"哪个更好"的问题,而是"我想让这个生态长成什么样"的问题。Linus 选 GPL 让 Linux 永远开源;Google 选 Apache 让 Android 能商业化;苹果选 BSD 让 macOS 能闭源——三种选择,造就三种世界。

Unix 给世界的最大遗产,不是某段代码,而是一套思维方式:把复杂问题拆成小问题、用约定好的接口连接、让代码可以被自由组合和分享。

从 1970 年代到 2026 年的 AI 时代,这套哲学没过时——它只是换了载体。容器编排是新的管道,REST API 是新的"文本接口",开源模型权重是新的"小工具"。
Unix 哲学的当代回响
VII.
Linux 内核:开源神话
一个芬兰大学生的爱好
1991 · LINUS · 集市模式
13 / 46
▌ 11 · Linux 诞生

§1991 · 全世界
最重要的"业余项目"

1991 年 8 月 25 日,芬兰赫尔辛基大学的 21 岁学生 Linus Torvalds,在新闻组 comp.os.minix 上发了一封邮件。

Hello everybody out there using minix —

我在做一个(免费的)操作系统(只是个爱好,不会像 GNU 那样大而专业)……我希望能听到大家想要什么样的功能。
— Linus Torvalds, 1991.08.25

他想自己写个类 Unix 内核,跑在自己新买的 386 PC 上。这就是 Linux 内核的开始——一个让创始人本人都没想到会改变世界的"小爱好"。

Linux 为什么成功?

① 选对了协议:GPL

Linus 选择了 GPL 开源协议——任何人可以使用、修改,但修改后的版本也必须开源。这个"传染性"条款,确保了 Linux 永远保持开源,避免被某家公司"私吞"。

② 与 GNU 完美互补

GNU 项目缺一个内核(Hurd 难产),Linux 正好补上。两者结合成 "GNU/Linux",一个完整的、自由的、类 Unix 系统。

③ "集市"开发模式

不像传统软件由小团队闭门造车("大教堂"),Linux 全球程序员都可以贡献代码,早发布、常发布。这个模式被 Eric Raymond 在著名文章《大教堂与集市》中总结,成为开源运动的圣经。

④ 时机刚刚好

1990 年代初,PC 普及、互联网兴起。学生和工程师都需要一个免费的 Unix 来学习。商业 Unix 太贵,BSD 陷在法律纠纷里,Linux 占据了真空。

今天 Linux 在哪里?

服务器
~96%
超级计算机
100%
智能手机(Android)
~70%
嵌入式设备
大量
桌面
~3%
注意一个常见误解:我们日常说的 "Linux" 通常指 "Linux 内核 + GNU 工具 + 各种软件" 打包的发行版(Distribution),比如 Ubuntu、Debian、Red Hat、CentOS、Arch、Fedora 等。Linux 严格说只是内核本身
14 / 46
▌ 12 · 深入

§Linux 内核
到底是怎么设计的?

很多人听过"Linux 内核",但具体它在做什么?长什么样?我们打开看看。

分层架构

用户空间(User Space)
浏览器、Office、游戏、Shell……所有应用程序都跑在这里
↕ 通过"系统调用"(syscall) 与内核交互
Linux 内核(Kernel Space)
进程调度 · 内存管理 · 文件系统 · 网络栈 · 设备驱动
↕ 通过"设备驱动"操作硬件
硬件层(Hardware)
CPU · 内存 · 磁盘 · 网卡 · 显卡

单内核(Monolithic Kernel)vs 微内核(Microkernel)

设计内核有两种主要哲学,Linux 选了第一种——但也带了点第二种的影子。

单内核

Monolithic · Linux / BSD

  • 所有功能(进程、内存、文件、网络、驱动)都在同一个大程序里
  • 组件之间直接调用,速度快
  • 一个 bug 可能让整个系统崩溃(蓝屏 / Kernel Panic)
  • Linux 改进:用"可加载内核模块" (LKM) 让驱动可以动态加载/卸载
vs

微内核

Microkernel · Mach / Minix

  • 内核只保留最核心的功能,其他都做成独立服务
  • 服务之间通过"消息传递"通信
  • 稳定、安全,一个服务崩溃不影响整体
  • 消息传递有性能开销
  • macOS 的 Darwin 内核是混合内核,基于 Mach 微内核 + BSD 单内核

历史趣闻 · Linus 大战 Tanenbaum:1992 年,Linus 和操作系统教科书作者 Andrew Tanenbaum 在新闻组上爆发了一场激烈论战。Tanenbaum 教授坚持认为微内核才是"正确的未来",单内核(Linux)"过时且糟糕"。Linus 则反击说微内核理论上完美,但"实际上没人能做出真正快的微内核"。这场辩论的结果由市场给出:Linux 的单内核今天跑在 90% 服务器上,而纯微内核 OS 没一个真正流行。

内核里几大子系统

进程调度(Scheduler)

决定哪个程序什么时候用 CPU。Linux 用的是 CFS(完全公平调度器),追求每个进程都"公平"地拿到 CPU 时间。最近正在引入新的 EEVDF 调度器,能更好地处理延迟敏感任务(比如游戏、视频会议)。

内存管理(MM)

负责给程序分配物理内存、虚拟内存映射、内存换页(把不用的内存写到硬盘暂存)。Linux 的内存管理子系统极其复杂,是内核最大的模块之一。

VFS · 虚拟文件系统

提供"看起来一样"的文件接口,下面可以是 ext4、Btrfs、XFS、NTFS(只读)、网络文件系统 NFS、FAT32……应用程序不用关心具体是哪种。

网络栈(Net Stack)

实现 TCP/IP 协议、套接字接口、防火墙(netfilter / iptables / nftables)。Linux 的网络栈以高性能著称,是云计算和容器(Docker、Kubernetes)的基础。

// 看看 Linux 内核有多大(截至 6.x 版本)
$ wc -l linux-kernel-source/*
// 总代码行数:约 3000+ 万行 C 代码 + 汇编
// 贡献者:累计 15,000+ 名开发者
// 公司贡献榜:Intel、Red Hat、Google、华为、IBM、Suse...
VIII.
macOS 与 Windows
两种截然不同的哲学
NEXTSTEP · NT KERNEL
15 / 46
▌ 13 · macOS

§macOS 的曲折血统
"优中选优"的诞生

很多人不知道,今天的 macOS 是一场"借尸还魂"的产物。它的真正祖先不是 1984 年的 Mac,而是乔布斯被苹果赶出去后做的另一个系统。

故事的两条线

1984
线 A · 初代 Mac OS(Classic)

第一代 Macintosh 发布,搭载经典的 Mac OS。这套系统优雅但技术上落后——单任务(后来才支持协作式多任务)、没有内存保护、稳定性差。

1985
线 B · 乔布斯被驱逐,创办 NeXT

乔布斯被自己创办的苹果赶出公司,创办了 NeXT 电脑公司。NeXT 开发了一个叫 NeXTSTEP 的操作系统,技术上极其先进:

· Mach 微内核(卡内基梅隆大学研究)
· BSD Unix 用户空间
· Objective-C 面向对象编程
· 先进的图形界面(Display PostScript)

商业上失败了,但技术上是当时最优秀的工作站操作系统之一——蒂姆·伯纳斯-李在 NeXT 上发明了万维网。

1996
两条线合流 · 苹果收购 NeXT

1996 年 Apple 经营不善,急需新一代操作系统。自家的 Classic Mac OS 已经技术落后无可救药;自己开发的下一代项目 "Copland" 彻底失败。苹果于是收购了 NeXT,把乔布斯接回来,并以 NeXTSTEP 为基础开发下一代 macOS。

2001
Mac OS X 10.0 发布

新一代 macOS 诞生,底层是 NeXTSTEP,外壳是新的 Aqua 界面。从此 Mac 拥有了真正现代的操作系统基础。这就是你今天用的 macOS 的开端。

今天 macOS 的层次结构

应用程序层
Safari · Final Cut · Logic Pro · 第三方 App
Cocoa · 应用框架
从 NeXTSTEP 继承的 Objective-C / Swift 框架
Aqua · 图形界面
窗口、菜单、动画
Darwin · 开源核心
Mach 微内核 + BSD 用户空间
硬件抽象层 + Apple Silicon

"优中选优"的真正含义:

内核选 Mach——学术界最先进的微内核研究成果
用户空间选 BSD——稳定成熟的 Unix 体系,正统 Unix 血统
开发语言选 Objective-C(后来扩展到 Swift)——面向对象先驱
图形渲染基础选 PostScript / PDF——印刷出版业标准
外壳设计师选 Jony Ive——精致美学

苹果在每一层都"选最好的然后整合"——这就是 macOS 与众不同的根本原因。它通过了 Open Group 的 UNIX 认证,是正式的 UNIX 系统(Linux 反而不是,只是 "Unix-like")。

iOS、iPadOS、watchOS、tvOS、visionOS 全都是从 macOS 衍生出来的,共享 Darwin 内核。这就是为什么苹果生态可以"无缝连接"——它们本质是同一个操作系统的不同外壳。
16 / 46
▌ 14 · Windows

§Windows
两条血统的故事

Windows 走的是一条完全不同的路。它有两个独立的血统,在 2001 年才合并成今天的样子。

血统 A · DOS / Windows 9x(消费产品线)

1981
MS-DOS · 一切的开始

IBM 要给 PC 找操作系统,找到比尔·盖茨的微软。微软没有现成的产品,于是花 5 万美元从一家小公司买了 QDOS,改名 MS-DOS 卖给 IBM。每卖一台 PC 收一份授权费——这笔交易奠定了微软帝国的基础。

1985
Windows 1.0 · 只是个图形外壳

早期 Windows 不是独立操作系统,只是跑在 DOS 上的图形界面外壳。Windows 3.1(1992)开始流行。

1995
Windows 95 · 划时代产品

整合了 DOS 和 Windows,引入开始菜单、任务栏、即插即用。商业上极其成功。但底层还是 DOS 血统,不稳定、不安全

1998-2000
Windows 98 / Me · 9x 系列的终点

稳定性问题始终无法根治。微软知道必须换血了。

血统 B · Windows NT(企业产品线)

1988 年,微软挖来了一个改变了 Windows 命运的人——Dave Cutler

Cutler 是谁?

Cutler 原来在 DEC 公司主持 VMS 操作系统开发,是当时业界最顶级的 OS 架构师之一。他带着团队加入微软,从零设计了 Windows NT(NT = New Technology)。

NT 是个真正的现代操作系统:

2001 · 两条线合并

Windows 9x 系列
DOS 血统 · 消费市场
Windows NT 系列
NT 内核 · 企业市场
Windows XP (2001)
基于 NT 内核 · 消费级界面 · 一统江山
XP → Vista → 7 → 8 → 10 → 11
现在的 Windows 11 内核版本号是 NT 10.x

Windows 在 x86 上的指令集深度

Windows 与 x86 是一对深度绑定的伙伴。几十年来 Windows 持续优化对 x86 各代指令集扩展的支持:

扩展引入年份用途
MMX1996多媒体扩展,处理 8/16/32 位整数向量
SSE / SSE21999/2000单指令多数据(SIMD),加速浮点数计算、3D 图形
AVX / AVX22011/2013256 位向量寄存器,机器学习、视频编解码加速
AVX-5122016512 位向量,HPC 和 AI 工作负载
AES-NI2010硬件加密指令,HTTPS 加速
TSX2013事务性内存,多线程同步加速
这也是 Windows 在 ARM 上"水土不服"的原因之一:几十年积累的 x86 优化代码,迁移到 ARM 后需要重新写或者靠运行时翻译。微软目前推 Windows on ARM,并通过 Prism 翻译层运行 x86 软件(类似苹果的 Rosetta 2),但生态比 macOS 转 ARM 时艰难得多。
IX.
操作系统内核在做什么?
奶奶也能懂的内核原理
PROCESS · MEMORY · I/O
17 / 46
▌ 15 · 内核原理

§操作系统内核
到底在做什么?

你点开 Word,敲键盘出字,把文件存到硬盘——这一连串事情背后,操作系统内核在拼命工作。它具体在做什么?

把电脑想象成一座大商场。

硬件是商场的房子、电梯、停车场、收银机。
应用程序是商场里的各家店铺:服装店、餐厅、咖啡厅、电影院。
操作系统内核商场物业管理处——你看不到它,但没有它一切瘫痪。它管:

① 哪家店开在哪个铺位(内存分配
② 电梯什么时候载谁去几楼(CPU 调度
③ 收银机怎么和银行结算(I/O 与设备驱动
④ 不让一家店的客人随便闯进另一家(权限与隔离
⑤ 把卖出去的东西记在台账上(文件系统

内核的五大职责

① 进程管理 · 调度

你的电脑可能同时开着浏览器、微信、音乐播放器、视频会议、几十个后台进程……但 CPU 核心可能只有 4 个。每一刻只有几个程序真在跑,其他都在排队。

内核负责飞快地切换——每个程序跑几毫秒,然后让出 CPU 给下一个。切换的速度快到你感觉所有程序"同时"在跑。这就叫时间片轮转

现代调度器(如 Linux 的 CFS、EEVDF)要考虑:哪个程序优先级高?哪个需要低延迟(视频会议)?哪个可以慢慢跑(后台下载)?

② 内存管理 · 虚拟内存

你电脑可能装了 16GB 内存,但所有程序加起来想用 30GB——怎么办?

内核施了一个魔法:每个程序看到的是它"自己独占的"一大块连续内存(虚拟地址空间),但实际上:

· 多个程序的"虚拟内存"映射到同一块物理内存的不同位置
· 不常用的部分可以暂时存到硬盘(swap / 交换文件)
· 程序之间彼此看不到对方的内存——一个程序崩溃不影响别人

这就是为什么现代电脑稳定——单个程序崩溃几乎不会拖垮系统。

③ 文件系统

硬盘其实只知道"扇区"和"块"——一堆编号的存储位置。"文件"、"文件夹"这些都是内核虚构出来给你的抽象

内核要管:

· 哪些块属于哪个文件
· 文件名 → 物理位置的映射
· 权限:谁能读、谁能写
· 完整性:意外断电时不丢数据(journaling)
· 性能:缓存、预读

常见文件系统:Windows 用 NTFS,macOS 用 APFS,Linux 主流用 ext4BtrfsXFS,移动设备常见 F2FS

④ 设备驱动 · I/O

每一个键盘、鼠标、显卡、网卡、打印机、摄像头都是不同厂家做的,每个有自己的通信协议。如果应用程序要直接对接所有硬件,那是噩梦。

内核提供"设备驱动"层:硬件厂家写驱动,告诉内核怎么和它说话;应用程序对内核说"我要打印"——剩下的内核包办。

这也是为什么Linux 装新硬件常常需要装驱动——内核需要这个翻译器才能和硬件通信。

⑤ 权限与安全

内核运行在 CPU 的"特权模式"(也叫 Ring 0、内核态),能干一切事——访问任何内存、控制任何硬件。

应用程序运行在"用户模式"(Ring 3、用户态),权限受限。要做敏感操作必须通过系统调用请求内核帮忙。

这一层隔离是整个计算机安全的根基。攻破内核 = 攻破一切。所以 OS 厂商把内核安全看得比命还重。

⑥ 网络栈

你浏览网页时,TCP/IP 协议要执行很多步骤:DNS 解析、TCP 握手、HTTP 请求、SSL 加密、数据包路由……这些大多在内核里完成

应用程序只需要调用简单的"socket API":connect(google.com:443)send(...)recv(...),剩下复杂的事内核全包了。

用户态 vs 内核态:一次系统调用的旅程

// 你写一行简单的代码:把 "Hello" 写到文件
user code   write(fd, "Hello", 5);

↓ 触发 syscall 指令(如 x86 的 syscall,ARM 的 svc
↓ CPU 切换到内核态(Ring 0)

kernel      sys_write() 内核函数被调用
                ↓ 检查权限:你能写这个文件吗?
                ↓ 通过 VFS 找到对应的文件系统驱动
                ↓ 把数据写入缓存(不一定立刻落盘)
                ↓ 返回成功

↓ CPU 切换回用户态
user code   继续执行下一行代码

这一来一回的"模式切换"有开销。所以高性能应用尽量少调系统调用,把数据攒一批再一起写(比如用 printf 而不是直接 write,因为 printf 在用户态有缓冲)。

X.
GPU 与异构计算
CPU 已经不是唯一的主角
SIMT · CUDA · NPU · TPU
追加 · 07 / NEW
▌ 18 · GPU 革命

§GPU 为什么
跟 CPU 完全不一样?

过去几年,全世界最贵、最抢手的芯片不是 Intel 的 CPU,而是 NVIDIA 的 GPU——一颗 H100 价格 3 万美元,等货要排几个月队。

GPU 凭什么这么贵?它和 CPU 究竟差在哪?答案藏在一个根本性的设计哲学差异里。

少而强 vs 多而傻

CPU

Central Processing Unit · 通用

  • 核心数少(4-64 个),但每个超强
  • 擅长串行任务、复杂逻辑、分支判断
  • 大量晶体管用于缓存、分支预测、推测执行
  • "少数精英在同一道难题上深思熟虑"
  • 跑操作系统、浏览器、办公软件最在行
vs

GPU

Graphics Processing Unit · 并行

  • 核心数极多(数千到上万个),但每个简单
  • 擅长大规模并行、相同操作重复做
  • 大部分晶体管用于纯算术单元
  • "一万个普通工人同时做一万个相同动作"
  • 跑图形渲染、AI 训练、科学计算最在行

想象一道菜要做 100 万人份。

CPU 方式:8 个米其林大厨,一个个仔细做。每人能处理复杂工序,但 100 万份要做很久。

GPU 方式:10000 个流水线工人,每人只会一招"切菜"或"装盘"。但他们同时干活——100 万份可能 1 小时就齐了。

所以 GPU 不是"更快的 CPU",它是一种完全不同的计算模型——并行性极强但单任务弱。

核心模型:SIMT

GPU 的计算模型叫 SIMT(Single Instruction, Multiple Threads)——一条指令,几千个线程同时执行

// CPU 写法:循环加 100 万次(一个核心,做 100 万次)
for (int i = 0; i < 1000000; i++) {
  c[i] = a[i] + b[i];
}

// GPU 写法:100 万个"线程"同时各做一份加法(CUDA 风格)
__global__ void add_kernel(float* a, float* b, float* c) {
  int i = blockIdx.x * blockDim.x + threadIdx.x;
  c[i] = a[i] + b[i];  // 每个线程只干一份
}

// 调用:100 万次加法 -> 1 次启动 100 万线程
add_kernel<<<1000, 1000>>>(a, b, c);

同一段"加法",CPU 要循环 100 万次,GPU 一次性派出 100 万个线程并行执行——理论上快 100 万倍(实际受带宽、调度限制达不到,但差几百倍很常见)。

为什么 AI 离不开 GPU?

神经网络训练的本质,就是巨量的矩阵乘法。一个 1750 亿参数的大模型(如 GPT-3),训练时每秒要算几十万亿次浮点数。

矩阵乘法 = GPU 主场

矩阵乘法每个元素的计算互不依赖,完美适配 GPU 的并行模型。一个 4096×4096 的矩阵相乘,CPU 要几秒,H100 GPU 几毫秒。

Tensor Core · 矩阵专用单元

NVIDIA 从 V100 开始在 GPU 里加入了专门做矩阵乘加的"张量核心"。一颗 H100 的 Tensor Core 每秒能做 1000 万亿次(1 PetaFLOPS)混合精度运算——这是它能卖 3 万美元的根本原因。

从游戏卡到 AI 王者:NVIDIA 的二十年

1999
GeForce 256 · 第一块"GPU"

NVIDIA 把图形加速卡正式命名为 "GPU"。当时纯粹为游戏渲染设计——计算多边形、贴纹理、做光照。

2006
CUDA · 把 GPU 变成通用计算机

NVIDIA 推出 CUDA——一套让 GPU 跑通用计算(不只是图形)的编程平台。这一步是天才的预判:当时几乎没人觉得 GPU 能干图形之外的事。

2012
AlexNet · 深度学习引爆点

多伦多大学的 Hinton 团队用 2 块 NVIDIA GTX 580 训练了 AlexNet,在 ImageNet 比赛上碾压所有传统方法。从此 AI 研究全转向 GPU——CUDA 成了事实标准。

2017
V100 · 第一代 Tensor Core

专门加速矩阵乘法的硬件单元出现。这是 GPU 从"图形 + 科学计算"正式变成"AI 计算引擎"的转折。

2022
H100 + ChatGPT · 软件吃 GPU

OpenAI 用上万张 A100/H100 训练出 ChatGPT,引爆生成式 AI 浪潮。全世界突然抢 GPU,NVIDIA 市值飙升至全球前三。

2024-2025
Blackwell · GB200 · 千卡集群成标配

新一代 B100 / GB200,单卡 FP4 算力 20 PetaFLOPS。大模型训练已经是上万张卡的工程——一个数据中心耗电堪比一座小城市。

追加 · 08 / NEW
▌ 19 · 加速器谱系

§CUDA 帝国
+ 专用加速器全谱

NVIDIA 的护城河不是它的 GPU 芯片本身——AMD、Intel 也能做出硬件参数接近的产品。真正的壁垒,是软件生态,叫 CUDA

CUDA 帝国 · 19 年的软件护城河

CUDA 不只是一种编程语言,而是 NVIDIA 19 年来积累的庞大软件栈:

· cuBLAS(线性代数)、cuDNN(深度学习)、NCCL(多卡通信)
· TensorRT(推理加速)、Triton(推理服务)
· PyTorch / TensorFlow / JAX 都首先支持 CUDA
· 学术界几乎所有 AI 论文的代码都默认跑 CUDA
· 上百万开发者熟悉 CUDA API

对手 AMD 的 ROCm、Intel 的 oneAPI、Apple 的 Metal 硬件其实都不差,但软件生态落后 5-10 年。OpenAI、Meta、Google 即使想"去 NVIDIA 化"也很痛苦。

这就是"软件吃硬件"——硬件领先半年就被追上,软件生态领先十年才是真壁垒。

除了 GPU,还有这些加速器

类型 全称 专长 代表产品
GPU Graphics Processing Unit 通用并行计算、图形、AI 训练 NVIDIA H100/B100、AMD MI300X
TPU Tensor Processing Unit 专做矩阵乘法(AI 训练/推理) Google TPU v4/v5(仅自家云用)
NPU Neural Processing Unit 端侧 AI 推理(手机、PC) Apple Neural Engine、高通 Hexagon、Intel AI Boost
DPU Data Processing Unit 数据中心网络、安全、存储卸载 NVIDIA BlueField、AMD Pensando
ASIC Application Specific IC 为某一种算法定制的"一招专精"芯片 比特币矿机、AWS Trainium、Tesla Dojo
FPGA Field Programmable Gate Array 电路可编程,硬件灵活但功耗较大 Xilinx (现 AMD)、Intel Altera
ISP Image Signal Processor 手机摄像头实时降噪、HDR iPhone 的 ISP,每代都升级

异构计算 · 一个任务用对工具

应用层
一个 AI 视频会议软件
▌ CPU 跑界面、网络、协议解析 — 串行逻辑
▌ GPU 跑视频渲染、滤镜 — 图形并行
▌ NPU 跑人脸美颜、虚拟背景 — AI 推理
▌ ISP 处理摄像头原始信号 — 专用流水线
▌ 视频编解码器 把画面压缩成 H.265 — 硬件编码
↕ 所有部件通过统一内存 / 高速总线共享数据

这就是"异构计算"——同一颗芯片或同一台机器里,不同任务派给最擅长它的硬件。Apple Silicon 的 SoC 设计本质就是这个思路;NVIDIA 的 Grace Hopper(CPU+GPU 一体)也是;今后 AI 服务器的形态都在往这个方向走。

中国玩家:弯道超车的赛道

GPU 是中国半导体最有机会"弯道超车"的领域之一——因为相比 CPU 有 50 年生态包袱,GPU 在 AI 时代之前体量很小,从零做生态反而比 CPU 容易

已上路的玩家

· 寒武纪:AI 加速器,早期与华为合作过

· 燧原:AI 训练 / 推理芯片

· 壁仞:通用 GPU,曾发布对标 A100 的 BR100

· 摩尔线程:消费级 GPU + AI 加速

· 华为昇腾:自研 AI 处理器,配套 MindSpore 框架

挑战

· 美国出口管制让 EUV 高端工艺无法使用

· NVIDIA CUDA 生态太厚,能不能让 AI 工程师从 CUDA 切换是关键

· 一些项目(如华为昇腾)选择"提供 CUDA 翻译层"以降低迁移成本

过去几十年,CPU 一直是计算的主角,其他芯片是"配角"。今天这个剧本反过来了——AI 任务里 GPU 是主角,CPU 只是负责"派活"和处理 I/O

这是几十年来最大的范式转移。下一个 NVIDIA 是谁?现在还看不清,但它一定不会卖 CPU。
异构计算时代的预言
XI.
OS 的另一半
Android · RTOS · 启动 · 虚拟化
MOBILE · EMBEDDED · BOOT · CLOUD
追加 · 09 / NEW
▌ 20 · 被遗忘的 70%

§Android
世界上用户最多的 OS

前面讲了 Linux、macOS、Windows——但有个事实容易被忽略:用户数最多的操作系统不是 Windows,而是 Android

全球约 70% 的智能手机跑 Android。它基于 Linux,但又跟桌面 Linux完全不一样

Android ≠ Linux 桌面

应用层 (Apps)
微信、抖音、Chrome——都是 Java/Kotlin 写的
Android Framework
Activity、Service、Content Provider、Binder IPC
ART · Android Runtime
把 Java/Kotlin 字节码 AOT/JIT 编译成 ARM 机器码
Bionic libc + HAL 硬件抽象
Google 自写的 libc(BSD 许可);HAL 屏蔽硬件差异
Linux 内核(魔改版)
+ Binder + ashmem + wakelock + LMK 等 Android 专属补丁

Android 的四个独特设计

① IPC

Binder · 不用传统 Linux IPC

Linux 自带的进程通信(管道、socket、共享内存)开销大、不适合手机。Android 自己写了 Binder 驱动,专为高频跨进程调用优化。

每次你的 App 调用系统服务(拍照、定位、震动),背后都走 Binder。

② RUNTIME

ART · 替代 Dalvik 虚拟机

早期 Android 用 Dalvik(运行时翻译 Java 字节码);2014 起换成 ART(Android Runtime)——安装 App 时提前编译成机器码,启动更快、更省电。

③ LIBC

Bionic · 自写 libc

不用 GNU 的 glibc(GPL 太"传染"),改用自家的 Bionic(BSD 许可)。这样 App 可以闭源发布,应用商店模式才走得通。

④ POWER

电源管理 · wakelock 哲学

桌面 Linux 默认 CPU 跑就跑;手机不行——电池就那么点。Android 加了 wakelockdozelow-memory killer等机制,默认让设备睡死,必要时才唤醒

碎片化的代价

!

Android 的"碎片化"是它最大的痛点。

iOS:苹果一家说了算,新版本 80% 设备一周内升上。

Android:Google 出新版本 → SoC 厂商(高通、联发科)适配 → 手机厂商(三星、小米、OPPO)改 UI → 运营商批准 → 推送给用户。整条链路常常半年到一年,老机型可能永远收不到。

为缓解,Google 推动过 Project Treble(2017)把厂商层和 Android 框架分离,又推 Generic Kernel Image(2021)统一内核——但碎片化问题至今没根治。

iOS 和 Android 的根本差异不在内核,而在商业模型:iOS 是封闭垂直整合(苹果一家通吃),Android 是开放生态(Google 给系统 + 厂商定制 + 应用商店分成)。同样的 ARM 硬件,两种世界。
追加 · 10 / NEW
▌ 21 · 看不见的 OS

§RTOS 实时操作系统
开着车、坐着飞机时你在用

你今天用过的 OS,最多的可能不是 Windows、macOS、Android——而是 RTOS(实时操作系统)。

它跑在汽车的发动机控制单元里、电梯里、洗衣机里、飞机的飞控里、心脏起搏器里——几乎所有"必须在 X 毫秒内响应否则会死人"的场景都用它。

什么叫"实时"?

不是"",是"可预测"。

通用 OS

Linux / Windows / macOS

  • 追求平均速度
  • 偶尔卡顿、垃圾回收停顿都能接受
  • 调度器追求"公平"
  • 响应时间无上限保证(理论上可能停 1 秒)
vs

实时 OS · RTOS

QNX / VxWorks / FreeRTOS

  • 追求最坏情况下也快
  • 必须在硬性时间上限内响应(如 1ms)
  • 调度器追求"满足截止时间"
  • 愿意牺牲吞吐量,换响应可预测性

通用 OS 像高铁——平均很快,但偶尔晚点也能忍。

RTOS 像定时炸弹的引信——你按下按钮,它必须在 5 秒后引爆,不能 4.9 秒,也不能 5.1 秒。"平均 5 秒"在这里毫无意义。

RTOS 的几位主角

系统归属常见场景
QNX BlackBerry (现归 BlackBerry Limited) 汽车(特斯拉 Model S 早期、宝马、奥迪 iDrive 部分版本)、医疗、核电站、F-22 战机
VxWorks Wind River 火星探测器(好奇号、毅力号都跑 VxWorks)、波音 787 飞控、工业机器人
FreeRTOS 开源 (现属 AWS) IoT、智能家居、单片机项目首选(ESP32 几乎默认用它)
RT-Linux / PREEMPT_RT Linux 实时补丁 给标准 Linux 加上硬实时能力,工业控制、4G/5G 基站用
μC/OS Micrium 医疗设备、汽车 ECU
AUTOSAR Classic 汽车行业联盟标准 欧美所有主流车企的发动机/刹车/转向 ECU

有意思的事实:你的特斯拉车机系统跑的是 Linux(中控大屏),但真正控制刹车、加速、转向的"自动驾驶 ECU"跑的是 RTOS。因为 Linux 偶尔卡 100 毫秒不会死人,但刹车晚 100 毫秒可能要命。

你的手机里也有:基带芯片(处理通信信号)跑的是 RTOS,应用处理器跑 Android——同一台手机里两个 OS 各司其职

追加 · 11 / NEW
▌ 22 · 上电之后

§按下电源键后
那 5 秒发生了什么?

你按下电脑的电源键,等几秒钟桌面就出来了。这中间有一长串接力——从一段死板的固件,到一个完整的现代操作系统,要走 5-7 个阶段。

启动接力赛

阶段 1
固件启动 · BIOS / UEFI

主板上有一颗小芯片固化了启动程序。CPU 一上电就去执行它。BIOS(Basic Input Output System)是 1981 年起的老传统;UEFI(Unified Extensible Firmware Interface)是 2005 年起的现代替代品,支持图形界面、网络启动、安全启动(Secure Boot)。

阶段 2
POST · 硬件自检

固件检测内存、显卡、键盘、硬盘是否正常。你听到的""一声就是 POST(Power-On Self-Test)完成。

阶段 3
找到启动设备 + 加载 Bootloader

UEFI 按设定的顺序找:硬盘 → U 盘 → 网络。找到带启动标志的设备,加载第一个程序Bootloader。常见的:GRUB(Linux)、systemd-boot(Linux)、Windows Boot Manager、Apple boot.efi。

阶段 4
Bootloader 加载内核到内存

Bootloader 的工作就一件事:把操作系统内核(如 vmlinuz)从硬盘读到内存里,跳转过去执行。多系统启动菜单(双系统)也是它管。

阶段 5
内核初始化

内核接管 CPU 后,依次初始化:内存管理、中断系统、设备驱动(CPU/磁盘/网卡/显卡)、文件系统、网络栈。这是最复杂的几秒

阶段 6
启动 init 进程 (PID 1)

内核启动的第一个用户态程序叫 init(PID 1),它是所有其他进程的祖宗。Linux 上现代用 systemd,老派用 SysV init / OpenRC。macOS 用 launchd

阶段 7
登录界面 + 桌面环境

init 启动一系列后台服务(网络、蓝牙、声音、打印),然后启动登录管理器(GDM / LightDM)。你输入密码后启动桌面环境(GNOME / KDE / macOS Finder / Windows Explorer)。

BIOS vs UEFI · 一张速查表

对比项BIOS (旧)UEFI (新)
年代1981 - 2010s2005 - 至今
启动模式16 位实模式32/64 位保护模式
分区表MBR(最大 2TB)GPT(最大 18EB)
启动速度慢(顺序检测设备)快(并行 + 跳过检测)
界面纯文本 + 键盘图形 + 鼠标 + 网络
安全启动Secure Boot(验证启动文件签名,防 rootkit)
2020 年起新电脑基本都是 UEFI 了。BIOS 在新机器上正式退场(Intel 2020 宣布 2024 年起完全停止支持传统 BIOS)。这是一段 40 年的老技术告别。
追加 · 12 / NEW
▌ 23 · 云的根

§虚拟化与容器
云计算靠什么撑起来?

你在 AWS 开一台"虚拟机",几秒钟就有了。你在自己电脑上跑 Docker,几秒就启动一个干净的 Linux 环境。这些"看起来是机器"的东西,背后是三十年虚拟化技术的累积。

虚拟化的三层抽象

LAYER 1

硬件虚拟化 · Hypervisor

一个软件假装自己是一台台独立的机器,里面跑完整的 OS。隔离最强、开销最大。

代表:VMware ESXi、Xen、KVM、Hyper-V、Apple Virtualization Framework

LAYER 2

容器化 · Container

共用一个 Linux 内核,但每个容器有独立的文件系统 / 进程 / 网络视图。轻量得多,秒级启动。

代表:Docker、Podman、containerd、LXC

LAYER 3

函数 · Serverless

连容器都不显式管,直接交一段函数代码上去。云平台帮你跑、用完即销毁,按调用次数计费。

代表:AWS Lambda、Cloudflare Workers、Vercel Functions

虚拟机 vs 容器:本质区别

App + App + App
Guest OS(完整一个!)
Guest OS(又一个完整的!)
Hypervisor
Host OS + 硬件
VM · 每个 VM 自带 OS
启动几十秒 · 占几个 GB
App 1
App 2
App 3
Container Runtime (Docker)
同一个 Linux 内核 + 硬件
Container · 共享内核
启动秒级 · 占几十 MB

容器的两个内核魔法

① namespaces · 看起来独立

Linux 内核能让进程看到"假的"系统视图

· PID namespace:容器里 PID 1 是自己的 init
· Net namespace:容器有自己的虚拟网卡和 IP
· Mount namespace:容器看到的根目录跟主机不同
· User namespace:容器内 root 不是真 root

几个 namespace 加起来,就让一个进程感觉自己在一个独立机器里

② cgroups · 控制资源

cgroups(control groups)限制每个容器能用多少 CPU、内存、I/O、网络带宽。

这是 Docker 能"一台机器跑几百个容器"而不互相打架的关键——每个容器有硬性资源上限

这两个东西都是 Linux 内核自带的(cgroups 2007 由 Google 贡献),Docker 只是把它们封装成易用的工具。

Kubernetes · 容器编排

当容器多到几千个,手动管不过来。Kubernetes(k8s)就是来管这件事的——它是"容器的操作系统"。Google 把内部用了 15 年的 Borg 系统改造成开源版,2014 年发布,从此成为云原生时代的事实标准。

// k8s 帮你处理这些事

调度      把容器派到哪台机器跑(看资源、亲和性)
自愈      容器崩了自动重启;节点挂了把容器搬走
扩缩容   流量大了自动加副本,少了自动减
服务发现 容器之间用域名互相找,IP 变了也不影响
滚动升级 逐个替换旧版本容器,零停机更新
虚拟化把一台机器变成多台,容器把多台机器变成一台——方向相反,目的一样:让计算资源像水电一样按需取用。

从 1960 年代 IBM 大型机上的分时系统,到 2020 年代的 Serverless,"抽象 + 复用 + 隔离"这三个词是 OS 历史的永恒主题。
虚拟化的本质
XII.
全景与启示
不同架构擅长什么 · 路在何方
SYNTHESIS · 综合
18 / 46
▌ 16 · 总览

§架构与系统
完整对照

操作系统 × CPU 架构 全景

系统 历史血统 内核类型 主要架构支持
商业 Unix
AIX / Solaris / HP-UX
1969 贝尔实验室原创 单内核 历史上多种 RISC
(SPARC、POWER 等)
Linux
Ubuntu / Debian / RHEL
Unix-like
(1991 重新实现)
单内核 + 可加载模块 几乎所有架构
x86 · ARM · RISC-V · POWER · LoongArch...
BSD 家族
FreeBSD · OpenBSD · NetBSD
直接源自伯克利 Unix 单内核 x86 · ARM 为主
macOS
iOS · iPadOS 同源
NeXTSTEP → Darwin
(Mach + BSD)
混合内核 PowerPC (≤2006) →
x86 (2006-2020) →
ARM (2020+ Apple Silicon)
Windows
XP / 7 / 10 / 11
独立血统 (NT 内核) 混合内核 主要 x86
正在加强 ARM 支持
Android
手机 · 平板 · 车机
Linux 内核 + Google 框架
(2008 起)
单内核
(魔改 Linux + Binder)
ARM 为主
少量 x86 (PC 模拟)
iOS / iPadOS
watchOS · tvOS · visionOS
macOS 同源
(Darwin / NeXTSTEP)
混合内核 ARM 独占
(Apple Silicon)
实时 OS · RTOS
QNX · VxWorks · FreeRTOS
各家独立 / 部分基于 Unix 微内核 / 单内核都有 ARM Cortex-M/R
少量 x86 / RISC-V

架构发展的当下趋势

① ARM 全面入侵桌面 / 服务器

苹果 M 系列证明了 ARM 完全可以做高性能 PC。AWS Graviton、阿里倚天等 ARM 服务器芯片大量部署——功耗低 = 电费省 + 机房密度高。微软推 Windows on ARM,高通骁龙 X Elite 笔记本瞄准这个市场。

② x86 学 ARM 的"大小核"

Intel 12 代 Alder Lake 引入 P-core + E-core,AMD 也跟进。x86 阵营终于重视能效——这是被 M1 倒逼的。

③ 专用加速器崛起

通用 CPU 之外,越来越多任务交给专用芯片:GPU(NVIDIA、AMD)做图形和并行计算,NPU/TPU 做 AI,DPU 做数据中心网络。"异构计算"成为主流。

④ CISC 与 RISC 的内部融合

x86 内部其实是 RISC 风格(微操作);ARM 也在加入更多复杂指令(如 SVE 向量扩展)。纯粹的"流派之争"正在淡化,更多差异在实现细节和生态上。

⑤ RISC-V 的"保险价值"

地缘政治推动 RISC-V 快速发展。短期内不会取代 x86 或 ARM,但作为开源备份,价值越来越大。中国在这条路上投入巨大。

⑥ AI 重塑硬件需求

大模型训练和推理对算力的疯狂需求,让 CPU 越来越像是"配角",GPU/NPU 才是主角。架构设计开始围绕"AI 性能/瓦特"重新思考。

19 / 46
▌ 17 · 选型

§不同架构
最擅长什么场景?

x86-64 的主场

· 传统桌面办公:Windows 生态、Office、大量历史软件原生 x86

· 游戏 PC:Windows + DirectX + x86 是黄金组合,几乎所有游戏为 x86 优化

· 专业工作站:CAD、3D 渲染、视频剪辑——专业软件 x86 优化最成熟

· 企业级 Windows 服务器:SQL Server、Active Directory 等微软栈深度依赖 x86

· 极致单核性能:Intel i9、AMD Ryzen 9 顶级桌面 CPU 单核仍是天花板

ARM 的主场

· 移动设备:手机、平板对功耗极其敏感,ARM 几乎垄断

· 嵌入式 / IoT:智能家居、车载、可穿戴设备

· 苹果生态笔记本:M 系列性能/功耗比目前难以匹敌

· 云服务器:高并发 Web 后端、容器化负载——电费便宜、密度高

· 端侧 AI 推理:手机端人脸识别、语音助手几乎全在 ARM 上

· 边缘计算:低功耗、可在恶劣环境部署

RISC-V 的主场

· 嵌入式系统:受 ARM 授权费困扰的低端 MCU 市场

· AI 加速器内嵌的控制核:作为加速器中的小型协处理器

· 学术研究 / 教学:开源,方便研究和教学

· 自主可控诉求:地缘政治背景下的"安全备份"

POWER 的主场

· 大型企业核心系统:银行、电信关键业务长期使用 IBM Power

· 特定 HPC(高性能计算):少数超算项目

市场已经很小,但在自己的细分领域非常稳固。

给学习者的建议路径

// 不同方向的学习路径建议

想做 Web/后端开发
  → 用 Mac (ARM) 或 Linux (x86) 开发
  → 部署到 Linux 服务器,不太关心底层架构,语言运行时帮你抹平差异

想做系统/嵌入式开发
  → 必须深入了解 x86 和 ARM
  → 学汇编、看 Linux 内核源码,从 RISC-V 入手很合适

想做 iOS / macOS 开发
  → Mac (Apple Silicon) + Swift / Objective-C
  → 顺便会接触 ARM 汇编和 Darwin/BSD 概念

想做游戏开发
  → 主要平台 Windows + x86 (PC)、ARM (移动端、Switch)
  → 需要理解 GPU 架构(CUDA / Metal / Vulkan)

想做 AI / 机器学习
  → CPU 架构其实没那么重要
  → 重点是 GPU (CUDA) / TPU / NPU,CPU 主要是配角
20 / 46
▌ 18 · 总结

§记住这些
就够了

7 个核心要点

▌ KEY 01

所有 CPU 都跑同一个循环 · 冯诺依曼

x86、ARM、RISC-V 看起来千差万别,但都是取指→译码→执行→写回。所有性能优化(缓存、流水线、推测执行)本质都在跟"冯诺依曼瓶颈"作斗争。

▌ KEY 02

指令集架构 (ISA) 是软硬件的契约

它决定了 CPU 听得懂哪些命令。x86、ARM、RISC-V 是三种主流"语言",互不兼容。CISC vs RISC 在现代实现里早已融合——x86 内部也是 RISC 风格。

▌ KEY 03

性能的真正秘密在"等内存"上

现代 CPU 大部分时间在等内存,不在算。缓存层次、流水线、推测执行、超线程——这四件套决定了同一颗 CPU 性能能差十倍。Spectre/Meltdown 提醒我们:极致性能优化的副作用,是新的攻击面。

▌ KEY 04

Unix 是所有现代 OS 的精神源头

macOS 直接继承 Unix 血统(认证 UNIX);Linux 是 Unix-like 的重新实现;Android 用 Linux 内核;Windows 独立血统但也学了很多 Unix 概念。POSIX 让这些系统有了共同语言

▌ KEY 05

2005 年是大拐点 · Dennard Scaling 终结

之前每代 CPU 自动变快又省电;之后只能靠多核 + 专用加速器 + 制程工艺。苹果 M1 的成功、ARM 入侵 PC、GPU 卖到天价、台积电的崛起——全是这个拐点之后的产物。

▌ KEY 06

苹果 M 系列的成功是垂直整合的胜利

苹果同时控制 CPU、OS、编译器、应用生态,再加上独家拿到 TSMC 最先进工艺。每一层为下一层优化,PC 厂商无法复制。

▌ KEY 07

未来不是单一架构胜出,而是异构共存

x86 守住桌面和高性能 PC;ARM 主导移动和能效场景;RISC-V 在开源和自主市场扩展;GPU/NPU/TPU 承担越来越多 AI 与专用计算。"哪个架构会赢"是错误的问题——它们在各自领域共存,并通过虚拟化和容器协作

计算机体系结构的历史告诉我们:没有最好的设计,只有最适合时代和场景的设计。今天的胜利者,可能是明天的失败者;今天的小众,可能是明天的主流。

真正不变的,是抽象的力量——从 8086 到 M3 Max,从汇编到 Python,每一层抽象都让人类从硬件细节中解放出来,去构建更宏大的东西。
— 体系结构的元启示
21 / 46
▌ 19 · 延伸

§想深入学习
读这些

经典教材

《计算机组成与设计:硬件/软件接口》

Patterson & Hennessy

Patterson 是 RISC-V 的发起人之一,这本书是计算机体系结构的圣经。有 ARM 版、x86 版和 RISC-V 版,选你感兴趣的。

《现代操作系统》

Andrew Tanenbaum

就是那个和 Linus 论战过的 Tanenbaum。这本书是操作系统经典教材,覆盖了内核所有核心概念。

《深入理解计算机系统》(CSAPP)

Bryant & O'Hallaron

从程序员视角理解计算机系统的最佳入门书,配套 CMU 15-213 课程。能让你彻底打通"代码→机器"的认知

《Linux 内核设计与实现》

Robert Love

想了解 Linux 内核怎么工作,这是最易读的入门书。看完可以接着读《深入 Linux 内核架构》。

历史与思想

《大教堂与集市》

Eric S. Raymond

开源运动的奠基性文章。讲述 Linux 为什么能用"集市"模式打败传统"大教堂"模式。免费在网上能读

《Unix 编程艺术》

Eric S. Raymond

不是技术手册,而是 Unix 哲学的总结:简洁、模块化、组合性。读完会改变你对软件的理解

《乔布斯传》

Walter Isaacson

想了解 NeXT、macOS、Apple Silicon 决策背后的人和故事,这是最好的窗口。

RISC-V 官方手册

riscv.org

开源指令集的完整规范。如果你想知道一个 ISA 的"说明书"长什么样,RISC-V 是最容易上手的,写得清晰简洁。

动手实践

// 推荐的实操项目(由易到难)

$ 学习汇编 → 用 Compiler Explorer (godbolt.org)
     // 在线把 C 代码翻译成各种架构的汇编,直观对比

$ 跑一个 RISC-V 模拟器 → QEMU + Linux
     // 体验全新的开源架构

$ 玩 Linux 内核 → 自己编译一个内核
     // 改一行 printk,看着自己写的代码跑在内核里

$ 操作系统课程 → MIT 6.S081 (xv6)
     // 跟着课程从零写一个 Unix 风格小内核

$ CMU 15-213 → 配套 CSAPP 书的所有 lab
     // 著名的 bomb lab、attack lab,做完会脱胎换骨
22 / 46
finis.

愿你心中有图
看清整个计算机世界

从 1969 年贝尔实验室的两个工程师,到 2026 年你手里这台设备——
背后是几十年无数人的设计、争论、迁移与重塑。

理解了这张大图,你看任何一台计算机,都不再陌生。

SYSTEM.READY
PREPARED FOR SOPHIE · 2026.05.24 · CLAUDE