Viz/Gallery/directed/Linux kernel diagram.gv.txt: Difference between revisions
From VistApedia
Jump to navigationJump to search
DavidWhitten (talk | contribs) Created page with "http://graphviz.org/Gallery/directed/Linux_kernel_diagram.gv.txt digraph matrix { graph [newrank=true, nodesep=0.1, overlap=true, ranksep=0.1, splines=false, node..." |
DavidWhitten (talk | contribs) No edit summary |
||
| Line 2: | Line 2: | ||
digraph matrix { | digraph matrix { | ||
graph [newrank=true, | |||
nodesep=0.1, | |||
overlap=true, | |||
ranksep=0.1, | |||
splines=false, | |||
nodesep=0.3, | |||
ranksep=0.2, | |||
//bgcolor="transparent", | |||
]; | |||
node [fixedsize=false, | |||
fontname="Ubuntu" | |||
fontsize=24, | |||
height=1, | |||
shape=box, | |||
style="filled,setlinewidth(6)", | |||
width=2.2 | |||
]; | |||
edge [arrowhead=none, | |||
arrowsize=0.5, | |||
style=invis, | |||
labelfontname="Ubuntu", | |||
weight=10 | |||
]; | |||
{ | |||
node [color="#e27dd6ff"]; | |||
system_ [color="#e27dd6ff", | |||
fixedsize=true, | |||
height=0, | |||
shape="", | |||
style=invis, | |||
width=0]; | |||
system [color="#e27dd6ff", | |||
fillcolor=white, | |||
fixedsize=true, | |||
height=0.6, | |||
row=func, | |||
width=2]; | |||
system -> system_ [arrowhead="", | |||
color="#e27dd6ff", | |||
row=func, | |||
style="filled,setlinewidth(6)"]; | |||
SCI [color="#e27dd6ff", | |||
fillcolor="#d9e7ee", | |||
fixedsize=true, | |||
label="System calls", | |||
row=usr, | |||
shape=ellipse]; | |||
sysfs [color="#e27dd6ff", | |||
fillcolor="#b2d3e4", | |||
label="proc, sysfs,\nfile systems"]; | |||
SCI -> sysfs [color="#e27dd6ff", | |||
style="filled,setlinewidth(6)"]; | |||
DM [color="#e27dd6ff", | |||
fillcolor="#91b5c9", | |||
fixedsize=true, | |||
fontsize=20, | |||
height=0.8, | |||
label="Device\nModel", | |||
shape=octagon, | |||
width=2]; | |||
sysfs -> DM [color="#e27dd6ff", | |||
style="filled,setlinewidth(6)"]; | |||
log_sys [color="#e27dd6ff", | |||
fillcolor="#6a9ab1", | |||
fontsize=20, | |||
label="system run,\nmodules,\ngeneric\nHW access "]; | |||
DM -> log_sys [color="#e27dd6ff", | |||
style="filled,setlinewidth(6)"]; | |||
bus_drv [color="#e27dd6ff", | |||
fillcolor="#71809b", | |||
label="bus drivers"]; | |||
log_sys -> bus_drv [color="#e27dd6ff", | |||
style="filled,setlinewidth(6)"]; | |||
H2 [color="#e27dd6ff", | |||
fillcolor="#777777", | |||
fontcolor=white, | |||
fontsize=20, | |||
label="busess:\nPCI, USB ...", | |||
row=chip]; | |||
bus_drv -> H2 [color="#e27dd6ff", | |||
style="filled,setlinewidth(6)"]; | |||
} | |||
{ | |||
node [color="#61c2c5"]; | |||
edge [color="#61c2c5"]; | |||
networking_ [color="#61c2c5", | |||
fixedsize=true, | |||
height=0, | |||
shape="", | |||
style=invis, | |||
width=0]; | |||
networking [color="#61c2c5", | |||
fillcolor=white, | |||
fixedsize=true, | |||
height=0.6, | |||
row=func, | |||
width=2]; | |||
networking -> networking_ [arrowhead="", | |||
color="#61c2c5", | |||
row=func, | |||
style="filled,setlinewidth(6)"]; | |||
sock [color="#61c2c5", | |||
fillcolor="#d9e7ee", | |||
fixedsize=true, | |||
label=Sockets, | |||
row=usr, | |||
shape=ellipse]; | |||
prot_fam [color="#61c2c5", | |||
fillcolor="#b2d3e4", | |||
label="protocol\nfamilies"]; | |||
sock -> prot_fam [color="#61c2c5", | |||
style="filled,setlinewidth(6)"]; | |||
log_prot [color="#61c2c5", | |||
fillcolor="#6a9ab1", | |||
label="protocols:\nTCP, UDP, IP"]; | |||
prot_fam -> log_prot [color="#61c2c5", | |||
style="filled,setlinewidth(6)"]; | |||
netif [color="#61c2c5", | |||
fillcolor="#71809b", | |||
fontsize=20, | |||
label="network\ninterfaces\nand drivers"]; | |||
log_prot -> netif [color="#61c2c5", | |||
style="filled,setlinewidth(6)"]; | |||
net_hw [color="#61c2c5", | |||
fillcolor="#777777", | |||
fontcolor=white, | |||
fontsize=20, | |||
label="network:\nEthernet, WiFi ...", | |||
row=chip]; | |||
netif -> net_hw [color="#61c2c5", | |||
style="filled,setlinewidth(6)"]; | |||
NFS [color="#8383cc", | |||
fillcolor="#91b5c9", | |||
fixedsize=true, | |||
height=0.8, | |||
label=NFS, | |||
shape=octagon, | |||
width=1.2]; | |||
NFS -> log_prot [color="#61c2c5", | |||
style="filled,setlinewidth(6)", | |||
weight=0]; | |||
} | |||
{ | |||
node [color="#8383cc"]; | |||
edge [color="#8383cc"]; | |||
NFS; | |||
storage_ [color="#8383cc", | |||
fixedsize=true, | |||
height=0, | |||
shape="", | |||
style=invis, | |||
width=0]; | |||
storage [color="#8383cc", | |||
fillcolor=white, | |||
fixedsize=true, | |||
height=0.6, | |||
row=func, | |||
width=2]; | |||
storage -> storage_ [arrowhead="", | |||
color="#8383cc", | |||
row=func, | |||
style="filled,setlinewidth(6)"]; | |||
FS [color="#8383cc", | |||
fillcolor="#d9e7ee", | |||
fixedsize=true, | |||
label="files and\ndirectories", | |||
row=usr, | |||
shape=ellipse]; | |||
VFS [color="#8383cc", | |||
fillcolor="#b2d3e4", | |||
label="Virtual\nFile System"]; | |||
FS -> VFS [color="#8383cc", | |||
style="filled,setlinewidth(6)"]; | |||
VFS -> NFS [color="#8383cc", | |||
style="filled,setlinewidth(6)", | |||
weight=0]; | |||
logFS [color="#8383cc", | |||
fillcolor="#6a9ab1", | |||
fontsize=20, | |||
label="logical\nfilesystems:\next3, xfs ..."]; | |||
VFS -> logFS [color="#8383cc", | |||
style="filled,setlinewidth(6)"]; | |||
PC [color="#51bf5b", | |||
fillcolor="#91b5c9", | |||
fixedsize=true, | |||
fontsize=20, | |||
height=0.8, | |||
label="page\ncache", | |||
shape=octagon, | |||
width=1.2]; | |||
VFS -> PC [color="#8383cc", | |||
style="filled,setlinewidth(6)", | |||
weight=0]; | |||
mmap [color="#51bf5b", | |||
fillcolor="#91b5c9", | |||
fixedsize=true, | |||
fontsize=20, | |||
height=0.8, | |||
label="memory\nmapping", | |||
shape=octagon, | |||
width=2]; | |||
VFS -> mmap [color="#8383cc", | |||
style="filled,setlinewidth(6)", | |||
weight=0]; | |||
block [color="#8383cc", | |||
fillcolor="#71809b", | |||
fontsize=20, | |||
label="Block\ndevices\nand drivers"]; | |||
logFS -> block [color="#8383cc", | |||
style="filled,setlinewidth(6)"]; | |||
PA [color="#51bf5b", | |||
fillcolor="#71809b", | |||
label="Page\nAllocator"]; | |||
PC -> PA [color="#51bf5b", | |||
style="filled,setlinewidth(6)", | |||
weight=0]; | |||
H4 [color="#8383cc", | |||
fillcolor="#777777", | |||
fontcolor=white, | |||
fontsize=20, | |||
label="storage devices:\nSCSI, NVMe ...", | |||
row=chip]; | |||
block -> H4 [color="#8383cc", | |||
style="filled,setlinewidth(6)"]; | |||
SW [color="#8383cc", | |||
fillcolor="#91b5c9", | |||
fixedsize=true, | |||
label=Swap, | |||
height=0.8, | |||
shape=octagon, | |||
width=1.2]; | |||
SW -> block [color="#8383cc", | |||
style="filled,setlinewidth(6)", | |||
weight=0]; | |||
} | |||
{ | |||
node [color="#c46747", | |||
style="filled,setlinewidth(6)" | |||
]; | |||
edge [color="#c46747"]; | |||
processing_ [color="#c46747", | |||
fixedsize=true, | |||
height=0, | |||
shape="", | |||
style=invis, | |||
width=0]; | |||
processing [color="#c46747", | |||
fillcolor=white, | |||
fixedsize=true, | |||
height=0.6, | |||
row=func, | |||
width=2]; | |||
processing -> processing_ [arrowhead="", | |||
color="#c46747", | |||
row=func, | |||
style="filled,setlinewidth(6)"]; | |||
proc [color="#c46747", | |||
fillcolor="#d9e7ee", | |||
fixedsize=true, | |||
label=Processes, | |||
row=usr, | |||
shape=ellipse]; | |||
Tasks [color="#c46747", | |||
fillcolor="#b2d3e4"]; | |||
proc -> Tasks [color="#c46747", | |||
style="filled,setlinewidth(6)"]; | |||
sync [color="#c46747", | |||
fillcolor="#91b5c9", | |||
fixedsize=true, | |||
fontsize=20, | |||
fontname="Ubuntu Condensed" | |||
label=synchronization, | |||
height=0.7, | |||
width=2, | |||
shape=octagon]; | |||
Tasks -> sync [color="#c46747", | |||
style="filled,setlinewidth(6)"]; | |||
sched [color="#c46747", | |||
fillcolor="#6a9ab1", | |||
label=Scheduler]; | |||
sync -> sched [color="#c46747", | |||
style="filled,setlinewidth(6)"]; | |||
IRQ [color="#c46747", | |||
fillcolor="#71809b", | |||
fontsize=20, | |||
label="interrupts\ncore,\nCPU arch"]; | |||
sched -> IRQ [color="#c46747", | |||
style="filled,setlinewidth(6)"]; | |||
CPU [color="#c46747", | |||
fillcolor="#777777", | |||
fontcolor=white, | |||
fontsize=20, | |||
row=chip]; | |||
IRQ -> CPU [color="#c46747", | |||
style="filled,setlinewidth(6)"]; | |||
} | |||
{ | |||
node [color="#cfbf57ff", | |||
style="filled,setlinewidth(6)" | |||
]; | |||
edge [color="#cfbf57ff", | |||
weight=10 | |||
]; | |||
HI_ [color="#cfbf57ff", | |||
fixedsize=true, | |||
height=0, | |||
shape="", | |||
style=invis, | |||
width=0]; | |||
HI [color="#cfbf57ff", | |||
fillcolor=white, | |||
fixedsize=true, | |||
fontsize=20, | |||
height=0.6, | |||
label="human\ninterface", | |||
row=func, | |||
width=2]; | |||
HI -> HI_ [arrowhead="", | |||
color="#cfbf57ff", | |||
row=func, | |||
style="filled,setlinewidth(6)"]; | |||
char [color="#cfbf57ff", | |||
fillcolor="#d9e7ee", | |||
fixedsize=true, | |||
label="char\ndevices", | |||
row=usr, | |||
shape=ellipse]; | |||
input [color="#cfbf57ff", | |||
fillcolor="#b2d3e4", | |||
label="input\nsubsystem"]; | |||
char -> input [color="#cfbf57ff", | |||
style="filled,setlinewidth(6)"]; | |||
F7 [color="#cfbf57ff", | |||
fillcolor="#6a9ab1", | |||
label="HI class\ndrivers"]; | |||
input -> F7 [color="#cfbf57ff", | |||
style="filled,setlinewidth(6)"]; | |||
HID [color="#cfbf57ff", | |||
fillcolor="#71809b", | |||
fontsize=20, | |||
URL="https://www.kernel.org/doc/html/latest/hid/", | |||
label="HI\nperipherals\ndrivers"]; | |||
F7 -> HID [color="#cfbf57ff", | |||
style="filled,setlinewidth(6)"]; | |||
H7 [color="#cfbf57ff", | |||
fillcolor="#777777", | |||
fontcolor=white, | |||
fontsize=20, | |||
label="display, keyboard,\nmouse, audio", | |||
row=chip]; | |||
HID -> H7 [color="#cfbf57ff", | |||
style="filled,setlinewidth(6)"]; | |||
} | |||
{ | |||
graph [rank=same]; | |||
edge [style=invis, | |||
weight=1 | |||
]; | |||
system; | |||
networking; | |||
system -> networking [weight=1]; | |||
storage; | |||
networking -> storage [weight=1]; | |||
memory [color="#51bf5b", | |||
fillcolor=white, | |||
fixedsize=true, | |||
height=0.6, | |||
row=func, | |||
width=2]; | |||
storage -> memory [weight=1]; | |||
processing; | |||
HI; | |||
processing -> HI [weight=1]; | |||
memory -> processing [weight=1]; | |||
functions_ [fixedsize=true, | |||
height=0, | |||
shape="", | |||
style=invis, | |||
width=0]; | |||
functions_ -> system [weight=1]; | |||
functions [color=gray, | |||
tooltip="Columns represent main functionalities of the kernel", | |||
URL="http://www.makelinux.net/ldd3/chp-1-sect-2.shtml", | |||
fillcolor=gray, | |||
fixedsize=true, | |||
height=0.6, | |||
row=func, | |||
style=dashed, | |||
width=1.6]; | |||
functions -> functions_ [arrowhead="", | |||
color=gray, | |||
style="", | |||
weight=""]; | |||
} | |||
{ | |||
graph [rank=same]; | |||
SCI; | |||
sock; | |||
FS; | |||
proc; | |||
char; | |||
usr_ [fixedsize=true, | |||
height=0, | |||
shape="", | |||
style=invis, | |||
width=0.5]; | |||
usr [fillcolor="#d9e7eeff", | |||
fixedsize=true, | |||
label="user space\ninterfaces", | |||
row=usr, | |||
shape=ellipse, | |||
style="filled,setlinewidth(0)"]; | |||
MA [color="#51bf5b", | |||
fillcolor="#d9e7ee", | |||
fixedsize=true, | |||
label="memory\naccess", | |||
row=usr, | |||
shape=ellipse]; | |||
} | |||
{ | |||
edge [style=invis, | |||
weight=10 | |||
]; | |||
system_; | |||
SCI; | |||
system_ -> SCI; | |||
networking_; | |||
sock; | |||
networking_ -> sock; | |||
storage_; | |||
FS; | |||
storage_ -> FS; | |||
processing_; | |||
proc; | |||
processing_ -> proc; | |||
HI_; | |||
char; | |||
HI_ -> char; | |||
MA; | |||
memory_ [fixedsize=true, | |||
height=0, | |||
shape="", | |||
style=invis, | |||
width=0]; | |||
memory_ -> MA; | |||
} | |||
{ | |||
graph [rank=same]; | |||
sysfs; | |||
prot_fam; | |||
VFS; | |||
Tasks; | |||
input; | |||
D0 [fixedsize=true, | |||
height=0, | |||
shape="", | |||
style=invis, | |||
width=0]; | |||
virt [fillcolor="#b2d3e4", | |||
label="virtual\nsubsystems", | |||
style="filled,setlinewidth(0)"]; | |||
VM [color="#51bf5b", | |||
fillcolor="#b2d3e4", | |||
label="Virtual\nmemory"]; | |||
} | |||
{ | |||
graph [rank=same]; | |||
DM; | |||
NFS; | |||
mmap; | |||
sync; | |||
E0 [fixedsize=true, | |||
height=0, | |||
shape="", | |||
style=invis, | |||
width=0]; | |||
bridges [fillcolor="#91b5c9", | |||
shape=octagon, | |||
style="filled,setlinewidth(0)"]; | |||
} | |||
{ | |||
graph [rank=same]; | |||
log_sys; | |||
log_prot; | |||
logFS; | |||
sched; | |||
F7; | |||
F0 [fixedsize=true, | |||
height=0, | |||
shape="", | |||
style=invis, | |||
width=0]; | |||
logical [fillcolor="#6a9ab1", | |||
style="filled,setlinewidth(0)"]; | |||
log_mem [color="#51bf5b", | |||
fillcolor="#6a9ab1", | |||
label="logical\nmemory"]; | |||
} | |||
{ | |||
graph [rank=same]; | |||
bus_drv; | |||
netif; | |||
block; | |||
PA; | |||
IRQ; | |||
HID; | |||
G0 [fixedsize=true, | |||
height=0, | |||
shape="", | |||
style=invis, | |||
width=0]; | |||
HWI [fillcolor="#71809b", | |||
label="hardware\ninterfaces", | |||
style="filled,setlinewidth(0)"]; | |||
} | |||
{ | |||
graph [rank=same]; | |||
H2; | |||
net_hw; | |||
H4; | |||
CPU; | |||
H7; | |||
H0 [fixedsize=true, | |||
height=0, | |||
shape="", | |||
style=invis, | |||
width=0]; | |||
HW [fillcolor="#777777", | |||
fontcolor=white, | |||
label="electronics,\nhardware", | |||
row=chip, | |||
style="filled,setlinewidth(0)"]; | |||
H5 [color="#51bf5b", | |||
fillcolor="#777777", | |||
fontcolor=white, | |||
fontsize=20, | |||
label="MMU, RAM", | |||
row=chip]; | |||
} | |||
subgraph mem { | |||
node [color="#51bf5b", | |||
height=0.5 | |||
]; | |||
edge [color="#51bf5b"]; | |||
PC; | |||
mmap; | |||
SW; | |||
mmap -> SW [color="#51bf5b", | |||
style="filled,setlinewidth(6)", | |||
weight=0]; | |||
log_mem; | |||
mmap -> log_mem [color="#51bf5b", | |||
style="filled,setlinewidth(6)"]; | |||
PA; | |||
H5; | |||
PA -> H5 [color="#51bf5b", | |||
style="filled,setlinewidth(6)"]; | |||
memory; | |||
memory_; | |||
memory -> memory_ [arrowhead="", | |||
color="#51bf5b", | |||
row=func, | |||
style="filled,setlinewidth(6)"]; | |||
MA; | |||
VM; | |||
MA -> VM [color="#51bf5b", | |||
style="filled,setlinewidth(6)"]; | |||
VM -> mmap [color="#51bf5b", | |||
style="filled,setlinewidth(6)"]; | |||
log_mem -> PA [color="#51bf5b", | |||
style="filled,setlinewidth(6)"]; | |||
} | |||
bottom [label="© 2007-2019 Constantine Shulyupin http://www.MakeLinux.net/kernel/diagram", | |||
shape=plaintext, | |||
style=""]; | |||
H4 -> bottom [weight=""]; | |||
layers [fillcolor=lightgray, | |||
tooltip="Functionalities are divided to common layers. It is approximate division.", | |||
height=0.1, | |||
style="filled,setlinewidth(0)", | |||
width=0.5]; | |||
functions -> layers; | |||
usr -> usr_ [arrowhead="", | |||
color="#d9e7eeff", | |||
minlen=2, | |||
style="filled,setlinewidth(6)"]; | |||
usr -> virt [color="#d9e7eeff", | |||
style="filled,setlinewidth(6)"]; | |||
virt -> D0 [arrowhead="", | |||
color="#b2d3e4", | |||
minlen=2, | |||
style="filled,setlinewidth(6)"]; | |||
virt -> bridges [color="#b2d3e4", | |||
style="filled,setlinewidth(6)"]; | |||
bridges -> E0 [arrowhead="", | |||
color="#91b5c9", | |||
minlen=2, | |||
style="filled,setlinewidth(6)", | |||
weight=""]; | |||
bridges -> logical [color="#91b5c9", | |||
style="filled,setlinewidth(6)"]; | |||
logical -> F0 [arrowhead="", | |||
color="#6a9ab1", | |||
minlen=2, | |||
row=logical, | |||
style="filled,setlinewidth(6)", | |||
weight=""]; | |||
logical -> HWI [color="#6a9ab1", | |||
row=logical, | |||
style="filled,setlinewidth(6)"]; | |||
HWI -> G0 [arrowhead="", | |||
color="#71809b", | |||
minlen=2, | |||
row=HWI, | |||
style="filled,setlinewidth(6)", | |||
weight=""]; | |||
HWI -> HW [color="#71809b", | |||
row=HWI, | |||
style="filled,setlinewidth(6)"]; | |||
HW -> H0 [arrowhead="", | |||
color="#777777", | |||
minlen=2, | |||
row=chip, | |||
style="filled,setlinewidth(6)", | |||
weight=""]; | |||
layers -> usr [arrowhead="", | |||
color=gray, | |||
style="filled,setlinewidth(1)"]; | |||
LKD [fontsize=40, | |||
label="Linux kernel diagram", | |||
shape=plain, | |||
style=""]; | |||
LKD -> storage; | |||
} | } | ||
[[File:Linux_kernel_diagram.svg]] | [[File:Linux_kernel_diagram.svg]] | ||
Latest revision as of 04:30, 5 February 2021
http://graphviz.org/Gallery/directed/Linux_kernel_diagram.gv.txt
digraph matrix {
graph [newrank=true,
nodesep=0.1,
overlap=true,
ranksep=0.1,
splines=false,
nodesep=0.3,
ranksep=0.2,
//bgcolor="transparent",
];
node [fixedsize=false,
fontname="Ubuntu"
fontsize=24,
height=1,
shape=box,
style="filled,setlinewidth(6)",
width=2.2
];
edge [arrowhead=none,
arrowsize=0.5,
style=invis,
labelfontname="Ubuntu",
weight=10
];
{
node [color="#e27dd6ff"];
system_ [color="#e27dd6ff",
fixedsize=true,
height=0,
shape="",
style=invis,
width=0];
system [color="#e27dd6ff",
fillcolor=white,
fixedsize=true,
height=0.6,
row=func,
width=2];
system -> system_ [arrowhead="",
color="#e27dd6ff",
row=func,
style="filled,setlinewidth(6)"];
SCI [color="#e27dd6ff",
fillcolor="#d9e7ee",
fixedsize=true,
label="System calls",
row=usr,
shape=ellipse];
sysfs [color="#e27dd6ff",
fillcolor="#b2d3e4",
label="proc, sysfs,\nfile systems"];
SCI -> sysfs [color="#e27dd6ff",
style="filled,setlinewidth(6)"];
DM [color="#e27dd6ff",
fillcolor="#91b5c9",
fixedsize=true,
fontsize=20,
height=0.8,
label="Device\nModel",
shape=octagon,
width=2];
sysfs -> DM [color="#e27dd6ff",
style="filled,setlinewidth(6)"];
log_sys [color="#e27dd6ff",
fillcolor="#6a9ab1",
fontsize=20,
label="system run,\nmodules,\ngeneric\nHW access "];
DM -> log_sys [color="#e27dd6ff",
style="filled,setlinewidth(6)"];
bus_drv [color="#e27dd6ff",
fillcolor="#71809b",
label="bus drivers"];
log_sys -> bus_drv [color="#e27dd6ff",
style="filled,setlinewidth(6)"];
H2 [color="#e27dd6ff",
fillcolor="#777777",
fontcolor=white,
fontsize=20,
label="busess:\nPCI, USB ...",
row=chip];
bus_drv -> H2 [color="#e27dd6ff",
style="filled,setlinewidth(6)"];
}
{
node [color="#61c2c5"];
edge [color="#61c2c5"];
networking_ [color="#61c2c5",
fixedsize=true,
height=0,
shape="",
style=invis,
width=0];
networking [color="#61c2c5",
fillcolor=white,
fixedsize=true,
height=0.6,
row=func,
width=2];
networking -> networking_ [arrowhead="",
color="#61c2c5",
row=func,
style="filled,setlinewidth(6)"];
sock [color="#61c2c5",
fillcolor="#d9e7ee",
fixedsize=true,
label=Sockets,
row=usr,
shape=ellipse];
prot_fam [color="#61c2c5",
fillcolor="#b2d3e4",
label="protocol\nfamilies"];
sock -> prot_fam [color="#61c2c5",
style="filled,setlinewidth(6)"];
log_prot [color="#61c2c5",
fillcolor="#6a9ab1",
label="protocols:\nTCP, UDP, IP"];
prot_fam -> log_prot [color="#61c2c5",
style="filled,setlinewidth(6)"];
netif [color="#61c2c5",
fillcolor="#71809b",
fontsize=20,
label="network\ninterfaces\nand drivers"];
log_prot -> netif [color="#61c2c5",
style="filled,setlinewidth(6)"];
net_hw [color="#61c2c5",
fillcolor="#777777",
fontcolor=white,
fontsize=20,
label="network:\nEthernet, WiFi ...",
row=chip];
netif -> net_hw [color="#61c2c5",
style="filled,setlinewidth(6)"];
NFS [color="#8383cc",
fillcolor="#91b5c9",
fixedsize=true,
height=0.8,
label=NFS,
shape=octagon,
width=1.2];
NFS -> log_prot [color="#61c2c5",
style="filled,setlinewidth(6)",
weight=0];
}
{
node [color="#8383cc"];
edge [color="#8383cc"];
NFS;
storage_ [color="#8383cc",
fixedsize=true,
height=0,
shape="",
style=invis,
width=0];
storage [color="#8383cc",
fillcolor=white,
fixedsize=true,
height=0.6,
row=func,
width=2];
storage -> storage_ [arrowhead="",
color="#8383cc",
row=func,
style="filled,setlinewidth(6)"];
FS [color="#8383cc",
fillcolor="#d9e7ee",
fixedsize=true,
label="files and\ndirectories",
row=usr,
shape=ellipse];
VFS [color="#8383cc",
fillcolor="#b2d3e4",
label="Virtual\nFile System"];
FS -> VFS [color="#8383cc",
style="filled,setlinewidth(6)"];
VFS -> NFS [color="#8383cc",
style="filled,setlinewidth(6)",
weight=0];
logFS [color="#8383cc",
fillcolor="#6a9ab1",
fontsize=20,
label="logical\nfilesystems:\next3, xfs ..."];
VFS -> logFS [color="#8383cc",
style="filled,setlinewidth(6)"];
PC [color="#51bf5b",
fillcolor="#91b5c9",
fixedsize=true,
fontsize=20,
height=0.8,
label="page\ncache",
shape=octagon,
width=1.2];
VFS -> PC [color="#8383cc",
style="filled,setlinewidth(6)",
weight=0];
mmap [color="#51bf5b",
fillcolor="#91b5c9",
fixedsize=true,
fontsize=20,
height=0.8,
label="memory\nmapping",
shape=octagon,
width=2];
VFS -> mmap [color="#8383cc",
style="filled,setlinewidth(6)",
weight=0];
block [color="#8383cc",
fillcolor="#71809b",
fontsize=20,
label="Block\ndevices\nand drivers"];
logFS -> block [color="#8383cc",
style="filled,setlinewidth(6)"];
PA [color="#51bf5b",
fillcolor="#71809b",
label="Page\nAllocator"];
PC -> PA [color="#51bf5b",
style="filled,setlinewidth(6)",
weight=0];
H4 [color="#8383cc",
fillcolor="#777777",
fontcolor=white,
fontsize=20,
label="storage devices:\nSCSI, NVMe ...",
row=chip];
block -> H4 [color="#8383cc",
style="filled,setlinewidth(6)"];
SW [color="#8383cc",
fillcolor="#91b5c9",
fixedsize=true,
label=Swap,
height=0.8,
shape=octagon,
width=1.2];
SW -> block [color="#8383cc",
style="filled,setlinewidth(6)",
weight=0];
}
{
node [color="#c46747",
style="filled,setlinewidth(6)"
];
edge [color="#c46747"];
processing_ [color="#c46747",
fixedsize=true,
height=0,
shape="",
style=invis,
width=0];
processing [color="#c46747",
fillcolor=white,
fixedsize=true,
height=0.6,
row=func,
width=2];
processing -> processing_ [arrowhead="",
color="#c46747",
row=func,
style="filled,setlinewidth(6)"];
proc [color="#c46747",
fillcolor="#d9e7ee",
fixedsize=true,
label=Processes,
row=usr,
shape=ellipse];
Tasks [color="#c46747",
fillcolor="#b2d3e4"];
proc -> Tasks [color="#c46747",
style="filled,setlinewidth(6)"];
sync [color="#c46747",
fillcolor="#91b5c9",
fixedsize=true,
fontsize=20,
fontname="Ubuntu Condensed"
label=synchronization,
height=0.7,
width=2,
shape=octagon];
Tasks -> sync [color="#c46747",
style="filled,setlinewidth(6)"];
sched [color="#c46747",
fillcolor="#6a9ab1",
label=Scheduler];
sync -> sched [color="#c46747",
style="filled,setlinewidth(6)"];
IRQ [color="#c46747",
fillcolor="#71809b",
fontsize=20,
label="interrupts\ncore,\nCPU arch"];
sched -> IRQ [color="#c46747",
style="filled,setlinewidth(6)"];
CPU [color="#c46747",
fillcolor="#777777",
fontcolor=white,
fontsize=20,
row=chip];
IRQ -> CPU [color="#c46747",
style="filled,setlinewidth(6)"];
}
{
node [color="#cfbf57ff",
style="filled,setlinewidth(6)"
];
edge [color="#cfbf57ff",
weight=10
];
HI_ [color="#cfbf57ff",
fixedsize=true,
height=0,
shape="",
style=invis,
width=0];
HI [color="#cfbf57ff",
fillcolor=white,
fixedsize=true,
fontsize=20,
height=0.6,
label="human\ninterface",
row=func,
width=2];
HI -> HI_ [arrowhead="",
color="#cfbf57ff",
row=func,
style="filled,setlinewidth(6)"];
char [color="#cfbf57ff",
fillcolor="#d9e7ee",
fixedsize=true,
label="char\ndevices",
row=usr,
shape=ellipse];
input [color="#cfbf57ff",
fillcolor="#b2d3e4",
label="input\nsubsystem"];
char -> input [color="#cfbf57ff",
style="filled,setlinewidth(6)"];
F7 [color="#cfbf57ff",
fillcolor="#6a9ab1",
label="HI class\ndrivers"];
input -> F7 [color="#cfbf57ff",
style="filled,setlinewidth(6)"];
HID [color="#cfbf57ff",
fillcolor="#71809b",
fontsize=20,
URL="https://www.kernel.org/doc/html/latest/hid/",
label="HI\nperipherals\ndrivers"];
F7 -> HID [color="#cfbf57ff",
style="filled,setlinewidth(6)"];
H7 [color="#cfbf57ff",
fillcolor="#777777",
fontcolor=white,
fontsize=20,
label="display, keyboard,\nmouse, audio",
row=chip];
HID -> H7 [color="#cfbf57ff",
style="filled,setlinewidth(6)"];
}
{
graph [rank=same];
edge [style=invis,
weight=1
];
system;
networking;
system -> networking [weight=1];
storage;
networking -> storage [weight=1];
memory [color="#51bf5b",
fillcolor=white,
fixedsize=true,
height=0.6,
row=func,
width=2];
storage -> memory [weight=1];
processing;
HI;
processing -> HI [weight=1];
memory -> processing [weight=1];
functions_ [fixedsize=true,
height=0,
shape="",
style=invis,
width=0];
functions_ -> system [weight=1];
functions [color=gray,
tooltip="Columns represent main functionalities of the kernel",
URL="http://www.makelinux.net/ldd3/chp-1-sect-2.shtml",
fillcolor=gray,
fixedsize=true,
height=0.6,
row=func,
style=dashed,
width=1.6];
functions -> functions_ [arrowhead="",
color=gray,
style="",
weight=""];
}
{
graph [rank=same];
SCI;
sock;
FS;
proc;
char;
usr_ [fixedsize=true,
height=0,
shape="",
style=invis,
width=0.5];
usr [fillcolor="#d9e7eeff",
fixedsize=true,
label="user space\ninterfaces",
row=usr,
shape=ellipse,
style="filled,setlinewidth(0)"];
MA [color="#51bf5b",
fillcolor="#d9e7ee",
fixedsize=true,
label="memory\naccess",
row=usr,
shape=ellipse];
}
{
edge [style=invis,
weight=10
];
system_;
SCI;
system_ -> SCI;
networking_;
sock;
networking_ -> sock;
storage_;
FS;
storage_ -> FS;
processing_;
proc;
processing_ -> proc;
HI_;
char;
HI_ -> char;
MA;
memory_ [fixedsize=true,
height=0,
shape="",
style=invis,
width=0];
memory_ -> MA;
}
{
graph [rank=same];
sysfs;
prot_fam;
VFS;
Tasks;
input;
D0 [fixedsize=true,
height=0,
shape="",
style=invis,
width=0];
virt [fillcolor="#b2d3e4",
label="virtual\nsubsystems",
style="filled,setlinewidth(0)"];
VM [color="#51bf5b",
fillcolor="#b2d3e4",
label="Virtual\nmemory"];
}
{
graph [rank=same];
DM;
NFS;
mmap;
sync;
E0 [fixedsize=true,
height=0,
shape="",
style=invis,
width=0];
bridges [fillcolor="#91b5c9",
shape=octagon,
style="filled,setlinewidth(0)"];
}
{
graph [rank=same];
log_sys;
log_prot;
logFS;
sched;
F7;
F0 [fixedsize=true,
height=0,
shape="",
style=invis,
width=0];
logical [fillcolor="#6a9ab1",
style="filled,setlinewidth(0)"];
log_mem [color="#51bf5b",
fillcolor="#6a9ab1",
label="logical\nmemory"];
}
{
graph [rank=same];
bus_drv;
netif;
block;
PA;
IRQ;
HID;
G0 [fixedsize=true,
height=0,
shape="",
style=invis,
width=0];
HWI [fillcolor="#71809b",
label="hardware\ninterfaces",
style="filled,setlinewidth(0)"];
}
{
graph [rank=same];
H2;
net_hw;
H4;
CPU;
H7;
H0 [fixedsize=true,
height=0,
shape="",
style=invis,
width=0];
HW [fillcolor="#777777",
fontcolor=white,
label="electronics,\nhardware",
row=chip,
style="filled,setlinewidth(0)"];
H5 [color="#51bf5b",
fillcolor="#777777",
fontcolor=white,
fontsize=20,
label="MMU, RAM",
row=chip];
}
subgraph mem {
node [color="#51bf5b",
height=0.5
];
edge [color="#51bf5b"];
PC;
mmap;
SW;
mmap -> SW [color="#51bf5b",
style="filled,setlinewidth(6)",
weight=0];
log_mem;
mmap -> log_mem [color="#51bf5b",
style="filled,setlinewidth(6)"];
PA;
H5;
PA -> H5 [color="#51bf5b",
style="filled,setlinewidth(6)"];
memory;
memory_;
memory -> memory_ [arrowhead="",
color="#51bf5b",
row=func,
style="filled,setlinewidth(6)"];
MA;
VM;
MA -> VM [color="#51bf5b",
style="filled,setlinewidth(6)"];
VM -> mmap [color="#51bf5b",
style="filled,setlinewidth(6)"];
log_mem -> PA [color="#51bf5b",
style="filled,setlinewidth(6)"];
}
bottom [label="© 2007-2019 Constantine Shulyupin http://www.MakeLinux.net/kernel/diagram",
shape=plaintext,
style=""];
H4 -> bottom [weight=""];
layers [fillcolor=lightgray,
tooltip="Functionalities are divided to common layers. It is approximate division.",
height=0.1,
style="filled,setlinewidth(0)",
width=0.5];
functions -> layers;
usr -> usr_ [arrowhead="",
color="#d9e7eeff",
minlen=2,
style="filled,setlinewidth(6)"];
usr -> virt [color="#d9e7eeff",
style="filled,setlinewidth(6)"];
virt -> D0 [arrowhead="",
color="#b2d3e4",
minlen=2,
style="filled,setlinewidth(6)"];
virt -> bridges [color="#b2d3e4",
style="filled,setlinewidth(6)"];
bridges -> E0 [arrowhead="",
color="#91b5c9",
minlen=2,
style="filled,setlinewidth(6)",
weight=""];
bridges -> logical [color="#91b5c9",
style="filled,setlinewidth(6)"];
logical -> F0 [arrowhead="",
color="#6a9ab1",
minlen=2,
row=logical,
style="filled,setlinewidth(6)",
weight=""];
logical -> HWI [color="#6a9ab1",
row=logical,
style="filled,setlinewidth(6)"];
HWI -> G0 [arrowhead="",
color="#71809b",
minlen=2,
row=HWI,
style="filled,setlinewidth(6)",
weight=""];
HWI -> HW [color="#71809b",
row=HWI,
style="filled,setlinewidth(6)"];
HW -> H0 [arrowhead="",
color="#777777",
minlen=2,
row=chip,
style="filled,setlinewidth(6)",
weight=""];
layers -> usr [arrowhead="",
color=gray,
style="filled,setlinewidth(1)"];
LKD [fontsize=40,
label="Linux kernel diagram",
shape=plain,
style=""];
LKD -> storage;
}