序言:
我将下面这些优秀的流程图和逻辑图分为四大类,并简单分析了其中的画图思想和优点。最后列举了一些反例。大家若是需要画其中某一类的图,可以套用着画。所有的图片来自极客时间的《趣谈Linux操作系统》和小林coding的《图解系统》、《图解网络》。
一、单者执行任务的时序图
1、学习linux操作系统爬坡路线图
- 斜向上的箭头表示逐步进阶。
- 两种颜色的方框区分填写每个阶段的目标和需要的辅助书。
- 起点和终点的两个小人表示进阶前后的变化。
2. 父进程创建子进程图
- 简单的文字在流程图旁做解释。
- 方框把两种流程图框柱,并用虚线框框住复制出来的进程。
3. CPU访问内存数据
1、 藕粉色表示此方框是目的,蓝色方框表示步骤、黄色的菱形表示判断。
2、 多个不同判断返回同一个步骤时,用长一点的横线接收各个返回值。
4. 系统启动加载图
- 箭头表示时间线。
- 虚扇形扩展出某一部分具体包含的内容。
5. 64位系统调用执行图
- 不同颜色的长方形框表示不同的函数,并从上到下依次排列。
- 简短的文字解释每个函数做了什么。
- 白色小方框框住每个函数中的参数名称。
- 若干个白色小方框组成一个数组。
- 虚线箭头连接不同函数中对应的参数。
6. Mutex使用流程
- 用简短的文字解释每一步。
- 若需要函数名,在旁边标明。
7. 进程执行任务图
- 若干个小方框和箭头表示执行任务流程。
- 在流程上面用大方框框住执行任务的进程。
- 虚线连接对应任务和线程。
- 横线将用户态和内核态隔开。
8. 规划虚拟空间图
- 若干个小格子框住项目组使用的内存空间。注意中间不用箭头,显得更紧凑。
9. fork系统调用 - 复制task_struct结构、唤醒新创建的子进程图。
- 在主线上用横线拉出来创造支线,表示层层递进。
10、虚拟内存的管理图
1、 No后面还可以加“CPU发送缺页中断请求”文字,不一定非要遵守规则,简洁易懂为主。
11、网络包发送的流程
1、从上到下、再从下到上,形象的描述网络包传输途径的层。
12、发送报文时,data指针的移动过程
1、6副图描述了每个阶段,数据的状态。
二、两者配合执行任务的时序图
1. CPU和内存配合图
- 白色的无倒角的方框表示指令和数据,并用虚线区分不同数据部分。
- 简短的文字解释方框含义。
1、若干箭头形成一个圈,表示循环。
2、上图有具体的指令和数据描述,比下图更直观。
2. 进程从代码代码到二进制过程图
图片解释:首先通过图右边的文件编译过程,生成 so 文件和可执行文件,放在硬盘上。下图左边的用户态的进程 A 执行 fork,创建进程 B,在进程 B 的处理逻辑中,执行 exec 系列系统调用。这个系统调用会通过 load_elf_binary 方法,将刚才生成的可执行文件,加载到进程 B 的内存中执行。
- 将过程分为两个部分:生成可执行文件(右图)、加载可执行文件到内存(左图)。
- 数据库框框住最终生成的二进制文件,二进制文件中的不同部分用横线隔开。
- 虚线扇形进一步扩展出某个具体部分。
- 花括号和简短文字解释文件内容。
3. 两个线程获取互斥锁图
1、线程下面的长方形条状框表示时间轴,内核下面的若干长方形框表示每次获取的互斥锁。
2、黑色文字描述获取锁,绿色文字描述成功获取锁,红色文字描述获取失败。蓝色文字描述执行任务,紫色文字描述线程阻塞中。
类似:
没有DMA技术之前的I/O过程图
使用DMA控制器的I/O过程图
重定向图:
重定向的⼯作交由代理服务器图:
客户端和服务端的三次握手图
4、缺页中断的处理流程
1、序号和简短文字描述每个步骤。
2、简单的文字和图形表示每个步骤的发起者。
3、箭头表示流程走向。
类似:DMA 的⼯作⽅式图
5、中断处理程序图
1、 箭头表示时间轴
2、在箭头的某些节点下拉出箭头,描述此时刻执行的流程。
6、TCP 流量控制图
1、每一阶段都用具体的图展示数据的状态。
类似:
SSL/TLS的握手阶段
三、不同流程对比图
1. 进程权限图
- 在箭头上画√和×,表示此流程不能执行。
- 不同流程上下拼在一起。
- 差一个解释。
四、系统组成图
1、操作系统结构和公司体系结构类比图
- 两种颜色和上下两个部分区分操作系统内核体系结构和公司体系结构。
- 立体框代表体系的各个组成部分,平面框代表解释的意思。
2. 操作系统内核体系结构图
- 不同颜色方框表示各个子系统。
- 连线描述各个子系统之间的调用关系。
- 大方框里的白色小方框表示子系统的关键组成部分。
3. 计算机硬件通信图
1、若有多个设备都要公用一条通信线,则将这条线画长一点。
4、分段机制的原理
1、由小到大地一层一层的用箭头和扇形虚线展示内容
类似:
定位到页中具体位置访问数据
四级目录页
反面,觉得不易懂的图
尽量用文字,不要用代码