Difference between revisions of "Viz/Gallery/directed/Linux kernel diagram.gv.txt"
From VistApedia
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) |
||
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; }