先看一下图片对比效果
原图
译文
这个示意图没有什么特别的, 表现的就是tty的软硬件的关系
因为原文中有多个类似的图, 想找一个与原文尽量接近的方式进行表达. 一开始想用PlantUML来实现, 发现受UML的局限,画一个双向箭头都很麻烦. PlantUML底层用的dot语言, 所以直接用Graphviz的dot语言更方便.
简单地学习了一下, 效果不错, 特分享给大家.
我用的是mac, 安装graphviz
$ brew install graphviz
安装一个Atom或Sublime Text的插件, 我最后用的是Atom里的Graphviz preview+, 用起来很方便, 可以做到实时重绘, 不用了解命令行参数了.截图如下:
最后放上上面插图的源码,供有兴趣的同学参考,回头我会把全部译文和源码放到github上.
digraph TTY{
edge [dir="both"]
rankdir="LR";
subgraph cluster {
//[ID="dd"];
label="硬件"
color="#e3e3d1"
style=filled
fillcolor="#e3e3d1"
终端[shape=box3d];
物理线路[shape=box3d];
UART[shape=box3d];
终端 -> 物理线路 ->UART: 万能异部收发器;
}
subgraph cluster软件 {
style=filled
color="#e3e3d1"
label="软件"
fillcolor="#e3e3d1"
UART->"UART\n驱动" ;
subgraph cluster内核 {
color="#000000"
style="dashed"
label="内核"
"行\n规程" [comment="线路规程"];
"UART\n驱动" -> "行\n规程";
"行\n规程" -> "TTY\n驱动";
}
用户进程1 [label = "用户\n进程"] ;
用户进程2 [label = "用户\n进程"] ;
用户进程3 [label = "用户\n进程"] ;
"TTY\n驱动" -> 用户进程1 ;
"TTY\n驱动" -> 用户进程2;
"TTY\n驱动" -> 用户进程3;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。