리눅스 커널
구조

이 부분의 본문은 vmlinux입니다.
리눅스 커널은 진정한 선점형 멀티태스킹 (사용자 모드 및, 2.6 시리즈 이후의 경우 커널 모드 까지), 가상 메모리, 공유 라이브러리, 디맨드 로딩, 공유 카피 온 라이트 실행 파일(KSM 공유), 메모리 관리, 인터넷 프로토콜 스위트, 스레딩을 지원하는 모놀리딕 커널이다.
장치 드라이버와 커널 확장 기능은 커널 공간(수많은 CPU 구조에서 링 0)에서 실행되며, 하드웨어에 대한 모든 접근 권한이 있으나 사용자 공간에서의 실행은 일부 예외가 있는데 이를테면 FUSE/CUSE 기반 파일 시스템들, UIO의 일부가 그러하다. 대부분의 사람들이 리눅스와 함께 사용하는 그래픽스 시스템은 커널 내에서 실행되지 않는다. 표준 모놀리딕 커널과 달리 장치 드라이버는 쉽게 모듈로 구성되며 시스템이 실행 중인 동안에 적재되거나 적재가 해제된다. 또, 표준 모놀리딕 커널과 달리 장치 드라이버들은 특정한 조건에서 선점이 가능하다. 즉, 이 기능은 하드웨어 인터럽트를 정확히 관리하고 대칭형 다중 처리를 더 양호하게 지원하기 위해 추가되었다. 리눅스 커널은 자체적으로 바이너리 커널 인터페이스가 없다.
하드웨어 또한 파일 계층에 통합되어 있다. 장치 드라이버들은 /dev 또는 /sys 디렉터리의 엔트리를 통해 사용자 응용 프로그램들과 통신한다. 프로세스 정보 또한 /proc 디렉터리를 통해 파일 시스템에 매핑된다.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| --- | --- | --- | --- | --- | --- | --- |
| 사용자 모드 | 사용자 애플리케이션 | 예: bash, 리브레오피스, 김프, 블렌더, 0 A.D., 모질라 파이어폭스 등. | 예: bash, 리브레오피스, 김프, 블렌더, 0 A.D., 모질라 파이어폭스 등. | 예: bash, 리브레오피스, 김프, 블렌더, 0 A.D., 모질라 파이어폭스 등. | 예: bash, 리브레오피스, 김프, 블렌더, 0 A.D., 모질라 파이어폭스 등. | 예: bash, 리브레오피스, 김프, 블렌더, 0 A.D., 모질라 파이어폭스 등. |
| 사용자 모드 | 저수준 시스템 구성 요소: | 시스템 데몬: systemd, runit, logind, networkd, PulseAudio, ... | 윈도 시스템: X11, Wayland, SurfaceFlinger (안드로이드) | 기타 라이브러리: GTK+, Qt, EFL, SDL, SFML, FLTK, 그누스텝 등. | 기타 라이브러리: GTK+, Qt, EFL, SDL, SFML, FLTK, 그누스텝 등. | 그래픽스: 메사, AMD 카탈리스트, ... |
| 사용자 모드 | C 표준 라이브러리 | open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (최대 2000개 함수) glibc는 POSIX/SUS 호환을 목적으로 함, uClibc는 임베디드 시스템을 대상으로 함, bionic은 안드로이드용으로 개발됨 등. | open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (최대 2000개 함수) glibc는 POSIX/SUS 호환을 목적으로 함, uClibc는 임베디드 시스템을 대상으로 함, bionic은 안드로이드용으로 개발됨 등. | open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (최대 2000개 함수) glibc는 POSIX/SUS 호환을 목적으로 함, uClibc는 임베디드 시스템을 대상으로 함, bionic은 안드로이드용으로 개발됨 등. | open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (최대 2000개 함수) glibc는 POSIX/SUS 호환을 목적으로 함, uClibc는 임베디드 시스템을 대상으로 함, bionic은 안드로이드용으로 개발됨 등. | open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (최대 2000개 함수) glibc는 POSIX/SUS 호환을 목적으로 함, uClibc는 임베디드 시스템을 대상으로 함, bionic은 안드로이드용으로 개발됨 등. |
| 커널 모드 | 리눅스 커널 | stat, splice, dup, read, open, Ioctl, write, mmap, close, exit 등. (약 380개 시스템 호출) 리눅스 커널 시스템 호출 인터페이스(System Call Interface, SCI는 POSIX/SUS 호환을 목표로 함) | stat, splice, dup, read, open, Ioctl, write, mmap, close, exit 등. (약 380개 시스템 호출) 리눅스 커널 시스템 호출 인터페이스(System Call Interface, SCI는 POSIX/SUS 호환을 목표로 함) | stat, splice, dup, read, open, Ioctl, write, mmap, close, exit 등. (약 380개 시스템 호출) 리눅스 커널 시스템 호출 인터페이스(System Call Interface, SCI는 POSIX/SUS 호환을 목표로 함) | stat, splice, dup, read, open, Ioctl, write, mmap, close, exit 등. (약 380개 시스템 호출) 리눅스 커널 시스템 호출 인터페이스(System Call Interface, SCI는 POSIX/SUS 호환을 목표로 함) | stat, splice, dup, read, open, Ioctl, write, mmap, close, exit 등. (약 380개 시스템 호출) 리눅스 커널 시스템 호출 인터페이스(System Call Interface, SCI는 POSIX/SUS 호환을 목표로 함) |
| 커널 모드 | 리눅스 커널 | 프로세스 스케줄링 하위 시스템 | IPC 하위 시스템 | 메모리 관리 하위 시스템 | 가상 파일 하위 시스템 | 네트워크 하위 시스템 |
| 커널 모드 | 리눅스 커널 | 기타 구성 요소: ALSA, DRI, evdev, LVM, 장치 매퍼, 리눅스 네트워크 스케줄러, 넷필터 리눅스 보안 모듈: SELinux, TOMOYO, 앱아머, 스맥 | 기타 구성 요소: ALSA, DRI, evdev, LVM, 장치 매퍼, 리눅스 네트워크 스케줄러, 넷필터 리눅스 보안 모듈: SELinux, TOMOYO, 앱아머, 스맥 | 기타 구성 요소: ALSA, DRI, evdev, LVM, 장치 매퍼, 리눅스 네트워크 스케줄러, 넷필터 리눅스 보안 모듈: SELinux, TOMOYO, 앱아머, 스맥 | 기타 구성 요소: ALSA, DRI, evdev, LVM, 장치 매퍼, 리눅스 네트워크 스케줄러, 넷필터 리눅스 보안 모듈: SELinux, TOMOYO, 앱아머, 스맥 | 기타 구성 요소: ALSA, DRI, evdev, LVM, 장치 매퍼, 리눅스 네트워크 스케줄러, 넷필터 리눅스 보안 모듈: SELinux, TOMOYO, 앱아머, 스맥 |
하드웨어 (CPU, 주 메모리, 데이터 기억 장치 등)