This commit is contained in:
Costa Shulyupin 2020-06-24 08:01:58 +03:00
parent 4336a82cc6
commit 6c33063be7
1 changed files with 83 additions and 120 deletions

View File

@ -1,8 +1,8 @@
digraph matrix { digraph matrix {
graph [newrank=true, graph [newrank=true,
nodesep=0.1, nodesep=0.3,
ranksep=0.2,
overlap=true, overlap=true,
ranksep=0.1,
splines=false, splines=false,
]; ];
node [fixedsize=false, node [fixedsize=false,
@ -10,34 +10,33 @@ digraph matrix {
fontsize=24, fontsize=24,
height=1, height=1,
shape=box, shape=box,
style="filled,setlinewidth(3)", style="filled,setlinewidth(5)",
width=2.2 width=2.2
]; ];
edge [arrowhead=none, edge [arrowhead=none,
arrowsize=0.5, arrowsize=0.5,
style=invis,
labelfontname="Ubuntu", labelfontname="Ubuntu",
weight=10 weight=10,
style="filled,setlinewidth(5)"
]; ];
{ {
node [color="#e27dd6ff"]; node [color="#e27dd6ff"];
system_ [color="#e27dd6ff", system_ [color="#e27dd6ff",
fixedsize=true, fixedsize=true,
height=0, height=0,
shape="", shape=point,
style=invis, style=invis,
width=0]; shape=point
];
system [color="#e27dd6ff", system [color="#e27dd6ff",
fillcolor=white, fillcolor=white,
fixedsize=true, fixedsize=true,
height=0.6, height=0.6,
row=func, row=func,
tooltip=TODO,
width=2]; width=2];
system -> system_ [arrowhead="", system -> system_ [arrowhead="",
color="#e27dd6ff", color="#e27dd6ff",
row=func, row=func]
style="filled,setlinewidth(3)"];
SCI [color="#e27dd6ff", SCI [color="#e27dd6ff",
fillcolor="#d9e7ee", fillcolor="#d9e7ee",
fixedsize=true, fixedsize=true,
@ -47,8 +46,7 @@ digraph matrix {
sysfs [color="#e27dd6ff", sysfs [color="#e27dd6ff",
fillcolor="#b2d3e4", fillcolor="#b2d3e4",
label="proc, sysfs,\nfile systems"]; label="proc, sysfs,\nfile systems"];
SCI -> sysfs [color="#e27dd6ff", SCI -> sysfs [color="#e27dd6ff"];
style="filled,setlinewidth(3)"];
DM [color="#e27dd6ff", DM [color="#e27dd6ff",
fillcolor="#91b5c9", fillcolor="#91b5c9",
fixedsize=true, fixedsize=true,
@ -57,27 +55,23 @@ digraph matrix {
label="Device\nModel", label="Device\nModel",
shape=octagon, shape=octagon,
width=2]; width=2];
sysfs -> DM [color="#e27dd6ff", sysfs -> DM [color="#e27dd6ff"];
style="filled,setlinewidth(3)"];
log_sys [color="#e27dd6ff", log_sys [color="#e27dd6ff",
fillcolor="#6a9ab1", fillcolor="#6a9ab1",
fontsize=20, fontsize=20,
label="system run,\nmodules,\ngeneric\nHW access "]; label="system run,\nmodules,\ngeneric\nHW access "];
DM -> log_sys [color="#e27dd6ff", DM -> log_sys [color="#e27dd6ff"];
style="filled,setlinewidth(3)"];
bus_drv [color="#e27dd6ff", bus_drv [color="#e27dd6ff",
fillcolor="#71809b", fillcolor="#71809b",
label="bus drivers"]; label="bus drivers"];
log_sys -> bus_drv [color="#e27dd6ff", log_sys -> bus_drv [color="#e27dd6ff"];
style="filled,setlinewidth(3)"];
H2 [color="#e27dd6ff", H2 [color="#e27dd6ff",
fillcolor="#777777", fillcolor="#777777",
fontcolor=white, fontcolor=white,
fontsize=20, fontsize=20,
label="busess:\nPCI, USB ...", label="busess:\nPCI, USB ...",
row=chip]; row=chip];
bus_drv -> H2 [color="#e27dd6ff", bus_drv -> H2 [color="#e27dd6ff"];
style="filled,setlinewidth(3)"];
} }
{ {
node [color="#61c2c5"]; node [color="#61c2c5"];
@ -85,8 +79,9 @@ digraph matrix {
networking_ [color="#61c2c5", networking_ [color="#61c2c5",
fixedsize=true, fixedsize=true,
height=0, height=0,
shape="", shape=point,
style=invis, style=invis,
shape=point
width=0]; width=0];
networking [color="#61c2c5", networking [color="#61c2c5",
fillcolor=white, fillcolor=white,
@ -96,8 +91,7 @@ digraph matrix {
width=2]; width=2];
networking -> networking_ [arrowhead="", networking -> networking_ [arrowhead="",
color="#61c2c5", color="#61c2c5",
row=func, row=func];
style="filled,setlinewidth(3)"];
sock [color="#61c2c5", sock [color="#61c2c5",
fillcolor="#d9e7ee", fillcolor="#d9e7ee",
fixedsize=true, fixedsize=true,
@ -107,27 +101,23 @@ digraph matrix {
prot_fam [color="#61c2c5", prot_fam [color="#61c2c5",
fillcolor="#b2d3e4", fillcolor="#b2d3e4",
label="protocol\nfamilies"]; label="protocol\nfamilies"];
sock -> prot_fam [color="#61c2c5", sock -> prot_fam [color="#61c2c5"];
style="filled,setlinewidth(3)"];
log_prot [color="#61c2c5", log_prot [color="#61c2c5",
fillcolor="#6a9ab1", fillcolor="#6a9ab1",
label="protocols:\nTCP, UDP, IP"]; label="protocols:\nTCP, UDP, IP"];
prot_fam -> log_prot [color="#61c2c5", prot_fam -> log_prot [color="#61c2c5"];
style="filled,setlinewidth(3)"];
netif [color="#61c2c5", netif [color="#61c2c5",
fillcolor="#71809b", fillcolor="#71809b",
fontsize=20, fontsize=20,
label="network\ninterfaces\nand drivers"]; label="network\ninterfaces\nand drivers"];
log_prot -> netif [color="#61c2c5", log_prot -> netif [color="#61c2c5"];
style="filled,setlinewidth(3)"];
net_hw [color="#61c2c5", net_hw [color="#61c2c5",
fillcolor="#777777", fillcolor="#777777",
fontcolor=white, fontcolor=white,
fontsize=20, fontsize=20,
label="network:\nEthernet, WiFi ...", label="network:\nEthernet, WiFi ...",
row=chip]; row=chip];
netif -> net_hw [color="#61c2c5", netif -> net_hw [color="#61c2c5"];
style="filled,setlinewidth(3)"];
NFS [color="#8383cc", NFS [color="#8383cc",
fillcolor="#91b5c9", fillcolor="#91b5c9",
fixedsize=true, fixedsize=true,
@ -136,7 +126,6 @@ digraph matrix {
shape=octagon, shape=octagon,
width=1.2]; width=1.2];
NFS -> log_prot [color="#61c2c5", NFS -> log_prot [color="#61c2c5",
style="filled,setlinewidth(3)",
weight=0]; weight=0];
} }
{ {
@ -144,9 +133,9 @@ digraph matrix {
edge [color="#8383cc"]; edge [color="#8383cc"];
NFS; NFS;
storage_ [color="#8383cc", storage_ [color="#8383cc",
shape=point
fixedsize=true, fixedsize=true,
height=0, height=0,
shape="",
style=invis, style=invis,
width=0]; width=0];
storage [color="#8383cc", storage [color="#8383cc",
@ -157,8 +146,7 @@ digraph matrix {
width=2]; width=2];
storage -> storage_ [arrowhead="", storage -> storage_ [arrowhead="",
color="#8383cc", color="#8383cc",
row=func, row=func];
style="filled,setlinewidth(3)"];
FS [color="#8383cc", FS [color="#8383cc",
fillcolor="#d9e7ee", fillcolor="#d9e7ee",
fixedsize=true, fixedsize=true,
@ -168,17 +156,14 @@ digraph matrix {
VFS [color="#8383cc", VFS [color="#8383cc",
fillcolor="#b2d3e4", fillcolor="#b2d3e4",
label="Virtual\nFile System"]; label="Virtual\nFile System"];
FS -> VFS [color="#8383cc", FS -> VFS [color="#8383cc"];
style="filled,setlinewidth(3)"];
VFS -> NFS [color="#8383cc", VFS -> NFS [color="#8383cc",
style="filled,setlinewidth(3)",
weight=0]; weight=0];
logFS [color="#8383cc", logFS [color="#8383cc",
fillcolor="#6a9ab1", fillcolor="#6a9ab1",
fontsize=20, fontsize=20,
label="logical\nfilesystems:\next3, xfs ..."]; label="logical\nfilesystems:\next3, xfs ..."];
VFS -> logFS [color="#8383cc", VFS -> logFS [color="#8383cc"];
style="filled,setlinewidth(3)"];
PC [color="#51bf5b", PC [color="#51bf5b",
fillcolor="#91b5c9", fillcolor="#91b5c9",
fixedsize=true, fixedsize=true,
@ -188,7 +173,6 @@ digraph matrix {
shape=octagon, shape=octagon,
width=1.2]; width=1.2];
VFS -> PC [color="#8383cc", VFS -> PC [color="#8383cc",
style="filled,setlinewidth(3)",
weight=0]; weight=0];
mmap [color="#51bf5b", mmap [color="#51bf5b",
fillcolor="#91b5c9", fillcolor="#91b5c9",
@ -199,19 +183,16 @@ digraph matrix {
shape=octagon, shape=octagon,
width=2]; width=2];
VFS -> mmap [color="#8383cc", VFS -> mmap [color="#8383cc",
style="filled,setlinewidth(3)",
weight=0]; weight=0];
block [color="#8383cc", block [color="#8383cc",
fillcolor="#71809b", fillcolor="#71809b",
fontsize=20, fontsize=20,
label="Block\ndevices\nand drivers"]; label="Block\ndevices\nand drivers"];
logFS -> block [color="#8383cc", logFS -> block [color="#8383cc"];
style="filled,setlinewidth(3)"];
PA [color="#51bf5b", PA [color="#51bf5b",
fillcolor="#71809b", fillcolor="#71809b",
label="Page\nAllocator"]; label="Page\nAllocator"];
PC -> PA [color="#51bf5b", PC -> PA [color="#51bf5b",
style="filled,setlinewidth(3)",
weight=0]; weight=0];
H4 [color="#8383cc", H4 [color="#8383cc",
fillcolor="#777777", fillcolor="#777777",
@ -219,8 +200,7 @@ digraph matrix {
fontsize=20, fontsize=20,
label="storage devices:\nSCSI, NVMe ...", label="storage devices:\nSCSI, NVMe ...",
row=chip]; row=chip];
block -> H4 [color="#8383cc", block -> H4 [color="#8383cc"];
style="filled,setlinewidth(3)"];
SW [color="#8383cc", SW [color="#8383cc",
fillcolor="#91b5c9", fillcolor="#91b5c9",
fixedsize=true, fixedsize=true,
@ -229,18 +209,15 @@ digraph matrix {
shape=octagon, shape=octagon,
width=1.2]; width=1.2];
SW -> block [color="#8383cc", SW -> block [color="#8383cc",
style="filled,setlinewidth(3)",
weight=0]; weight=0];
} }
{ {
node [color="#c46747", node [color="#c46747"];
style="filled,setlinewidth(3)"
];
edge [color="#c46747"]; edge [color="#c46747"];
processing_ [color="#c46747", processing_ [color="#c46747",
fixedsize=true, fixedsize=true,
height=0, height=0,
shape="", shape=point
style=invis, style=invis,
width=0]; width=0];
processing [color="#c46747", processing [color="#c46747",
@ -251,8 +228,7 @@ digraph matrix {
width=2]; width=2];
processing -> processing_ [arrowhead="", processing -> processing_ [arrowhead="",
color="#c46747", color="#c46747",
row=func, row=func];
style="filled,setlinewidth(3)"];
proc [color="#c46747", proc [color="#c46747",
fillcolor="#d9e7ee", fillcolor="#d9e7ee",
fixedsize=true, fixedsize=true,
@ -261,38 +237,36 @@ digraph matrix {
shape=ellipse]; shape=ellipse];
Tasks [color="#c46747", Tasks [color="#c46747",
fillcolor="#b2d3e4"]; fillcolor="#b2d3e4"];
proc -> Tasks [color="#c46747", proc -> Tasks [color="#c46747"];
style="filled,setlinewidth(3)"];
sync [color="#c46747", sync [color="#c46747",
fillcolor="#91b5c9", fillcolor="#91b5c9",
fixedsize=true, fixedsize=true,
fontsize=20, fontsize=20,
fontname="Ubuntu Condensed"
label=synchronization, label=synchronization,
height=0.7,
//width=2,
shape=octagon]; shape=octagon];
Tasks -> sync [color="#c46747", Tasks -> sync [color="#c46747"];
style="filled,setlinewidth(3)"];
sched [color="#c46747", sched [color="#c46747",
fillcolor="#6a9ab1", fillcolor="#6a9ab1",
label=Scheduler]; label=Scheduler];
sync -> sched [color="#c46747", sync -> sched [color="#c46747"];
style="filled,setlinewidth(3)"];
IRQ [color="#c46747", IRQ [color="#c46747",
fillcolor="#71809b", fillcolor="#71809b",
fontsize=20, fontsize=20,
label="interrupts\ncore,\nCPU arch"]; label="interrupts\ncore,\nCPU arch"];
sched -> IRQ [color="#c46747", sched -> IRQ [color="#c46747"];
style="filled,setlinewidth(3)"];
CPU [color="#c46747", CPU [color="#c46747",
fillcolor="#777777", fillcolor="#777777",
fontcolor=white, fontcolor=white,
fontsize=20, fontsize=20,
row=chip]; row=chip];
IRQ -> CPU [color="#c46747", IRQ -> CPU [color="#c46747"];
style="filled,setlinewidth(3)"];
} }
{ {
node [color="#cfbf57ff", node [color="#cfbf57ff",
style="filled,setlinewidth(3)"
]; ];
edge [color="#cfbf57ff", edge [color="#cfbf57ff",
weight=10 weight=10
@ -300,21 +274,20 @@ digraph matrix {
HI_ [color="#cfbf57ff", HI_ [color="#cfbf57ff",
fixedsize=true, fixedsize=true,
height=0, height=0,
shape="", shape=point
style=invis, style=invis,
width=0]; width=0];
HI [color="#cfbf57ff", HI [color="#cfbf57ff",
fillcolor=white, fillcolor=white,
fixedsize=true, fixedsize=true,
fontsize=20, fontsize=12,
height=0.6, height=0.6,
label="human\ninterface", label="human\ninterface",
row=func, row=func,
width=2]; width=2];
HI -> HI_ [arrowhead="", HI -> HI_ [arrowhead="",
color="#cfbf57ff", color="#cfbf57ff",
row=func, row=func];
style="filled,setlinewidth(3)"];
char [color="#cfbf57ff", char [color="#cfbf57ff",
fillcolor="#d9e7ee", fillcolor="#d9e7ee",
fixedsize=true, fixedsize=true,
@ -324,27 +297,25 @@ digraph matrix {
input [color="#cfbf57ff", input [color="#cfbf57ff",
fillcolor="#b2d3e4", fillcolor="#b2d3e4",
label="input\nsubsystem"]; label="input\nsubsystem"];
char -> input [color="#cfbf57ff", char -> input [color="#cfbf57ff"];
style="filled,setlinewidth(3)"];
F7 [color="#cfbf57ff", F7 [color="#cfbf57ff",
fillcolor="#6a9ab1", fillcolor="#6a9ab1",
label="HI class\ndrivers"]; label="HI class\ndrivers"];
input -> F7 [color="#cfbf57ff", input -> F7 [color="#cfbf57ff"];
style="filled,setlinewidth(3)"]; HID [color="#cfbf57ff",
G7 [color="#cfbf57ff",
fillcolor="#71809b", fillcolor="#71809b",
fontsize=20, fontsize=20,
URL="https://www.kernel.org/doc/html/latest/hid/",
label="HI\nperipherals\ndrivers"]; label="HI\nperipherals\ndrivers"];
F7 -> G7 [color="#cfbf57ff", F7 -> HID [color="#cfbf57ff"
style="filled,setlinewidth(3)"]; ];
H7 [color="#cfbf57ff", H7 [color="#cfbf57ff",
fillcolor="#777777", fillcolor="#777777",
fontcolor=white, fontcolor=white,
fontsize=20, fontsize=20,
label="display, keyboard,\nmouse, audio", label="display, keyboard,\nmouse, audio",
row=chip]; row=chip];
G7 -> H7 [color="#cfbf57ff", HID -> H7 [color="#cfbf57ff" ];
style="filled,setlinewidth(3)"];
} }
{ {
graph [rank=same]; graph [rank=same];
@ -369,11 +340,13 @@ digraph matrix {
memory -> processing [weight=1]; memory -> processing [weight=1];
functions_ [fixedsize=true, functions_ [fixedsize=true,
height=0, height=0,
shape="", shape=point
style=invis, style=invis,
width=0]; width=0];
functions_ -> system [weight=1]; functions_ -> system [weight=1];
functions [color=gray, functions [color=gray,
tooltip="Columns represent main functionalities of the kernel",
URL="http://www.makelinux.net/ldd3/chp-1-sect-2.shtml",
fillcolor=gray, fillcolor=gray,
fixedsize=true, fixedsize=true,
height=0.6, height=0.6,
@ -394,9 +367,9 @@ digraph matrix {
char; char;
usr_ [fixedsize=true, usr_ [fixedsize=true,
height=0, height=0,
shape="", shape=point
style=invis, style=invis,
width=0]; width=0.5];
usr [fillcolor="#d9e7eeff", usr [fillcolor="#d9e7eeff",
fixedsize=true, fixedsize=true,
label="user space\ninterfaces", label="user space\ninterfaces",
@ -432,7 +405,7 @@ digraph matrix {
MA; MA;
memory_ [fixedsize=true, memory_ [fixedsize=true,
height=0, height=0,
shape="", shape=point,
style=invis, style=invis,
width=0]; width=0];
memory_ -> MA; memory_ -> MA;
@ -446,7 +419,7 @@ digraph matrix {
input; input;
D0 [fixedsize=true, D0 [fixedsize=true,
height=0, height=0,
shape="", shape=point,
style=invis, style=invis,
width=0]; width=0];
virt [fillcolor="#b2d3e4", virt [fillcolor="#b2d3e4",
@ -464,7 +437,7 @@ digraph matrix {
sync; sync;
E0 [fixedsize=true, E0 [fixedsize=true,
height=0, height=0,
shape="", shape=point,
style=invis, style=invis,
width=0]; width=0];
bridges [fillcolor="#91b5c9", bridges [fillcolor="#91b5c9",
@ -480,7 +453,7 @@ digraph matrix {
F7; F7;
F0 [fixedsize=true, F0 [fixedsize=true,
height=0, height=0,
shape="", shape=point,
style=invis, style=invis,
width=0]; width=0];
logical [fillcolor="#6a9ab1", logical [fillcolor="#6a9ab1",
@ -496,10 +469,10 @@ digraph matrix {
block; block;
PA; PA;
IRQ; IRQ;
G7; HID;
G0 [fixedsize=true, G0 [fixedsize=true,
height=0, height=0,
shape="", shape=point,
style=invis, style=invis,
width=0]; width=0];
HWI [fillcolor="#71809b", HWI [fillcolor="#71809b",
@ -515,7 +488,7 @@ digraph matrix {
H7; H7;
H0 [fixedsize=true, H0 [fixedsize=true,
height=0, height=0,
shape="", shape=point,
style=invis, style=invis,
width=0]; width=0];
HW [fillcolor="#777777", HW [fillcolor="#777777",
@ -539,81 +512,71 @@ digraph matrix {
mmap; mmap;
SW; SW;
mmap -> SW [color="#51bf5b", mmap -> SW [color="#51bf5b",
style="filled,setlinewidth(3)",
weight=0]; weight=0];
log_mem; log_mem;
mmap -> log_mem [color="#51bf5b", mmap -> log_mem [color="#51bf5b"];
style="filled,setlinewidth(3)"];
PA; PA;
H5; H5;
PA -> H5 [color="#51bf5b", PA -> H5 [color="#51bf5b"];
style="filled,setlinewidth(3)"];
memory; memory;
memory_; memory_;
memory -> memory_ [arrowhead="", memory -> memory_ [arrowhead="",
color="#51bf5b", color="#51bf5b",
row=func, row=func];
style="filled,setlinewidth(3)"];
MA; MA;
VM; VM;
MA -> VM [color="#51bf5b", MA -> VM [color="#51bf5b"];
style="filled,setlinewidth(3)"]; VM -> mmap [color="#51bf5b"];
VM -> mmap [color="#51bf5b", log_mem -> PA [color="#51bf5b"];
style="filled,setlinewidth(3)"];
log_mem -> PA [color="#51bf5b",
style="filled,setlinewidth(3)"];
} }
bottom [label="© 2007-2019 Constantine Shulyupin http://www.MakeLinux.net/kernel/diagram", bottom [label="© 2007-2020 Constantine Shulyupin http://www.MakeLinux.net/kernel/diagram",
shape=plaintext, shape=plaintext,
style=""]; style=""];
H4 -> bottom [weight=""]; H4 -> bottom [style=invis];
layers [fillcolor=lightgray, layers [fillcolor=lightgray,
tooltip="Functionalities are divided to common layers. It is approximate division.",
height=0.1, height=0.1,
style="filled,setlinewidth(0)", style="filled,setlinewidth(0)",
width=0.5]; width=0.5];
functions -> layers; functions -> layers [ style=invis ];
usr -> usr_ [arrowhead="", usr -> usr_ [arrowhead="",
color="#d9e7eeff", color="#d9e7eeff",
minlen=2, minlen=2];
style="filled,setlinewidth(3)"]; usr -> virt [color="#d9e7eeff"];
usr -> virt [color="#d9e7eeff",
style="filled,setlinewidth(3)"];
virt -> D0 [arrowhead="", virt -> D0 [arrowhead="",
color="#b2d3e4", color="#b2d3e4",
minlen=2, minlen=2];
style="filled,setlinewidth(3)"]; virt -> bridges [color="#b2d3e4"];
virt -> bridges [color="#b2d3e4",
style="filled,setlinewidth(3)"];
bridges -> E0 [arrowhead="", bridges -> E0 [arrowhead="",
color="#91b5c9", color="#91b5c9",
minlen=2, minlen=2,
style="filled,setlinewidth(3)", style="filled,setlinewidth(6)",
weight=""]; weight=""];
bridges -> logical [color="#91b5c9", bridges -> logical [color="#91b5c9",
style="filled,setlinewidth(3)"]; style="filled,setlinewidth(6)"];
logical -> F0 [arrowhead="", logical -> F0 [arrowhead="",
color="#6a9ab1", color="#6a9ab1",
minlen=2, minlen=2,
row=logical, row=logical,
style="filled,setlinewidth(3)", style="filled,setlinewidth(6)",
weight=""]; weight=""];
logical -> HWI [color="#6a9ab1", logical -> HWI [color="#6a9ab1",
row=logical, row=logical,
style="filled,setlinewidth(3)"]; style="filled,setlinewidth(6)"];
HWI -> G0 [arrowhead="", HWI -> G0 [arrowhead="",
color="#71809b", color="#71809b",
minlen=2, minlen=2,
row=HWI, row=HWI,
style="filled,setlinewidth(3)", style="filled,setlinewidth(6)",
weight=""]; weight=""];
HWI -> HW [color="#71809b", HWI -> HW [color="#71809b",
row=HWI, row=HWI,
style="filled,setlinewidth(3)"]; style="filled,setlinewidth(6)"];
HW -> H0 [arrowhead="", HW -> H0 [arrowhead="",
color="#777777", color="#777777",
minlen=2, minlen=2,
row=chip, row=chip,
style="filled,setlinewidth(3)", style="filled,setlinewidth(6)",
weight=""]; weight=""];
layers -> usr [arrowhead="", layers -> usr [arrowhead="",
color=gray, color=gray,
@ -622,5 +585,5 @@ digraph matrix {
label="Linux kernel diagram", label="Linux kernel diagram",
shape=plain, shape=plain,
style=""]; style=""];
LKD -> storage; LKD -> storage [style=invis];
} }