我应该使用Graphviz创建一个图,它看起来应该类似于

目前使用的是:
digraph Graph {
// Nodes
User [style=filled, color="#ff000055"]
Kernel [style=filled, color="#ff000055"]
Runnable [style=filled,color=dodgerblue]
Swapping [style=filled,color=dodgerblue]
Disk [style=filled, color=dodgerblue]
Sleep [style=filled, color=dodgerblue]
Lock [style=filled, color=dodgerblue]
Idle [style=filled, color=dodgerblue]
helpNode [style="invis"]
// Edges
User -> Kernel [dir=both,label = "mode switch"]
Kernel -> Runnable [label = "preemption or time quantum expired"]
Runnable -> Kernel [label = "schedule"]
Runnable -> Swapping [label = "swap out"]
Swapping -> Runnable[label = "swap in"]
Kernel -> Disk
Kernel -> Sleep
Kernel -> Lock
Kernel -> Idle
Disk -> Sleep -> Lock -> Idle [style="invis"]
// ranking
{rank=same;Kernel;Runnable;Swapping}
}若要创建此功能,请执行以下操作:

。
有没有办法重新安排节点或线路?已经尝试了一些有子图和不同等级类型的东西。
发布于 2021-12-30 00:41:48
有一种方法可以非常接近您最初想要的内容,尽管代码看起来很难看:
digraph G {
// Defaults
node [fontname="Arial", width=1.2, height=0.6, style="filled", fillcolor="#C2CEFF"]
edge [fontname="Arial"]
// Nodes
User [fillcolor="#FFD2CD"]
Kernel [fillcolor="#FFD2CD"]
Runnable
Swapping
Disk
Sleep
Lock
Idle
// Comment 1
User -> Kernel [label="running\n(on-CPU)", color="#FFFFFF00"]
// Edges
User -> Kernel [dir=both, label=" mode\n switch", weight=10]
Runnable -> Swapping [label="swap out"]
Swapping -> Runnable [label="\nswap in"]
Kernel -> Runnable [label="preemption or\ntime quantum expired", minlen=6]
Runnable -> Kernel [label="\nschedule"]
// Defaults for grid nodes
node [shape="point", width=0.005, height=0.005, color="#000000"]
// Grid nodes
cn10 -> Disk [label="disk I/O"]
cn11 -> Sleep [label="network I/O\nsleep"]
cn12 -> Lock [label="block"]
cn13 -> Idle [label="wait\nfor work"]
cn10 -> cn11 -> cn12 -> cn13 [weight=10, dir=none]
edge [dir=none]
Disk -> cn20 [label="wakeup"]
Sleep -> cn21 [label="wakeup"]
Lock -> cn22 [label="wakeup"]
Idle -> cn23 [label="work\narrives"]
cn23 -> cn22 -> cn21 -> cn20 [weight=10, dir=none]
// Connect grid nodes to the parent nodes
Kernel -> cn10 [weight=10, dir=none]
cn20 -> Runnable [weight=10, dir=forward]
// Align center nodes
Disk -> Sleep -> Lock -> Idle [style="invis"]
// Comment 2
Kernel -> cn13 [label="off-CPU", color="#FFFFFF00"]
// Ranking
rank = same { Kernel Runnable Swapping }
rank = same { cn10 Disk cn20 }
rank = same { cn11 Sleep cn21 }
rank = same { cn12 Lock cn22 }
rank = same { cn13 Idle cn23 }
}编辑视图

https://stackoverflow.com/questions/70365515
复制相似问题