This commit is contained in:
Costa Shulyupin 2021-12-23 07:50:27 +02:00
parent 1afe9a1a92
commit d65d7f3ded
1 changed files with 566 additions and 510 deletions

View File

@ -1,235 +1,171 @@
digraph matrix { digraph "Linux_kernel_diagram" {
graph [newrank=true, graph [
newrank = true,
nodesep = 0.3, nodesep = 0.3,
ranksep = 0.2, ranksep = 0.2,
overlap = true, overlap = true,
splines = false, splines = false,
]; ]
node [fixedsize=false, node [
fixedsize = false,
fontname = Ubuntu fontname = Ubuntu
fontsize = 24, fontsize = 24,
height = 1, height = 1,
shape = box, shape = box,
style = "filled,setlinewidth(5)", style = "filled,setlinewidth(5)",
width = 2.2 width = 2.2
]; ]
edge [arrowhead=none, edge [
arrowhead = none,
arrowsize = 0.5, arrowsize = 0.5,
labelfontname = "Ubuntu", labelfontname = "Ubuntu",
weight = 10, weight = 10,
style = "filled,setlinewidth(5)" style = "filled,setlinewidth(5)"
]; ]
subgraph system { subgraph system {
node [color="#e27dd6ff"]; node [color = "#e27dd6ff"]
system_ [color="#e27dd6ff", edge [color = "#e27dd6ff"]
system_ [
fixedsize = true, fixedsize = true,
height = 0, height = 0,
shape = point, shape = point,
style = invis, style = invis,
shape = point shape = point
]; ]
system [color="#e27dd6ff", system [
URL = "https://en.wikibooks.org/wiki/The_Linux_Kernel/System", URL = "https://en.wikibooks.org/wiki/The_Linux_Kernel/System",
fillcolor = white, fillcolor = white,
fixedsize = true, fixedsize = true,
height = 0.6, height = 0.6,
row = func, row = func,
width=2]; width = 2]
system -> system_ [arrowhead="", system -> system_ [
color="#e27dd6ff", arrowhead = "",
row = func] row = func]
SCI [color="#e27dd6ff", SCI [
URL = "https://en.wikibooks.org/wiki/The_Linux_Kernel/Syscalls", URL = "https://en.wikibooks.org/wiki/The_Linux_Kernel/Syscalls",
fillcolor = "#d9e7ee", fillcolor = "#d9e7ee",
fixedsize = true, fixedsize = true,
label = "System calls", label = "System calls",
row = usr, row = usr,
shape=ellipse]; shape = ellipse]
sysfs [color="#e27dd6ff", sysfs [
fillcolor = "#b2d3e4", fillcolor = "#b2d3e4",
label="proc & sysfs\nfile systems"]; label = "proc & sysfs\nfile systems"]
SCI -> sysfs [color="#e27dd6ff"]; SCI -> sysfs
DM [color="#e27dd6ff", DM [
fillcolor = "#91b5c9", fillcolor = "#91b5c9",
fixedsize = true, fixedsize = true,
fontsize = 20, fontsize = 20,
height = 0.8, height = 0.8,
label = "Device\nModel", label = "Device\nModel",
shape = octagon, shape = octagon,
width=2]; width = 2]
sysfs -> DM [color="#e27dd6ff"]; sysfs -> DM
log_sys [color="#e27dd6ff", log_sys [
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
bus_drv [color="#e27dd6ff", bus_drv [
fillcolor = "#71809b", fillcolor = "#71809b",
label="bus drivers"]; label = "bus drivers"]
log_sys -> bus_drv [color="#e27dd6ff"]; log_sys -> bus_drv
buses [color="#e27dd6ff", buses [
fillcolor = "#777777", fillcolor = "#777777",
fontcolor = white, fontcolor = white,
fontsize = 20, fontsize = 20,
label = "buses:\nPCI, USB ...", label = "buses:\nPCI, USB ...",
row=chip]; row = chip]
bus_drv -> buses [color="#e27dd6ff"]; bus_drv -> buses
} }
subgraph networking { subgraph networking {
node [color="#61c2c5"]; node [ color = "#61c2c5"]
edge [color="#61c2c5"]; edge [ color = "#61c2c5"]
networking_ [color="#61c2c5", networking_ [
fixedsize = true, fixedsize = true,
height = 0, height = 0,
shape = point, shape = point,
style = invis, style = invis,
shape = point shape = point
width=0]; width = 0]
networking [color="#61c2c5", networking [
URL = "https://en.wikibooks.org/wiki/The_Linux_Kernel/Networking", URL = "https://en.wikibooks.org/wiki/The_Linux_Kernel/Networking",
fillcolor = white, fillcolor = white,
fixedsize = true, fixedsize = true,
height = 0.6, height = 0.6,
row = func, row = func,
width=2]; width = 2]
networking -> networking_ [arrowhead="", networking -> networking_ [
color="#61c2c5", arrowhead = "",
row=func]; row = func]
sock [color="#61c2c5", sock [
fillcolor = "#d9e7ee", fillcolor = "#d9e7ee",
fixedsize = true, fixedsize = true,
label = Sockets, label = Sockets,
row = usr, row = usr,
shape=ellipse]; shape = ellipse]
prot_fam [color="#61c2c5", prot_fam [
fillcolor = "#b2d3e4", fillcolor = "#b2d3e4",
label="protocol\nfamilies"]; label = "protocol\nfamilies"]
sock -> prot_fam [color="#61c2c5"]; sock -> prot_fam
log_prot [color="#61c2c5", log_prot [
fillcolor = "#6a9ab1", fillcolor = "#6a9ab1",
label="protocols:\nTCP, UDP, IP"]; label = "protocols:\nTCP, UDP, IP"]
prot_fam -> log_prot [color="#61c2c5"]; prot_fam -> log_prot
netif [color="#61c2c5", netif [
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
net_hw [color="#61c2c5", net_hw [
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
NFS [color="#8383cc", NFS [
color = "#8383cc",
fillcolor = "#91b5c9", fillcolor = "#91b5c9",
fixedsize = true, fixedsize = true,
height = 0.8, height = 0.8,
label = NFS, label = NFS,
shape = octagon, shape = octagon,
width=1.2]; width = 1.2]
NFS -> log_prot [color="#61c2c5", NFS -> log_prot [ weight = 0]
weight=0];
} }
subgraph storage {
node [color="#8383cc"];
edge [color="#8383cc"];
NFS;
storage_ [color="#8383cc",
shape=point
fixedsize=true,
height=0,
style=invis,
width=0];
storage [color="#8383cc",
URL="https://en.wikibooks.org/wiki/The_Linux_Kernel/Storage",
fillcolor=white,
fixedsize=true,
height=0.6,
row=func,
width=2];
storage -> storage_ [arrowhead="",
color="#8383cc",
row=func];
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"];
VFS -> NFS [color="#8383cc",
weight=0];
logFS [color="#8383cc",
fillcolor="#6a9ab1",
fontsize=20,
label="logical\nfilesystems:\next3, xfs ..."];
VFS -> logFS [color="#8383cc"];
PC [color="#51bf5b",
fillcolor="#91b5c9",
fixedsize=true,
fontsize=20,
height=0.8,
label="page\ncache",
shape=octagon,
width=1.2];
PC -> PA [color="#51bf5b", weight=0];
VFS -> PC [color="#8383cc", 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",
weight=0];
block [color="#8383cc",
fillcolor="#71809b",
fontsize=20,
label="Block\ndevices\nand drivers"];
logFS -> block [color="#8383cc"];
SD [color="#8383cc",
fillcolor="#777777",
fontcolor=white,
fontsize=20,
label="storage devices:\nSCSI, NVMe ...",
row=chip];
block -> SD [color="#8383cc"];
} // storge
subgraph processing { subgraph processing {
node [color="#c46747"]; node [ color = "#c46747"]
edge [color="#c46747"]; edge [ color = "#c46747"]
processing_ [color="#c46747", processing_ [
fixedsize = true, fixedsize = true,
height = 0, height = 0,
shape = point shape = point
style = invis, style = invis,
width=0]; width = 0]
processing [color="#c46747", processing [
URL = "https://en.wikibooks.org/wiki/The_Linux_Kernel/Processing", URL = "https://en.wikibooks.org/wiki/The_Linux_Kernel/Processing",
fillcolor = white, fillcolor = white,
fixedsize = true, fixedsize = true,
height = 0.6, height = 0.6,
row = func, row = func,
width=2]; width = 2]
processing -> processing_ [arrowhead="", processing -> processing_ [
color="#c46747", arrowhead = "",
row=func]; row = func]
proc [color="#c46747", proc [
fillcolor = "#d9e7ee", fillcolor = "#d9e7ee",
fixedsize = true, fixedsize = true,
label = Processes, label = Processes,
row = usr, row = usr,
shape=ellipse]; shape = ellipse]
Tasks [color="#c46747", Tasks [
fillcolor="#b2d3e4"]; fillcolor = "#b2d3e4"]
proc -> Tasks [color="#c46747"]; proc -> Tasks
sync [color="#c46747", sync [
fillcolor = "#91b5c9", fillcolor = "#91b5c9",
fixedsize = true, fixedsize = true,
fontsize = 20, fontsize = 20,
@ -237,38 +173,153 @@ digraph matrix {
label = synchronization, label = synchronization,
height = 0.7, height = 0.7,
//width = 2, //width = 2,
shape=octagon]; shape = octagon]
Tasks -> sync [color="#c46747"]; Tasks -> sync
sched [color="#c46747", sched [
fillcolor = "#6a9ab1", fillcolor = "#6a9ab1",
label=Scheduler]; label = Scheduler]
sync -> sched [color="#c46747"]; sync -> sched
IRQ [color="#c46747", IRQ [
fillcolor = "#71809b", fillcolor = "#71809b",
fontsize = 20, fontsize = 20,
label="interrupts\ncore,\nCPU arch"]; label = "interrupts\ncore,\nCPU arch"]
sched -> IRQ [color="#c46747"]; sched -> IRQ
CPU [color="#c46747", CPU [
fillcolor = "#777777", fillcolor = "#777777",
fontcolor = white, fontcolor = white,
fontsize = 20, fontsize = 20,
row=chip]; row = chip]
IRQ -> CPU [color="#c46747"]; IRQ -> CPU
} // processing } // processing
subgraph HI { subgraph mem {
node [color="#cfbf57ff", node [
color = "#51bf5b",
]; height = 0.5
edge [color="#cfbf57ff", ]
weight=10 edge [ color = "#51bf5b"]
]; MA [
HI_ [color="#cfbf57ff", color = "#51bf5b",
fillcolor = "#d9e7ee",
fixedsize = true,
label = "memory\naccess",
row = usr,
height = 1,
shape = ellipse]
MA -> VM
mmap [
fillcolor = "#91b5c9",
fixedsize = true,
fontsize = 20,
height = 0.8,
label = "memory\nmapping",
shape = octagon,
width = 2]
mmap -> log_mem
log_mem -> PA
//VFS -> SW [ style = invis]
SW [
color = "#8383cc",
fillcolor = "#91b5c9",
fixedsize = true,
label = Swap,
height = 0.8,
shape = octagon,
width = 1.2]
mmap -> SW [ weight = 1]
SW -> block [
color = "#8383cc", weight = 1]
PA [
fillcolor = "#71809b",
label = "Page\nAllocator"
]
PC -> PA [weight = 0 color="#51bf5b"]
RAM [
color = "#51bf5b",
fillcolor = "#777777",
fontcolor = white,
fontsize = 20,
label = "MMU, RAM",
height = 1,
row = chip]
PA -> RAM
memory -> memory_ [
arrowhead = "",
row = func]
VM -> mmap
} // mem
subgraph storage {
node [ color = "#8383cc"]
edge [ color = "#8383cc"]
NFS;
storage_ [
shape = point,
fixedsize = true, fixedsize = true,
height = 0, height = 0,
shape=point
style = invis, style = invis,
width=0]; width = 0]
HI [color="#cfbf57ff", storage [
URL = "https://en.wikibooks.org/wiki/The_Linux_Kernel/Storage",
fillcolor = white,
fixedsize = true,
height = 0.6,
row = func,
width = 2]
storage -> storage_ [
arrowhead = "",
row = func]
FS [
fillcolor = "#d9e7ee",
fixedsize = true,
label = "files and\ndirectories",
row = usr,
shape = ellipse]
VFS [
fillcolor = "#b2d3e4",
label = "Virtual\nFile System"]
FS -> VFS
VFS -> mmap [ weight = 0]
VFS -> NFS [
weight = 0]
logFS [
fillcolor = "#6a9ab1",
fontsize = 20,
label = "logical\nfilesystems:\next3, xfs ..."]
VFS -> logFS
PC [
fillcolor = "#91b5c9",
fixedsize = true,
fontsize = 20,
height = 0.8,
label = "page\ncache",
shape = octagon,
width = 1.2]
VFS -> PC [ weight = 0]
block [
fillcolor = "#71809b",
fontsize = 20,
label = "Block\ndevices\nand drivers"]
logFS -> block
SD [
fillcolor = "#777777",
fontcolor = white,
fontsize = 20,
label = "storage devices:\nSCSI, NVMe ...",
row = chip]
block -> SD
} // storge
subgraph HI {
node [color = "#cfbf57ff"]
edge [
color = "#cfbf57ff",
weight = 10
]
HI_ [
fixedsize = true,
height = 0,
shape = point,
style = invis,
width = 0]
HI [
URL = "https://en.wikibooks.org/wiki/The_Linux_Kernel/Human_interfaces", URL = "https://en.wikibooks.org/wiki/The_Linux_Kernel/Human_interfaces",
fillcolor = white, fillcolor = white,
fixedsize = true, fixedsize = true,
@ -276,64 +327,69 @@ digraph matrix {
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_ [
color="#cfbf57ff", arrowhead = "",
row=func]; row = func]
char [color="#cfbf57ff", char [
fillcolor = "#d9e7ee", fillcolor = "#d9e7ee",
fixedsize = true, fixedsize = true,
label = "char\ndevices", label = "char\ndevices",
row = usr, row = usr,
shape=ellipse]; shape = ellipse]
input [color="#cfbf57ff", input [
fillcolor = "#b2d3e4", fillcolor = "#b2d3e4",
label="input\nsubsystem"]; label = "input\nsubsystem"]
char -> input [color="#cfbf57ff"]; char -> input
F7 [color="#cfbf57ff", F7 [
fillcolor = "#6a9ab1", fillcolor = "#6a9ab1",
label="HI class\ndrivers"]; label = "HI class\ndrivers"]
input -> F7 [color="#cfbf57ff"]; input -> F7
HID [color="#cfbf57ff", HID [
fillcolor = "#71809b", fillcolor = "#71809b",
fontsize = 20, fontsize = 20,
URL = "https://www.kernel.org/doc/html/latest/hid/", URL = "https://www.kernel.org/doc/html/latest/hid/",
label="HI\nperipherals\ndrivers"]; label = "HI\nperipherals\ndrivers"]
F7 -> HID [color="#cfbf57ff" F7 -> HID
]; display [
display [color="#cfbf57ff",
fillcolor = "#777777", fillcolor = "#777777",
fontcolor = white, fontcolor = white,
fontsize = 19, fontsize = 19,
label = "keyboard, mouse,\ndisplay, audio", label = "keyboard, mouse,\ndisplay, audio",
row=chip]; row = chip]
HID -> display [color="#cfbf57ff" ]; HID -> display
} // HI } // HI
subgraph functions { subgraph functions {
graph [rank=same]; graph [
edge [style=invis, rank = same]
edge [
style = invis,
weight = 1 weight = 1
]; ]
system; system;
networking; networking;
system -> processing [weight=1]; system -> processing [ weight = 1]
storage -> networking [weight=1]; storage -> networking [ weight = 1]
memory [color="#51bf5b", memory [
color = "#51bf5b",
URL = "https://en.wikibooks.org/wiki/The_Linux_Kernel/Memory", URL = "https://en.wikibooks.org/wiki/The_Linux_Kernel/Memory",
fillcolor = white, fillcolor = white,
fixedsize = true, fixedsize = true,
height = 0.6, height = 0.6,
row = func, row = func,
width=2]; width = 2]
memory -> storage [weight=1]; memory -> storage [ weight = 1]
processing -> memory [weight=1]; processing -> memory [
functions_ [fixedsize=true, weight = 1]
functions_ [
fixedsize = true,
height = 0, height = 0,
shape = point shape = point
style = invis, style = invis,
width=0]; width = 0]
functions_ -> HI -> system [weight=1]; functions_ -> HI -> system [ weight = 1]
functions [color=gray, functions [
color = gray,
tooltip = "Columns represent main functionalities of the kernel", tooltip = "Columns represent main functionalities of the kernel",
URL = "http://www.makelinux.net/ldd3/chp-1-sect-2.shtml", URL = "http://www.makelinux.net/ldd3/chp-1-sect-2.shtml",
fillcolor = gray, fillcolor = gray,
@ -341,39 +397,37 @@ digraph matrix {
height = 0.6, height = 0.6,
row = func, row = func,
style = dashed, style = dashed,
width=1.6]; width = 1.6]
functions -> functions_ [arrowhead="", functions -> functions_ [
arrowhead = "",
color = gray, color = gray,
style = "", style = "",
weight=""]; weight = ""]
} }
subgraph interfaces { subgraph interfaces {
graph [rank=same]; graph [ rank = same]
SCI; SCI;
sock; sock;
FS; FS;
proc; proc;
char; char;
usr_ [fixedsize=true, usr_ [
fixedsize = true,
height = 0, height = 0,
shape = point shape = point
style = invis, style = invis,
width=0.5]; width = 0.5]
usr [fillcolor="#d9e7eeff", usr [
fillcolor = "#d9e7eeff",
fixedsize = true, fixedsize = true,
label = "user space\ninterfaces", label = "user space\ninterfaces",
row = usr, row = usr,
shape = ellipse, shape = ellipse,
style="filled,setlinewidth(0)"]; style = "filled,setlinewidth(0)"]
MA [color="#51bf5b", MA;
fillcolor="#d9e7ee",
fixedsize=true,
label="memory\naccess",
row=usr,
shape=ellipse];
} }
{ {
edge [style=invis weight=10 ]; edge [ style = invis weight = 10 ]
system_; system_;
SCI; SCI;
system_ -> SCI; system_ -> SCI;
@ -390,194 +444,196 @@ digraph matrix {
char; char;
HI_ -> char; HI_ -> char;
MA; MA;
memory_ [fixedsize=true, memory_ [
fixedsize = true,
height = 0, height = 0,
shape = point, shape = point,
style = invis, style = invis,
width=0]; width = 0]
memory_ -> MA; memory_ -> MA;
} }
subgraph virtual { subgraph virtual {
graph [rank=same]; graph [
rank = same]
sysfs; sysfs;
prot_fam; prot_fam;
VFS; VFS;
Tasks; Tasks;
input; input;
D0 [fixedsize=true, D0 [
fixedsize = true,
height = 0, height = 0,
shape = point, shape = point,
style = invis, style = invis,
width=0]; width = 0]
virt [fillcolor="#b2d3e4", virt [
fillcolor = "#b2d3e4",
label = "virtual\nsubsystems", label = "virtual\nsubsystems",
URL = "https://en.wikipedia.org/wiki/Proxy_pattern", URL = "https://en.wikipedia.org/wiki/Proxy_pattern",
tooltip = "proxy between standard user space interfaces and internal implementations", tooltip = "proxy between standard user space interfaces and internal implementations",
style="filled,setlinewidth(0)"]; style = "filled,setlinewidth(0)"]
VM [color="#51bf5b", VM [
color = "#51bf5b",
fillcolor = "#b2d3e4", fillcolor = "#b2d3e4",
label="Virtual\nmemory"]; label = "Virtual\nmemory"]
} }
subgraph bridges { subgraph bridges {
graph [rank=same]; graph [
bridges [fillcolor="#91b5c9", rank = same]
bridges [
fillcolor = "#91b5c9",
shape = octagon, shape = octagon,
tooltip = "bridges between uniform virtual interfaces and various implementations", tooltip = "bridges between uniform virtual interfaces and various implementations",
URL = "https://en.wikipedia.org/wiki/Bridge_pattern", URL = "https://en.wikipedia.org/wiki/Bridge_pattern",
style="filled,setlinewidth(0)"]; style = "filled,setlinewidth(0)"]
DM; DM;
NFS; NFS;
mmap; mmap;
sync; sync;
E0 [fixedsize=true, E0 [
fixedsize = true,
height = 0, height = 0,
shape = point, shape = point,
style = invis, style = invis,
width=0]; width = 0]
//PC
} }
subgraph logical { subgraph logical {
graph [rank=same]; graph [
rank = same]
log_sys; log_sys;
log_prot; log_prot;
logFS; logFS;
sched; sched;
F7; F7;
F0 [fixedsize=true, F0 [
fixedsize = true,
height = 0, height = 0,
shape = point, shape = point,
style = invis, style = invis,
width=0]; width = 0]
logical [fillcolor="#6a9ab1", logical [
style="filled,setlinewidth(0)"];
log_mem [color="#51bf5b",
fillcolor = "#6a9ab1", fillcolor = "#6a9ab1",
label="logical\nmemory"]; style = "filled,setlinewidth(0)"]
log_mem [
color = "#51bf5b",
fillcolor = "#6a9ab1",
label = "logical\nmemory"]
//SW
} }
subgraph HWI { subgraph HWI {
graph [rank=same]; graph [ rank = same]
HWI [fillcolor="#71809b", HWI [
fillcolor = "#71809b",
label = "hardware\ninterfaces", label = "hardware\ninterfaces",
style="filled,setlinewidth(0)"]; style = "filled,setlinewidth(0)"]
bus_drv; bus_drv;
netif; netif;
block; block;
PA; //PA;
IRQ; IRQ;
HID; HID;
G0 [fixedsize=true, G0 [
fixedsize = true,
height = 0, height = 0,
shape = point, shape = point,
style = invis, style = invis,
width=0]; width = 0]
} }
subgraph HW { subgraph HW {
graph [rank=same]; graph [
HW [fillcolor="#777777", rank = same]
HW [
fillcolor = "#777777",
fontcolor = white, fontcolor = white,
label = "electronics,\nhardware", label = "electronics,\nhardware",
row = chip, row = chip,
style="filled,setlinewidth(0)"]; style = "filled,setlinewidth(0)"]
buses; buses;
net_hw; net_hw;
SD; SD;
CPU; CPU;
display; display;
H0 [fixedsize=true, H0 [
fixedsize = true,
height = 0, height = 0,
shape = point, shape = point,
style = invis, style = invis,
width=0]; width = 0]
RAM [color="#51bf5b", RAM;
fillcolor="#777777",
fontcolor=white,
fontsize=20,
label="MMU, RAM",
row=chip];
} }
subgraph mem { bottom [
node [color="#51bf5b", label = "© 2007-2021 Constantine Shulyupin http://www.MakeLinux.net/kernel/diagram",
height=0.5
];
edge [color="#51bf5b"];
PA
[color="#51bf5b",
fillcolor="#71809b",
label="Page\nAllocator"];
mmap -> log_mem [color="#51bf5b"];
log_mem -> PA [color="#51bf5b"];
//VFS -> SW [ style=invis];
SW [color="#8383cc",
fillcolor="#91b5c9",
fixedsize=true,
label=Swap,
height=0.8,
shape=octagon,
width=1.2];
mmap -> SW [color="#51bf5b", weight=1];
SW -> block [color="#8383cc", weight=1];
log_mem;
PA -> RAM [color="#51bf5b"];
memory -> memory_ [arrowhead="",
color="#51bf5b",
row=func];
MA -> VM [color="#51bf5b"];
VM -> mmap [color="#51bf5b"];
}
bottom [label="© 2007-2021 Constantine Shulyupin http://www.MakeLinux.net/kernel/diagram",
shape = plaintext, shape = plaintext,
style=""]; style = ""]
CPU -> bottom [style=invis]; CPU -> bottom [
layers [fillcolor=lightgray, style = invis]
layers [
fillcolor = lightgray,
tooltip = "Functionalities are divided to common layers. It is approximate division.", 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 [ style=invis ]; functions -> layers [
usr -> usr_ [arrowhead="", style = invis ]
usr -> usr_ [
arrowhead = "",
color = "#d9e7eeff", color = "#d9e7eeff",
minlen=2]; minlen = 2]
usr -> virt [color="#d9e7eeff"]; usr -> virt [
virt -> D0 [arrowhead="", color = "#d9e7eeff"]
virt -> D0 [
arrowhead = "",
color = "#b2d3e4", color = "#b2d3e4",
minlen=2]; minlen = 2]
virt -> bridges [color="#b2d3e4"]; virt -> bridges [
bridges -> E0 [arrowhead="", color = "#b2d3e4"]
bridges -> E0 [
arrowhead = "",
color = "#91b5c9", color = "#91b5c9",
minlen = 2, minlen = 2,
style = "filled,setlinewidth(6)", style = "filled,setlinewidth(6)",
weight=""]; weight = ""]
bridges -> logical [color="#91b5c9", bridges -> logical [
style="filled,setlinewidth(6)"]; color = "#91b5c9",
logical -> F0 [arrowhead="", style = "filled,setlinewidth(6)"]
logical -> F0 [
arrowhead = "",
color = "#6a9ab1", color = "#6a9ab1",
minlen = 2, minlen = 2,
row = logical, row = logical,
style = "filled,setlinewidth(6)", style = "filled,setlinewidth(6)",
weight=""]; weight = ""]
logical -> HWI [color="#6a9ab1", logical -> HWI [
color = "#6a9ab1",
row = logical, row = logical,
style="filled,setlinewidth(6)"]; 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(6)", style = "filled,setlinewidth(6)",
weight=""]; weight = ""]
HWI -> HW [color="#71809b", HWI -> HW [
color = "#71809b",
row = HWI, row = HWI,
style="filled,setlinewidth(6)"]; 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(6)", style = "filled,setlinewidth(6)",
weight=""]; weight = ""]
layers -> usr [arrowhead="", layers -> usr [
arrowhead = "",
color = gray, color = gray,
style="filled,setlinewidth(1)"]; style = "filled,setlinewidth(1)"]
LKD [fontsize=40, LKD [
fontsize = 40,
label = "Linux kernel diagram", label = "Linux kernel diagram",
shape = plain, shape = plain,
style=""]; style = ""]
LKD -> processing [style=invis]; LKD -> processing [ style = invis]
} }