사용자 공간
개요

이와 비슷한 용어로 유저랜드(userland)가 있는데 이는 사용자 공간에서 실행하는 모든 응용 소프트웨어를 가리킨다. 유저랜드는 일반적으로 운영 체제가 커널과 상호 작용하기 위해 사용하는 다양한 프로그램과 라이브러리를 가리킨다. 여기에는 입출력을 수행하고 파일 시스템 오브젝트를 처리하는 소프트웨어를 아우른다.
개별 사용자 공간 프로세스는 일반적으로 저만의 가상 메모리 공간에서 실행되며, 분명히 요청되지 않을 경우 다른 프로세스의 메모리에 접근할 수 없다. 이는 오늘날의 주류 운영 체제에서 제공되는 메모리 보호 기능의 토대이자 권한 분리를 위한 구성 요소이다. 권한에 따라 프로세스들은 디버거와 같이 커널에 다른 프로세스의 메모리 공간의 일부를 커널 자체에 매핑하도록 요청할 수 있다. 프로그램들은 다른 프로세스와의 공유 메모리 공간을 요청할 수도 있다.
실험적인 운영 체제에서 제공되는 또 다른 접근 방식으로는 모든 소프트웨어 대해 단일 주소 공간을 소유하는 것으로, 프로그래밍 언어의 기계어에 의지함으로써 메모리가 독단적으로 접근하지 못하게 미연에 방지한다. 이는 응용 프로그램들이 단순히 접근이 허가되지 않은 오브젝트에 대한 어떠한 참조를 회득할 수 없게 한다. 이러한 접근 방식은 JXOS, Unununium, 마이크로소프트의 싱귤래리티 연구 프로젝트에 추가되어 있다.
| 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, 주 메모리, 데이터 기억 장치 등)