Linux_Kernel_map4vehicle/Linux_kernel_diagram.dot

584 lines
13 KiB
Plaintext
Raw Normal View History

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