Appearance
第 02 课 · 进程与线程
搞清「谁在跑」:部门是进程,部门里的人是线程。
作者:曹宇春
先记住这个类比
- 进程 = 一个完整部门:有工牌(PID)、有自己的办公桌(内存空间)、默认 不翻别的部门桌子
- 线程 = 部门里的员工:共享同一张大桌子,换人成本更低
打开 Chrome ≈ 成立「浏览器事业部」
打开 Cursor ≈ 成立「开发部」
两个部门 默认互不干扰。
正式概念(人话版)
| 进程 | 线程 | |
|---|---|---|
| 类比 | 整个部门 | 部门员工 |
| 内存 | 各自独立 | 共享本进程资源 |
| 创建成本 | 高 | 低 |
| 崩溃影响 | 通常只死本部门 | 一员搞砸可能拖垮整部门 |
| 通信 | 要正式流程(IPC) | 同桌说话(共享内存要注意安全) |
为什么 Chrome 开很多进程?
Chrome 倾向 标签 / 插件多进程:某个网页卡死 ≈ 只关那个小隔间,不全公司停摆。
代价:隔间多 → 占桌面(内存)多。所以标签狂开会感觉「内存爆了」。
Load Average(负载)
「平均有多少人在排队等前台工位」。
8 核机器上 load ≈ 2,通常表示 还有余量;load 长期远高于核数,才像前台门口排长龙。
在你电脑上看一眼
bash
# 进程列表(按 CPU 粗排可自行接 sort)
ps aux | head -20
# 瞬间快照:负载、空闲比例(macOS)
top -l 1 -n 5 -stats pid,command,cpu,mem
# 开机多久、负载三数字(1/5/15 分钟)
uptime你会看到:进程数可以有 几百,线程数上千——不等于 CPU 一直 100%。很多在 睡眠等 I/O(等档案室),没占工位。
开发里什么时候用得上
- Electron 应用(Cursor、Cherry Studio)= 一个品牌,多个 Helper 进程(主进程、渲染、GPU、网络)
- 多开 Agent 改同一目录 = 两个部门改同一份原件 → 用 git worktree 复印再改
- 杀进程:
kill= 请部门礼貌下班;kill -9= 保安清场(能不用就不用)
练习
- 用
ps找到Cursor或Google Chrome,数一下相关进程大概有几个。 - 解释:为什么「进程很多」但「CPU 空闲还有一半」仍然可能?
小结
- 进程隔离强、开销大;线程共享桌、切换轻
- Chrome / Electron 用多进程换稳定性,用内存买单
- Load 是排队人数,不是「卡顿唯一真相」
下一课:桌面与仓库——内存为什么让电脑变慢。