秋招面试被问到操作系统并发,最怕的不是哪个概念不会,而是概念都会背、一追问「它们之间什么关系」就卡住。

比如「互斥锁和信号量有什么区别」「条件变量为什么总要和互斥锁一起用」「死锁的四个必要条件,破坏哪一个最现实」。这类题考的不是定义,是关系。

所以这次复习我没再做笔记列表,而是试了一下让 AI 直接生成一张知识图谱,把实体和关系都画出来,然后我自己逐条核对。下面是完整过程和我改掉的地方。

我给 AI 的描述

用的是 福兮的知识图谱 里的 AI 生成,模型选的默认 glm-4.7-flash。描述原文是这样的,102 个字:

操作系统并发这一章的知识图谱,给秋招复习用:进程、线程、协程、互斥锁、
读写锁、自旋锁、信号量、条件变量、死锁、上下文切换、用户态与内核态。
实体之间要写清楚关系,比如"包含""依赖""区别于""可能导致"。

我刻意把要出现的 11 个概念都点了名,并且给了关系词的例子。不点名的话,AI 很容易把图谱扩成一整本操作系统教材,复习的时候反而找不到重点。

第一版:11 个实体、15 条关系

等了一两分钟(页面提示生成期间别刷新),出来的结果是这样:

AI 生成的操作系统并发知识图谱第一版

它自动把实体分成了三类:概念 5 个(进程、线程、协程、上下文切换、用户态/内核态)、同步机制 5 个(四种锁加条件变量)、问题现象 1 个(死锁),并且按类型配了颜色和形状,死锁是红色菱形,一眼就能找到。

每个实体还带了一两条属性,比如:

实体AI 给的属性
进程地址空间:独立;调度:OS 管理
线程共享:进程资源;轻量:切换快
自旋锁忙等待:不挂起
信号量计数器:P/V 操作
读写锁读多写少:优化读性能

这些属性写得很短,但用来复习刚好,面试时能张口就说的也就是这种一句话的区分点。

逐条核对:15 条关系里有 5 条要改

图画出来只是第一步,真正有用的是核对。我切到表格视图,把 15 条关系一条一条过了一遍。

大部分没问题,「条件变量 配合使用 互斥锁」「读写锁 区别于 互斥锁」「进程 包含 线程」都对。有问题的是这几条:

死锁的四条边,箭头全反了。 AI 生成的是「死锁 → 可能导致 → 互斥锁」「死锁 → 可能导致 → 信号量」「死锁 → 可能导致 → 条件变量」,意思变成了死锁导致锁,正好倒过来。正确的方向是锁用得不对才会导致死锁。我在表格里把起点和终点对调,关系改成「使用不当可能导致」。

「死锁 可能导致 上下文切换」直接删了。 死锁的线程是卡住不动的,这条关系说不通。

「协程 导致 上下文切换」改了措辞。 协程切换发生在用户态,不经过内核,开销比线程切换小得多,面试里这恰恰是协程最常被问的点。写成「导致」会让人以为它和线程一样重,我改成了「用户态切换,开销更小」。

还有一条我没改但心里打了个问号:「进程 包含 协程」。严格说协程是跑在线程上的,挂在进程下面不算错,但不够准。

这一步花的时间比生成本身还多,但我觉得这才是复习:AI 画错的地方,就是你得自己想清楚的地方。

用 AI 扩展把「死锁」补完整

第一版里死锁节点的属性只写了「条件:互斥、请求保持」,四个必要条件只写了两个。

选中死锁,右侧面板有个「AI 扩展关系」,扩展方向我填的是「四个必要条件、预防和避免的方法」。大约一分钟,它补了 7 个实体:

  • 必要条件:互斥条件、持有并等待、非抢占、循环等待
  • 预防:顺序法(资源按序申请,破坏循环等待)
  • 避免:银行家算法
  • 检测:死锁检测

这一轮的内容我核对下来没挑出错,四个条件齐了,预防、避免、检测三种思路也分开了。已有的同名实体不会重复添加,这点挺省心。

改完之后的图:

改完箭头并扩展死锁之后的知识图谱

18 个实体、21 条关系。面试前看这一张,比翻二十页笔记快。

我会怎么用这张图复习

我自己的用法是这样的:

  1. 先看图,挑一条边,自己口头解释为什么有这条关系。比如看到「自旋锁 区别于 互斥锁」,就说一遍「自旋锁忙等不挂起,适合临界区很短的场景;互斥锁会让线程睡眠,切换有开销」。
  2. 说不出来的那条边,就是要回去补的知识点。
  3. 隔两天再用聚焦模式只看「死锁」周围的节点,挨个说四个必要条件分别怎么破坏。

比起列表式笔记,图的好处是能看出哪个节点关系最多。这张图里互斥锁连了 7 条边,死锁连了 10 条,这两个基本就是这一章的面试重点。

真实的局限

说几个用下来的实话:

  • 关系方向不可信,一定要核。 这次 15 条里 4 条箭头反了,比例不低。如果直接拿去背,会背错。
  • 实体属性和扩展结果可能对不上。 扩展补齐了四个必要条件,但死锁节点自己的属性还是只写了两个,要手动改。
  • 自动布局在节点多了以后会有交叉。 18 个节点时,死锁那一圈的连线有几条压在别的节点上,截图前我点了一次「重新布局」,也没完全理开,需要手动拖一拖。
  • 它不替你判断「面试常考」。 AI 只是把你给的概念连起来,哪些是重点、哪些会被追问,还是要结合面经自己判断。

最后

如果你也在准备秋招,操作系统、计算机网络、数据库这几块都可以这样做:先把一章的核心概念点名给 AI,让它出一版图,再花半小时逐条核对、改掉错的。核对的过程本身就是最好的复习。

我用的是 福兮的知识图谱,除了 AI 生成,也能从文档、网页链接或图片里提取实体,生成后能在画布和表格里继续改。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐