| User mode
|
User applications
|
bash, LibreOffice, GIMP, Blender, 0 A.D., Mozilla Firefox, ...
|
| System components
|
init daemon: OpenRC, runit, systemd...
|
System daemons: polkitd, smbd, sshd, udevd...
|
Window manager: X11, Wayland, SurfaceFlinger (Android)
|
Graphics: Mesa, AMD Catalyst, ...
|
Other libraries: GTK, Qt, EFL, SDL, SFML, FLTK, GNUstep, ...
|
| C standard library
|
fopen, execv, malloc, memcpy, localtime, pthread_create... (up to 2000 subroutines) glibc aims to be fast, musl aims to be lightweight, uClibc targets embedded systems, bionic was written for Android, etc. All aim to be POSIX/SUS-compatible.
|
| Kernel mode
|
Linux kernel
|
stat, splice, dup, read, open, ioctl, write, mmap, close, exit, etc. (about 380 system calls) The Linux kernel System Call Interface (SCI), aims to be POSIX/SUS-compatible[1]
|
Process scheduling subsystem
|
IPC subsystem
|
Memory management subsystem
|
Virtual files subsystem
|
Network subsystem
|
Other components: ALSA, DRI, evdev, klibc, LVM, device mapper, Linux Network Scheduler, Netfilter Linux Security Modules: SELinux, TOMOYO, AppArmor, Smack
|
| Hardware (CPU, main memory, data storage devices, etc.)
|