Viz/Gallery/directed/Linux kernel diagram.gv.txt

From VistApedia
Revision as of 04:30, 5 February 2021 by DavidWhitten (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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;
}

Linux kernel diagram.svg