The diagram is interactive, allowing zooming and panning with the mouse.
Certain nodes link to documentation.
It is generated by
Graphviz
from the
source .
Linux_kernel_diagram
SCI
System calls
system
system
system->system_
multitasking
multitasking
sysfs
proc & sysfs
file systems
SCI->sysfs
DM
Device
Model
sysfs->DM
log_sys
system run,
modules,
generic
HW access
DM->log_sys
bus_drv
bus drivers
log_sys->bus_drv
buses
buses:
PCI, USB ...
bus_drv->buses
sock
Sockets
networking
networking
networking->networking_
prot_fam
protocol
families
sock->prot_fam
log_prot
protocols:
TCP, UDP, IP
prot_fam->log_prot
netif
network
interfaces
and drivers
log_prot->netif
net_hw
network:
Ethernet, WiFi ...
netif->net_hw
NFS
NFS
NFS->log_prot
proc
Processes
multitasking->multitasking_
memory
memory
Tasks
Tasks
proc->Tasks
sync
synchronization
Tasks->sync
sched
Scheduler
sync->sched
IRQ
interrupts
core,
CPU arch
sched->IRQ
CPU
CPU
IRQ->CPU
bottom
© 2007 Constantine Shulyupin https://makelinux.github.io/kernel/diagram
MA
memory
access
VM
Virtual
memory
MA->VM
mmap
memory
mapping
VM->mmap
log_mem
logical
memory
mmap->log_mem
SW
Swap
mmap->SW
PA
Page
Allocator
log_mem->PA
RAM
MMU, RAM
PA->RAM
block
Block
devices
and drivers
SW->block
SD
storage devices:
SCSI, NVMe ...
block->SD
PC
page
cache
PC->PA
memory->memory_
storage
storage
FS
files and
directories
storage->storage_
VFS
Virtual
File System
FS->VFS
VFS->NFS
VFS->mmap
VFS->PC
logFS
logical
filesystems:
ext3, xfs ...
VFS->logFS
logFS->block
char
char
devices
HI
human
interface
HI->HI_
input
input
subsystem
char->input
F7
HI class
drivers
input->F7
HID
HI
peripherals
drivers
F7->HID
display
keyboard, mouse,
display, audio
HID->display
functions
functions
functions->functions_
layers
layers
usr
user space
interfaces
usr->usr_
virt
virtual
subsystems
usr->virt
virt->D0
bridges
bridges
virt->bridges
bridges->E0
logical
logical
bridges->logical
logical->F0
HWI
hardware
interfaces
logical->HWI
HWI->G0
HW
electronics,
hardware
HWI->HW
HW->H0
layers->usr
LKD
Linux kernel diagram
<?xml version=”1.0” encoding=”UTF-8” standalone=”no”?>