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.)
|