带 ⚠️ 的是最容易混的几组,单独看一下。

一、⚠️ 最容易混的七组

中文 英文 ⚠️ 坑在哪
页 / 页帧 page / frame ⚠️ 中文都叫"页"。page 是虚拟地址空间里的一块,frame 是物理内存里的一块。“把页装进帧"才是准确的说法。第 12 篇
阻塞(状态) / 阻塞(调用) blocked / blocking ⚠️ 前者是进程状态(第 2 篇),后者是接口语义(第 22 篇)。“非阻塞 I/O"里的是后者
中断 / 陷入 / 异常 interrupt / trap / exception ⚠️ 中文常统称"中断”。interrupt 来自外部设备(异步),trap 是程序主动触发syscall),exception 是程序出错触发(除零、缺页)。三者走同一条入口,但来源完全不同。第 4 篇
并发 / 并行 concurrency / parallelism ⚠️ 并发是结构(多件事在推进),并行是执行(同一时刻真的同时)。单核可以并发,不能并行。第 16 篇
内部碎片 / 外部碎片 internal / external fragmentation ⚠️ 内部 = 分给你了你没用完(4 KB 的块存 1 字节);外部 = 空间总量够但不连续。第 10、11 篇
硬链接 / 软链接 hard link / symbolic link ⚠️ 硬链接不是文件(只是目录里多一条记录),软链接是一个文件(内容是路径字符串)。第 25 篇
信号 / 信号量 signal / semaphore ⚠️ 中文差一个字,英文毫无关系,用途也毫无关系。 信号是内核从外面通知一个进程(第 3 篇),信号量是线程之间的同步原语(第 20 篇)。⭐ 一个记法:信号会丢(不排队,连发十个只到一个),信号量不会丢post 早于 wait 也算数)——这恰好是它俩最要紧的差别

二、进程与调度

中文 英文 出处
进程 process 2
进程控制块 PCB(process control block) 2
上下文切换 context switch 4
受限直接执行 limited direct execution 4
抢占 preemption 4
陷阱表 trap table 4
信号 signal 3
信号处理函数 signal handler 3
异步信号安全 async-signal-safe 3
优雅关闭 graceful shutdown 3
僵尸进程 zombie 3
孤儿进程 orphan 3
写时复制 copy-on-write(CoW) 3, 24, 28, 29
周转时间 turnaround time 5
响应时间 response time 5
护航效应 convoy effect 5
最短作业优先 SJF(shortest job first) 5
时间片轮转 round robin(RR) 5
多级反馈队列 MLFQ 6
饥饿 starvation 6
完全公平调度器 CFS(completely fair scheduler) 7
虚拟运行时间 vruntime 7
缓存亲和性 cache affinity 7
负载均衡 load balancing 7

三、内存

中文 英文 出处
地址空间 address space 8
地址空间布局随机化 ASLR 8
内存管理单元 MMU 10
基址 / 界限 base / bounds 10
分段 segmentation 10
空闲链表 free list 11
切分 / 合并 splitting / coalescing 11
伙伴系统 buddy allocator 11
分页 paging 12
页表 page table 12
页表项 PTE(page table entry) 12
虚拟页号 / 物理帧号 VPN / PFN 12
有效位 / 脏位 / 访问位 valid / dirty / accessed bit 12, 15
缺页 page fault 12
按需分页 demand paging 12
地址转换后备缓冲 TLB 13
工作集 working set 13
大页 huge page 13, 14
多级页表 multi-level page table 14
倒排页表 inverted page table 14
交换区 swap 15
页面置换 page replacement 15
时钟算法 clock algorithm 15
颠簸 thrashing 15

四、并发

中文 英文 出处
线程 thread 16
竞态条件 race condition 16
临界区 critical section 16
互斥 mutual exclusion 16
数据竞争 data race 16, 73
原子的 atomic 17
测试并设置 test-and-set 17
比较并交换 CAS(compare-and-swap) 17
自旋锁 spinlock 17
互斥量 mutex 17
票号锁 ticket lock 17
粗粒度 / 细粒度锁 coarse-/fine-grained locking 18
读写锁 reader-writer lock 18
读者优先 / 写者优先 reader-/writer-preferring 18
饥饿 starvation 17, 18
近似计数器 approximate / scalable counter 18
无锁 lock-free 18
条件变量 condition variable 19
错失唤醒 lost wakeup 19
虚假唤醒 spurious wakeup 19
Mesa 语义 Mesa semantics 19
惊群 thundering herd 19
信号量 semaphore 20
死锁 deadlock 21
活锁 livelock 21
循环等待 circular wait 21
优先级反转 / 继承 priority inversion / inheritance 21
检查时到使用时 TOCTOU 21, 30
事件驱动 event-driven 22
协程 coroutine 22
水平触发 / 边缘触发 level-/edge-triggered 22

五、持久化

中文 英文 出处
轮询 polling 23
中断合并 interrupt coalescing 23
直接内存访问 DMA 23
编程式 I/O PIO 23
寻道 / 旋转等待 seek / rotational latency 24
闪存转换层 FTL 24
写放大 write amplification 24
预留空间 over-provisioning 24
索引节点 inode 25
链接数 link count / nlink 25
文件描述符 file descriptor(fd) 25
目录项 dentry / directory entry 25, 26
超级块 superblock 26
位图 bitmap 26
间接块 indirect block 26
区段 extent 26
稀疏文件 sparse file 26
块组 cylinder group / block group 26
崩溃一致性 crash consistency 27
日志 journaling 27
检查点 checkpoint 27
屏障 barrier 27
日志结构文件系统 LFS 28
静默数据损坏 silent data corruption 28
默克尔树 Merkle tree 28

六、隔离

中文 英文 出处
命名空间 namespace 29
控制组 cgroup 29
联合文件系统 union / overlay filesystem 29
二级地址转换 second-level address translation(EPT / Stage-2) 29
能力 capability 30
侧信道 side channel 30
推测执行 speculative execution 30
内核页表隔离 KPTI 30

七、⚠️ 几个中文里说法不统一的

概念 常见的几种译法 建议
thrashing 颠簸 / 抖动 / 换页风暴 用"颠簸”,但写文档时最好带上英文
starvation 饥饿 / 饿死 都可以
livelock 活锁 / 活死锁 用"活锁"
spinlock 自旋锁 / 忙等锁 用"自旋锁";“忙等"专指 busy-waiting 这个行为
journaling 日志 / 日志式 / 记账 ⚠️ 和 log(也译"日志”)容易混。LFS 的 log 和 ext4 的 journal 不是一回事——前者是"整个文件系统就是一个日志",后者是"另开一块区域记意图"
commit 提交 / 落实 用"提交"
flush 刷 / 冲刷 / 落盘 ⚠️ 注意区分 flush TLB(清空)和 flush to disk(写下去),中文都叫"刷",含义相反

⭐ 最后一条尤其值得留意:“刷 TLB"是把内容扔掉,“刷盘"是把内容写下去。 同一个字,一个是丢弃,一个是保存。