Difference between revisions of "Viz/Gallery/directed/Linux kernel diagram.gv.txt"

From VistApedia
Jump to: navigation, search
(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...")
 
 
Line 2: Line 2:
  
 
  digraph matrix {
 
  digraph matrix {
graph [newrank=true,
+
      graph [newrank=true,
nodesep=0.1,
+
        nodesep=0.1,
overlap=true,
+
        overlap=true,
ranksep=0.1,
+
        ranksep=0.1,
splines=false,
+
        splines=false,
nodesep=0.3,
+
        nodesep=0.3,
ranksep=0.2,
+
        ranksep=0.2,
//bgcolor="transparent",
+
        //bgcolor="transparent",
];
+
    ];
node [fixedsize=false,
+
    node [fixedsize=false,
fontname="Ubuntu"
+
        fontname="Ubuntu"
fontsize=24,
+
        fontsize=24,
height=1,
+
        height=1,
shape=box,
+
        shape=box,
style="filled,setlinewidth(6)",
+
        style="filled,setlinewidth(6)",
width=2.2
+
        width=2.2
];
+
    ];
edge [arrowhead=none,
+
    edge [arrowhead=none,
arrowsize=0.5,
+
        arrowsize=0.5,
style=invis,
+
        style=invis,
labelfontname="Ubuntu",
+
        labelfontname="Ubuntu",
weight=10
+
        weight=10
];
+
    ];
{
+
    {
node [color="#e27dd6ff"];
+
        node [color="#e27dd6ff"];
system_ [color="#e27dd6ff",
+
        system_         [color="#e27dd6ff",
fixedsize=true,
+
            fixedsize=true,
height=0,
+
            height=0,
shape="",
+
            shape="",
style=invis,
+
            style=invis,
width=0];
+
            width=0];
system [color="#e27dd6ff",
+
        system         [color="#e27dd6ff",
fillcolor=white,
+
            fillcolor=white,
fixedsize=true,
+
            fixedsize=true,
height=0.6,
+
            height=0.6,
row=func,
+
            row=func,
width=2];
+
            width=2];
system -> system_ [arrowhead="",
+
        system -> system_         [arrowhead="",
color="#e27dd6ff",
+
            color="#e27dd6ff",
row=func,
+
            row=func,
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
SCI [color="#e27dd6ff",
+
        SCI         [color="#e27dd6ff",
fillcolor="#d9e7ee",
+
            fillcolor="#d9e7ee",
fixedsize=true,
+
            fixedsize=true,
label="System calls",
+
            label="System calls",
row=usr,
+
            row=usr,
shape=ellipse];
+
            shape=ellipse];
sysfs [color="#e27dd6ff",
+
        sysfs         [color="#e27dd6ff",
fillcolor="#b2d3e4",
+
            fillcolor="#b2d3e4",
label="proc, sysfs,\nfile systems"];
+
            label="proc, sysfs,\nfile systems"];
SCI -> sysfs [color="#e27dd6ff",
+
        SCI -> sysfs         [color="#e27dd6ff",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
DM [color="#e27dd6ff",
+
        DM         [color="#e27dd6ff",
fillcolor="#91b5c9",
+
            fillcolor="#91b5c9",
fixedsize=true,
+
            fixedsize=true,
fontsize=20,
+
            fontsize=20,
height=0.8,
+
            height=0.8,
label="Device\nModel",
+
            label="Device\nModel",
shape=octagon,
+
            shape=octagon,
width=2];
+
            width=2];
sysfs -> DM [color="#e27dd6ff",
+
        sysfs -> DM         [color="#e27dd6ff",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
log_sys [color="#e27dd6ff",
+
        log_sys         [color="#e27dd6ff",
fillcolor="#6a9ab1",
+
            fillcolor="#6a9ab1",
fontsize=20,
+
            fontsize=20,
label="system run,\nmodules,\ngeneric\nHW access "];
+
            label="system run,\nmodules,\ngeneric\nHW access "];
DM -> log_sys [color="#e27dd6ff",
+
        DM -> log_sys         [color="#e27dd6ff",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
bus_drv [color="#e27dd6ff",
+
        bus_drv         [color="#e27dd6ff",
fillcolor="#71809b",
+
            fillcolor="#71809b",
label="bus drivers"];
+
            label="bus drivers"];
log_sys -> bus_drv [color="#e27dd6ff",
+
        log_sys -> bus_drv         [color="#e27dd6ff",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
H2 [color="#e27dd6ff",
+
        H2         [color="#e27dd6ff",
fillcolor="#777777",
+
            fillcolor="#777777",
fontcolor=white,
+
            fontcolor=white,
fontsize=20,
+
            fontsize=20,
label="busess:\nPCI, USB ...",
+
            label="busess:\nPCI, USB ...",
row=chip];
+
            row=chip];
bus_drv -> H2 [color="#e27dd6ff",
+
        bus_drv -> H2         [color="#e27dd6ff",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
}
+
    }
{
+
    {
node [color="#61c2c5"];
+
        node [color="#61c2c5"];
edge [color="#61c2c5"];
+
        edge [color="#61c2c5"];
networking_ [color="#61c2c5",
+
        networking_         [color="#61c2c5",
fixedsize=true,
+
            fixedsize=true,
height=0,
+
            height=0,
shape="",
+
            shape="",
style=invis,
+
            style=invis,
width=0];
+
            width=0];
networking [color="#61c2c5",
+
        networking         [color="#61c2c5",
fillcolor=white,
+
            fillcolor=white,
fixedsize=true,
+
            fixedsize=true,
height=0.6,
+
            height=0.6,
row=func,
+
            row=func,
width=2];
+
            width=2];
networking -> networking_ [arrowhead="",
+
        networking -> networking_         [arrowhead="",
color="#61c2c5",
+
            color="#61c2c5",
row=func,
+
            row=func,
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
sock [color="#61c2c5",
+
        sock         [color="#61c2c5",
fillcolor="#d9e7ee",
+
            fillcolor="#d9e7ee",
fixedsize=true,
+
            fixedsize=true,
label=Sockets,
+
            label=Sockets,
row=usr,
+
            row=usr,
shape=ellipse];
+
            shape=ellipse];
prot_fam [color="#61c2c5",
+
        prot_fam         [color="#61c2c5",
fillcolor="#b2d3e4",
+
            fillcolor="#b2d3e4",
label="protocol\nfamilies"];
+
            label="protocol\nfamilies"];
sock -> prot_fam [color="#61c2c5",
+
        sock -> prot_fam         [color="#61c2c5",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
log_prot [color="#61c2c5",
+
        log_prot         [color="#61c2c5",
fillcolor="#6a9ab1",
+
            fillcolor="#6a9ab1",
label="protocols:\nTCP, UDP, IP"];
+
            label="protocols:\nTCP, UDP, IP"];
prot_fam -> log_prot [color="#61c2c5",
+
        prot_fam -> log_prot         [color="#61c2c5",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
netif [color="#61c2c5",
+
        netif         [color="#61c2c5",
fillcolor="#71809b",
+
            fillcolor="#71809b",
fontsize=20,
+
            fontsize=20,
label="network\ninterfaces\nand drivers"];
+
            label="network\ninterfaces\nand drivers"];
log_prot -> netif [color="#61c2c5",
+
        log_prot -> netif         [color="#61c2c5",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
net_hw [color="#61c2c5",
+
        net_hw         [color="#61c2c5",
fillcolor="#777777",
+
            fillcolor="#777777",
fontcolor=white,
+
            fontcolor=white,
fontsize=20,
+
            fontsize=20,
label="network:\nEthernet, WiFi ...",
+
            label="network:\nEthernet, WiFi ...",
row=chip];
+
            row=chip];
netif -> net_hw [color="#61c2c5",
+
        netif -> net_hw         [color="#61c2c5",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
NFS [color="#8383cc",
+
        NFS         [color="#8383cc",
fillcolor="#91b5c9",
+
            fillcolor="#91b5c9",
fixedsize=true,
+
            fixedsize=true,
height=0.8,
+
            height=0.8,
label=NFS,
+
            label=NFS,
shape=octagon,
+
            shape=octagon,
width=1.2];
+
            width=1.2];
NFS -> log_prot [color="#61c2c5",
+
        NFS -> log_prot         [color="#61c2c5",
style="filled,setlinewidth(6)",
+
            style="filled,setlinewidth(6)",
weight=0];
+
            weight=0];
}
+
    }
{
+
    {
node [color="#8383cc"];
+
        node [color="#8383cc"];
edge [color="#8383cc"];
+
        edge [color="#8383cc"];
NFS;
+
        NFS;
storage_ [color="#8383cc",
+
        storage_         [color="#8383cc",
fixedsize=true,
+
            fixedsize=true,
height=0,
+
            height=0,
shape="",
+
            shape="",
style=invis,
+
            style=invis,
width=0];
+
            width=0];
storage [color="#8383cc",
+
        storage         [color="#8383cc",
fillcolor=white,
+
            fillcolor=white,
fixedsize=true,
+
            fixedsize=true,
height=0.6,
+
            height=0.6,
row=func,
+
            row=func,
width=2];
+
            width=2];
storage -> storage_ [arrowhead="",
+
        storage -> storage_         [arrowhead="",
color="#8383cc",
+
            color="#8383cc",
row=func,
+
            row=func,
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
FS [color="#8383cc",
+
        FS         [color="#8383cc",
fillcolor="#d9e7ee",
+
            fillcolor="#d9e7ee",
fixedsize=true,
+
            fixedsize=true,
label="files and\ndirectories",
+
            label="files and\ndirectories",
row=usr,
+
            row=usr,
shape=ellipse];
+
            shape=ellipse];
VFS [color="#8383cc",
+
        VFS         [color="#8383cc",
fillcolor="#b2d3e4",
+
            fillcolor="#b2d3e4",
label="Virtual\nFile System"];
+
            label="Virtual\nFile System"];
FS -> VFS [color="#8383cc",
+
        FS -> VFS         [color="#8383cc",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
VFS -> NFS [color="#8383cc",
+
        VFS -> NFS         [color="#8383cc",
style="filled,setlinewidth(6)",
+
            style="filled,setlinewidth(6)",
weight=0];
+
            weight=0];
logFS [color="#8383cc",
+
        logFS         [color="#8383cc",
fillcolor="#6a9ab1",
+
            fillcolor="#6a9ab1",
fontsize=20,
+
            fontsize=20,
label="logical\nfilesystems:\next3, xfs ..."];
+
            label="logical\nfilesystems:\next3, xfs ..."];
VFS -> logFS [color="#8383cc",
+
        VFS -> logFS         [color="#8383cc",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
PC [color="#51bf5b",
+
        PC         [color="#51bf5b",
fillcolor="#91b5c9",
+
            fillcolor="#91b5c9",
fixedsize=true,
+
            fixedsize=true,
fontsize=20,
+
            fontsize=20,
height=0.8,
+
            height=0.8,
label="page\ncache",
+
            label="page\ncache",
shape=octagon,
+
            shape=octagon,
width=1.2];
+
            width=1.2];
VFS -> PC [color="#8383cc",
+
        VFS -> PC         [color="#8383cc",
style="filled,setlinewidth(6)",
+
            style="filled,setlinewidth(6)",
weight=0];
+
            weight=0];
mmap [color="#51bf5b",
+
        mmap         [color="#51bf5b",
fillcolor="#91b5c9",
+
            fillcolor="#91b5c9",
fixedsize=true,
+
            fixedsize=true,
fontsize=20,
+
            fontsize=20,
height=0.8,
+
            height=0.8,
label="memory\nmapping",
+
            label="memory\nmapping",
shape=octagon,
+
            shape=octagon,
width=2];
+
            width=2];
VFS -> mmap [color="#8383cc",
+
        VFS -> mmap         [color="#8383cc",
style="filled,setlinewidth(6)",
+
            style="filled,setlinewidth(6)",
weight=0];
+
            weight=0];
block [color="#8383cc",
+
        block         [color="#8383cc",
fillcolor="#71809b",
+
            fillcolor="#71809b",
fontsize=20,
+
            fontsize=20,
label="Block\ndevices\nand drivers"];
+
            label="Block\ndevices\nand drivers"];
logFS -> block [color="#8383cc",
+
        logFS -> block         [color="#8383cc",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
PA [color="#51bf5b",
+
        PA         [color="#51bf5b",
fillcolor="#71809b",
+
            fillcolor="#71809b",
label="Page\nAllocator"];
+
            label="Page\nAllocator"];
PC -> PA [color="#51bf5b",
+
        PC -> PA         [color="#51bf5b",
style="filled,setlinewidth(6)",
+
            style="filled,setlinewidth(6)",
weight=0];
+
            weight=0];
H4 [color="#8383cc",
+
        H4         [color="#8383cc",
fillcolor="#777777",
+
            fillcolor="#777777",
fontcolor=white,
+
            fontcolor=white,
fontsize=20,
+
            fontsize=20,
label="storage devices:\nSCSI, NVMe ...",
+
            label="storage devices:\nSCSI, NVMe ...",
row=chip];
+
            row=chip];
block -> H4 [color="#8383cc",
+
        block -> H4         [color="#8383cc",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
SW [color="#8383cc",
+
        SW         [color="#8383cc",
fillcolor="#91b5c9",
+
            fillcolor="#91b5c9",
fixedsize=true,
+
            fixedsize=true,
label=Swap,
+
            label=Swap,
height=0.8,
+
            height=0.8,
shape=octagon,
+
            shape=octagon,
width=1.2];
+
            width=1.2];
SW -> block [color="#8383cc",
+
        SW -> block         [color="#8383cc",
style="filled,setlinewidth(6)",
+
            style="filled,setlinewidth(6)",
weight=0];
+
            weight=0];
}
+
    }
{
+
    {
node [color="#c46747",
+
        node [color="#c46747",
style="filled,setlinewidth(6)"
+
            style="filled,setlinewidth(6)"
];
+
        ];
edge [color="#c46747"];
+
        edge [color="#c46747"];
processing_ [color="#c46747",
+
        processing_         [color="#c46747",
fixedsize=true,
+
            fixedsize=true,
height=0,
+
            height=0,
shape="",
+
            shape="",
style=invis,
+
            style=invis,
width=0];
+
            width=0];
processing [color="#c46747",
+
        processing         [color="#c46747",
fillcolor=white,
+
            fillcolor=white,
fixedsize=true,
+
            fixedsize=true,
height=0.6,
+
            height=0.6,
row=func,
+
            row=func,
width=2];
+
            width=2];
processing -> processing_ [arrowhead="",
+
        processing -> processing_         [arrowhead="",
color="#c46747",
+
            color="#c46747",
row=func,
+
            row=func,
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
proc [color="#c46747",
+
        proc         [color="#c46747",
fillcolor="#d9e7ee",
+
            fillcolor="#d9e7ee",
fixedsize=true,
+
            fixedsize=true,
label=Processes,
+
            label=Processes,
row=usr,
+
            row=usr,
shape=ellipse];
+
            shape=ellipse];
Tasks [color="#c46747",
+
        Tasks         [color="#c46747",
fillcolor="#b2d3e4"];
+
            fillcolor="#b2d3e4"];
proc -> Tasks [color="#c46747",
+
        proc -> Tasks         [color="#c46747",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
sync [color="#c46747",
+
        sync         [color="#c46747",
fillcolor="#91b5c9",
+
            fillcolor="#91b5c9",
fixedsize=true,
+
            fixedsize=true,
fontsize=20,
+
            fontsize=20,
fontname="Ubuntu Condensed"
+
            fontname="Ubuntu Condensed"
label=synchronization,
+
            label=synchronization,
height=0.7,
+
            height=0.7,
width=2,
+
            width=2,
shape=octagon];
+
            shape=octagon];
Tasks -> sync [color="#c46747",
+
        Tasks -> sync         [color="#c46747",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
sched [color="#c46747",
+
        sched         [color="#c46747",
fillcolor="#6a9ab1",
+
            fillcolor="#6a9ab1",
label=Scheduler];
+
            label=Scheduler];
sync -> sched [color="#c46747",
+
        sync -> sched         [color="#c46747",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
IRQ [color="#c46747",
+
        IRQ         [color="#c46747",
fillcolor="#71809b",
+
            fillcolor="#71809b",
fontsize=20,
+
            fontsize=20,
label="interrupts\ncore,\nCPU arch"];
+
            label="interrupts\ncore,\nCPU arch"];
sched -> IRQ [color="#c46747",
+
        sched -> IRQ         [color="#c46747",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
CPU [color="#c46747",
+
        CPU         [color="#c46747",
fillcolor="#777777",
+
            fillcolor="#777777",
fontcolor=white,
+
            fontcolor=white,
fontsize=20,
+
            fontsize=20,
row=chip];
+
            row=chip];
IRQ -> CPU [color="#c46747",
+
        IRQ -> CPU         [color="#c46747",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
}
+
    }
{
+
    {
node [color="#cfbf57ff",
+
        node [color="#cfbf57ff",
style="filled,setlinewidth(6)"
+
            style="filled,setlinewidth(6)"
];
+
        ];
edge [color="#cfbf57ff",
+
        edge [color="#cfbf57ff",
weight=10
+
            weight=10
];
+
        ];
HI_ [color="#cfbf57ff",
+
        HI_         [color="#cfbf57ff",
fixedsize=true,
+
            fixedsize=true,
height=0,
+
            height=0,
shape="",
+
            shape="",
style=invis,
+
            style=invis,
width=0];
+
            width=0];
HI [color="#cfbf57ff",
+
        HI         [color="#cfbf57ff",
fillcolor=white,
+
            fillcolor=white,
fixedsize=true,
+
            fixedsize=true,
fontsize=20,
+
            fontsize=20,
height=0.6,
+
            height=0.6,
label="human\ninterface",
+
            label="human\ninterface",
row=func,
+
            row=func,
width=2];
+
            width=2];
HI -> HI_ [arrowhead="",
+
        HI -> HI_         [arrowhead="",
color="#cfbf57ff",
+
            color="#cfbf57ff",
row=func,
+
            row=func,
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
char [color="#cfbf57ff",
+
        char         [color="#cfbf57ff",
fillcolor="#d9e7ee",
+
            fillcolor="#d9e7ee",
fixedsize=true,
+
            fixedsize=true,
label="char\ndevices",
+
            label="char\ndevices",
row=usr,
+
            row=usr,
shape=ellipse];
+
            shape=ellipse];
input [color="#cfbf57ff",
+
        input         [color="#cfbf57ff",
fillcolor="#b2d3e4",
+
            fillcolor="#b2d3e4",
label="input\nsubsystem"];
+
            label="input\nsubsystem"];
char -> input [color="#cfbf57ff",
+
        char -> input         [color="#cfbf57ff",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
F7 [color="#cfbf57ff",
+
        F7         [color="#cfbf57ff",
fillcolor="#6a9ab1",
+
            fillcolor="#6a9ab1",
label="HI class\ndrivers"];
+
            label="HI class\ndrivers"];
input -> F7 [color="#cfbf57ff",
+
        input -> F7         [color="#cfbf57ff",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
HID [color="#cfbf57ff",
+
        HID         [color="#cfbf57ff",
fillcolor="#71809b",
+
            fillcolor="#71809b",
fontsize=20,
+
            fontsize=20,
URL="https://www.kernel.org/doc/html/latest/hid/",
+
            URL="https://www.kernel.org/doc/html/latest/hid/",
label="HI\nperipherals\ndrivers"];
+
            label="HI\nperipherals\ndrivers"];
F7 -> HID [color="#cfbf57ff",
+
        F7 -> HID         [color="#cfbf57ff",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
H7 [color="#cfbf57ff",
+
        H7         [color="#cfbf57ff",
fillcolor="#777777",
+
            fillcolor="#777777",
fontcolor=white,
+
            fontcolor=white,
fontsize=20,
+
            fontsize=20,
label="display, keyboard,\nmouse, audio",
+
            label="display, keyboard,\nmouse, audio",
row=chip];
+
            row=chip];
HID -> H7 [color="#cfbf57ff",
+
        HID -> H7         [color="#cfbf57ff",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
}
+
    }
{
+
    {
graph [rank=same];
+
        graph [rank=same];
edge [style=invis,
+
        edge [style=invis,
weight=1
+
            weight=1
];
+
        ];
system;
+
        system;
networking;
+
        networking;
system -> networking [weight=1];
+
        system -> networking         [weight=1];
storage;
+
        storage;
networking -> storage [weight=1];
+
        networking -> storage         [weight=1];
memory [color="#51bf5b",
+
        memory         [color="#51bf5b",
fillcolor=white,
+
            fillcolor=white,
fixedsize=true,
+
            fixedsize=true,
height=0.6,
+
            height=0.6,
row=func,
+
            row=func,
width=2];
+
            width=2];
storage -> memory [weight=1];
+
        storage -> memory         [weight=1];
processing;
+
        processing;
HI;
+
        HI;
processing -> HI [weight=1];
+
        processing -> HI         [weight=1];
memory -> processing [weight=1];
+
        memory -> processing         [weight=1];
functions_ [fixedsize=true,
+
        functions_         [fixedsize=true,
height=0,
+
            height=0,
shape="",
+
            shape="",
style=invis,
+
            style=invis,
width=0];
+
            width=0];
functions_ -> system [weight=1];
+
        functions_ -> system         [weight=1];
functions [color=gray,
+
        functions         [color=gray,
tooltip="Columns represent main functionalities of the kernel",
+
            tooltip="Columns represent main functionalities of the kernel",
URL="http://www.makelinux.net/ldd3/chp-1-sect-2.shtml",
+
            URL="http://www.makelinux.net/ldd3/chp-1-sect-2.shtml",
fillcolor=gray,
+
            fillcolor=gray,
fixedsize=true,
+
            fixedsize=true,
height=0.6,
+
            height=0.6,
row=func,
+
            row=func,
style=dashed,
+
            style=dashed,
width=1.6];
+
            width=1.6];
functions -> functions_ [arrowhead="",
+
        functions -> functions_         [arrowhead="",
color=gray,
+
            color=gray,
style="",
+
            style="",
weight=""];
+
            weight=""];
}
+
    }
{
+
    {
graph [rank=same];
+
        graph [rank=same];
SCI;
+
        SCI;
sock;
+
        sock;
FS;
+
        FS;
proc;
+
        proc;
char;
+
        char;
usr_ [fixedsize=true,
+
        usr_         [fixedsize=true,
height=0,
+
            height=0,
shape="",
+
            shape="",
style=invis,
+
            style=invis,
width=0.5];
+
            width=0.5];
usr [fillcolor="#d9e7eeff",
+
        usr         [fillcolor="#d9e7eeff",
fixedsize=true,
+
            fixedsize=true,
label="user space\ninterfaces",
+
            label="user space\ninterfaces",
row=usr,
+
            row=usr,
shape=ellipse,
+
            shape=ellipse,
style="filled,setlinewidth(0)"];
+
            style="filled,setlinewidth(0)"];
MA [color="#51bf5b",
+
        MA         [color="#51bf5b",
fillcolor="#d9e7ee",
+
            fillcolor="#d9e7ee",
fixedsize=true,
+
            fixedsize=true,
label="memory\naccess",
+
            label="memory\naccess",
row=usr,
+
            row=usr,
shape=ellipse];
+
            shape=ellipse];
}
+
    }
{
+
    {
edge [style=invis,
+
        edge [style=invis,
weight=10
+
            weight=10
];
+
        ];
system_;
+
        system_;
SCI;
+
        SCI;
system_ -> SCI;
+
        system_ -> SCI;
networking_;
+
        networking_;
sock;
+
        sock;
networking_ -> sock;
+
        networking_ -> sock;
storage_;
+
        storage_;
FS;
+
        FS;
storage_ -> FS;
+
        storage_ -> FS;
processing_;
+
        processing_;
proc;
+
        proc;
processing_ -> proc;
+
        processing_ -> proc;
HI_;
+
        HI_;
char;
+
        char;
HI_ -> char;
+
        HI_ -> char;
MA;
+
        MA;
memory_ [fixedsize=true,
+
        memory_         [fixedsize=true,
height=0,
+
            height=0,
shape="",
+
            shape="",
style=invis,
+
            style=invis,
width=0];
+
            width=0];
memory_ -> MA;
+
        memory_ -> MA;
}
+
    }
{
+
    {
graph [rank=same];
+
        graph [rank=same];
sysfs;
+
        sysfs;
prot_fam;
+
        prot_fam;
VFS;
+
        VFS;
Tasks;
+
        Tasks;
input;
+
        input;
D0 [fixedsize=true,
+
        D0         [fixedsize=true,
height=0,
+
            height=0,
shape="",
+
            shape="",
style=invis,
+
            style=invis,
width=0];
+
            width=0];
virt [fillcolor="#b2d3e4",
+
        virt         [fillcolor="#b2d3e4",
label="virtual\nsubsystems",
+
            label="virtual\nsubsystems",
style="filled,setlinewidth(0)"];
+
            style="filled,setlinewidth(0)"];
VM [color="#51bf5b",
+
        VM         [color="#51bf5b",
fillcolor="#b2d3e4",
+
            fillcolor="#b2d3e4",
label="Virtual\nmemory"];
+
            label="Virtual\nmemory"];
}
+
    }
{
+
    {
graph [rank=same];
+
        graph [rank=same];
DM;
+
        DM;
NFS;
+
        NFS;
mmap;
+
        mmap;
sync;
+
        sync;
E0 [fixedsize=true,
+
        E0         [fixedsize=true,
height=0,
+
            height=0,
shape="",
+
            shape="",
style=invis,
+
            style=invis,
width=0];
+
            width=0];
bridges [fillcolor="#91b5c9",
+
        bridges         [fillcolor="#91b5c9",
shape=octagon,
+
            shape=octagon,
style="filled,setlinewidth(0)"];
+
            style="filled,setlinewidth(0)"];
}
+
    }
{
+
    {
graph [rank=same];
+
        graph [rank=same];
log_sys;
+
        log_sys;
log_prot;
+
        log_prot;
logFS;
+
        logFS;
sched;
+
        sched;
F7;
+
        F7;
F0 [fixedsize=true,
+
        F0         [fixedsize=true,
height=0,
+
            height=0,
shape="",
+
            shape="",
style=invis,
+
            style=invis,
width=0];
+
            width=0];
logical [fillcolor="#6a9ab1",
+
        logical         [fillcolor="#6a9ab1",
style="filled,setlinewidth(0)"];
+
            style="filled,setlinewidth(0)"];
log_mem [color="#51bf5b",
+
        log_mem         [color="#51bf5b",
fillcolor="#6a9ab1",
+
            fillcolor="#6a9ab1",
label="logical\nmemory"];
+
            label="logical\nmemory"];
}
+
    }
{
+
    {
graph [rank=same];
+
        graph [rank=same];
bus_drv;
+
        bus_drv;
netif;
+
        netif;
block;
+
        block;
PA;
+
        PA;
IRQ;
+
        IRQ;
HID;
+
        HID;
G0 [fixedsize=true,
+
        G0         [fixedsize=true,
height=0,
+
            height=0,
shape="",
+
            shape="",
style=invis,
+
            style=invis,
width=0];
+
            width=0];
HWI [fillcolor="#71809b",
+
        HWI         [fillcolor="#71809b",
label="hardware\ninterfaces",
+
            label="hardware\ninterfaces",
style="filled,setlinewidth(0)"];
+
            style="filled,setlinewidth(0)"];
}
+
    }
{
+
    {
graph [rank=same];
+
        graph [rank=same];
H2;
+
        H2;
net_hw;
+
        net_hw;
H4;
+
        H4;
CPU;
+
        CPU;
H7;
+
        H7;
H0 [fixedsize=true,
+
        H0         [fixedsize=true,
height=0,
+
            height=0,
shape="",
+
            shape="",
style=invis,
+
            style=invis,
width=0];
+
            width=0];
HW [fillcolor="#777777",
+
        HW         [fillcolor="#777777",
fontcolor=white,
+
            fontcolor=white,
label="electronics,\nhardware",
+
            label="electronics,\nhardware",
row=chip,
+
            row=chip,
style="filled,setlinewidth(0)"];
+
            style="filled,setlinewidth(0)"];
H5 [color="#51bf5b",
+
        H5         [color="#51bf5b",
fillcolor="#777777",
+
            fillcolor="#777777",
fontcolor=white,
+
            fontcolor=white,
fontsize=20,
+
            fontsize=20,
label="MMU, RAM",
+
            label="MMU, RAM",
row=chip];
+
            row=chip];
}
+
    }
subgraph mem {
+
    subgraph mem {
node [color="#51bf5b",
+
        node [color="#51bf5b",
height=0.5
+
            height=0.5
];
+
        ];
edge [color="#51bf5b"];
+
        edge [color="#51bf5b"];
PC;
+
        PC;
mmap;
+
        mmap;
SW;
+
        SW;
mmap -> SW [color="#51bf5b",
+
        mmap -> SW         [color="#51bf5b",
style="filled,setlinewidth(6)",
+
            style="filled,setlinewidth(6)",
weight=0];
+
            weight=0];
log_mem;
+
        log_mem;
mmap -> log_mem [color="#51bf5b",
+
        mmap -> log_mem         [color="#51bf5b",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
PA;
+
        PA;
H5;
+
        H5;
PA -> H5 [color="#51bf5b",
+
        PA -> H5         [color="#51bf5b",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
memory;
+
        memory;
memory_;
+
        memory_;
memory -> memory_ [arrowhead="",
+
        memory -> memory_         [arrowhead="",
color="#51bf5b",
+
            color="#51bf5b",
row=func,
+
            row=func,
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
MA;
+
        MA;
VM;
+
        VM;
MA -> VM [color="#51bf5b",
+
        MA -> VM         [color="#51bf5b",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
VM -> mmap [color="#51bf5b",
+
        VM -> mmap         [color="#51bf5b",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
log_mem -> PA [color="#51bf5b",
+
        log_mem -> PA         [color="#51bf5b",
style="filled,setlinewidth(6)"];
+
            style="filled,setlinewidth(6)"];
}
+
    }
bottom [label="© 2007-2019 Constantine Shulyupin http://www.MakeLinux.net/kernel/diagram",
+
    bottom     [label="© 2007-2019 Constantine Shulyupin http://www.MakeLinux.net/kernel/diagram",
shape=plaintext,
+
        shape=plaintext,
style=""];
+
        style=""];
H4 -> bottom [weight=""];
+
    H4 -> bottom     [weight=""];
layers [fillcolor=lightgray,
+
    layers     [fillcolor=lightgray,
tooltip="Functionalities are divided to common layers. It is approximate division.",
+
        tooltip="Functionalities are divided to common layers. It is approximate division.",
height=0.1,
+
        height=0.1,
style="filled,setlinewidth(0)",
+
        style="filled,setlinewidth(0)",
width=0.5];
+
        width=0.5];
functions -> layers;
+
    functions -> layers;
usr -> usr_ [arrowhead="",
+
    usr -> usr_     [arrowhead="",
color="#d9e7eeff",
+
        color="#d9e7eeff",
minlen=2,
+
        minlen=2,
style="filled,setlinewidth(6)"];
+
        style="filled,setlinewidth(6)"];
usr -> virt [color="#d9e7eeff",
+
    usr -> virt     [color="#d9e7eeff",
style="filled,setlinewidth(6)"];
+
        style="filled,setlinewidth(6)"];
virt -> D0 [arrowhead="",
+
    virt -> D0     [arrowhead="",
color="#b2d3e4",
+
        color="#b2d3e4",
minlen=2,
+
        minlen=2,
style="filled,setlinewidth(6)"];
+
        style="filled,setlinewidth(6)"];
virt -> bridges [color="#b2d3e4",
+
    virt -> bridges     [color="#b2d3e4",
style="filled,setlinewidth(6)"];
+
        style="filled,setlinewidth(6)"];
bridges -> E0 [arrowhead="",
+
    bridges -> E0     [arrowhead="",
color="#91b5c9",
+
        color="#91b5c9",
minlen=2,
+
        minlen=2,
style="filled,setlinewidth(6)",
+
        style="filled,setlinewidth(6)",
weight=""];
+
        weight=""];
bridges -> logical [color="#91b5c9",
+
    bridges -> logical     [color="#91b5c9",
style="filled,setlinewidth(6)"];
+
        style="filled,setlinewidth(6)"];
logical -> F0 [arrowhead="",
+
    logical -> F0     [arrowhead="",
color="#6a9ab1",
+
        color="#6a9ab1",
minlen=2,
+
        minlen=2,
row=logical,
+
        row=logical,
style="filled,setlinewidth(6)",
+
        style="filled,setlinewidth(6)",
weight=""];
+
        weight=""];
logical -> HWI [color="#6a9ab1",
+
    logical -> HWI     [color="#6a9ab1",
row=logical,
+
        row=logical,
style="filled,setlinewidth(6)"];
+
        style="filled,setlinewidth(6)"];
HWI -> G0 [arrowhead="",
+
    HWI -> G0     [arrowhead="",
color="#71809b",
+
        color="#71809b",
minlen=2,
+
        minlen=2,
row=HWI,
+
        row=HWI,
style="filled,setlinewidth(6)",
+
        style="filled,setlinewidth(6)",
weight=""];
+
        weight=""];
HWI -> HW [color="#71809b",
+
    HWI -> HW     [color="#71809b",
row=HWI,
+
        row=HWI,
style="filled,setlinewidth(6)"];
+
        style="filled,setlinewidth(6)"];
HW -> H0 [arrowhead="",
+
    HW -> H0     [arrowhead="",
color="#777777",
+
        color="#777777",
minlen=2,
+
        minlen=2,
row=chip,
+
        row=chip,
style="filled,setlinewidth(6)",
+
        style="filled,setlinewidth(6)",
weight=""];
+
        weight=""];
layers -> usr [arrowhead="",
+
    layers -> usr     [arrowhead="",
color=gray,
+
        color=gray,
style="filled,setlinewidth(1)"];
+
        style="filled,setlinewidth(1)"];
LKD [fontsize=40,
+
    LKD     [fontsize=40,
label="Linux kernel diagram",
+
        label="Linux kernel diagram",
shape=plain,
+
        shape=plain,
style=""];
+
        style=""];
LKD -> storage;
+
    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;
}

Linux kernel diagram.svg