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"];
|
2019-11-22 00:37:22 +08:00
|
|
|
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"];
|
2019-11-22 00:37:22 +08:00
|
|
|
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"];
|
2019-11-22 00:37:22 +08:00
|
|
|
NFS;
|
|
|
|
storage_ [color="#8383cc",
|
2020-06-24 13:01:58 +08:00
|
|
|
shape=point
|
2019-11-22 00:37:22 +08:00
|
|
|
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"];
|
2019-11-22 00:37:22 +08:00
|
|
|
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
|
|
|
];
|
2019-11-22 00:47:13 +08:00
|
|
|
edge [color="#cfbf57ff",
|
|
|
|
weight=10
|
|
|
|
];
|
2019-11-22 00:37:22 +08:00
|
|
|
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];
|
2019-11-22 00:37:22 +08:00
|
|
|
functions_ [fixedsize=true,
|
|
|
|
height=0,
|
2020-06-24 13:01:58 +08:00
|
|
|
shape=point
|
2019-11-22 00:37:22 +08:00
|
|
|
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;
|
2019-11-22 00:37:22 +08:00
|
|
|
usr_ [fixedsize=true,
|
|
|
|
height=0,
|
2020-06-24 13:01:58 +08:00
|
|
|
shape=point
|
2019-11-22 00:37:22 +08:00
|
|
|
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;
|
2019-11-22 00:37:22 +08:00
|
|
|
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];
|
2019-11-22 00:37:22 +08:00
|
|
|
memory_ -> MA;
|
|
|
|
}
|
2021-12-21 22:32:54 +08:00
|
|
|
subgraph virtual {
|
2019-11-22 00:37:22 +08:00
|
|
|
graph [rank=same];
|
2019-11-18 13:21:35 +08:00
|
|
|
sysfs;
|
|
|
|
prot_fam;
|
|
|
|
VFS;
|
|
|
|
Tasks;
|
|
|
|
input;
|
2019-11-22 00:37:22 +08:00
|
|
|
D0 [fixedsize=true,
|
|
|
|
height=0,
|
2020-06-24 13:01:58 +08:00
|
|
|
shape=point,
|
2019-11-22 00:37:22 +08:00
|
|
|
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)"];
|
2019-11-22 00:37:22 +08:00
|
|
|
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;
|
2019-11-22 00:37:22 +08:00
|
|
|
F0 [fixedsize=true,
|
|
|
|
height=0,
|
2020-06-24 13:01:58 +08:00
|
|
|
shape=point,
|
2019-11-22 00:37:22 +08:00
|
|
|
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;
|
2019-11-22 00:37:22 +08:00
|
|
|
G0 [fixedsize=true,
|
|
|
|
height=0,
|
2020-06-24 13:01:58 +08:00
|
|
|
shape=point,
|
2019-11-22 00:37:22 +08:00
|
|
|
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;
|
2019-11-22 00:37:22 +08:00
|
|
|
H0 [fixedsize=true,
|
|
|
|
height=0,
|
2020-06-24 13:01:58 +08:00
|
|
|
shape=point,
|
2019-11-22 00:37:22 +08:00
|
|
|
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",
|
2019-11-22 00:47:13 +08:00
|
|
|
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=""];
|
2019-11-22 00:37:22 +08:00
|
|
|
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",
|
2019-11-22 00:47:13 +08:00
|
|
|
shape=plain,
|
|
|
|
style=""];
|
2021-12-21 22:33:52 +08:00
|
|
|
LKD -> processing [style=invis];
|
2019-11-18 13:21:35 +08:00
|
|
|
}
|