사용자 공간
전통적인 컴퓨터 운영 체제는 일반적으로 가상 메모리를 커널 공간과 사용자 공간으로 분리시킨다. 커널 공간은 커널, 커널 확장 기능, 대부분의 장치 드라이버를 실행하기 위한 예비 공간이다. 반면 사용자 공간은 모든 사용자 모드 응용 프로그램들이 동작하는 메모리 영역으로, 이 메모리는 필요할 때 페이징 처리될 수 있다.
개요
이와 비슷한 용어로 유저랜드(userland)가 있는데 이는 사용자 공간에서 실행하는 모든 응용 소프트웨어를 가리킨다.[1] 유저랜드는 일반적으로 운영 체제가 커널과 상호 작용하기 위해 사용하는 다양한 프로그램과 라이브러리를 가리킨다. 여기에는 입출력을 수행하고 파일 시스템 오브젝트를 처리하는 소프트웨어를 아우른다.
개별 사용자 공간 프로세스는 일반적으로 저만의 가상 메모리 공간에서 실행되며, 분명히 요청되지 않을 경우 다른 프로세스의 메모리에 접근할 수 없다. 이는 오늘날의 주류 운영 체제에서 제공되는 메모리 보호 기능의 토대이자 권한 분리를 위한 구성 요소이다. 권한에 따라 프로세스들은 디버거와 같이 커널에 다른 프로세스의 메모리 공간의 일부를 커널 자체에 매핑하도록 요청할 수 있다. 프로그램들은 다른 프로세스와의 공유 메모리 공간을 요청할 수도 있다.
실험적인 운영 체제에서 제공되는 또 다른 접근 방식으로는 모든 소프트웨어 대해 단일 주소 공간을 소유하는 것으로, 프로그래밍 언어의 기계어에 의지함으로써 메모리가 독단적으로 접근하지 못하게 미연에 방지한다. 이는 응용 프로그램들이 단순히 접근이 허가되지 않은 오브젝트에 대한 어떠한 참조를 회득할 수 없게 한다.[2] 이러한 접근 방식은 JXOS, Unununium, 마이크로소프트의 싱귤래리티 연구 프로젝트에 추가되어 있다.
| 사용자 모드 | 사용자 애플리케이션 | 예: bash, 리브레오피스, 김프, 블렌더, 0 A.D., 모질라 파이어폭스 등. | ||||
|---|---|---|---|---|---|---|
| 저수준 시스템 구성 요소: | 시스템 데몬: systemd, runit, logind, networkd, PulseAudio, ... |
윈도 시스템: X11, Wayland, SurfaceFlinger (안드로이드) |
기타 라이브러리: GTK+, Qt, EFL, SDL, SFML, FLTK, 그누스텝 등. |
그래픽스: 메사, AMD 카탈리스트, ... | ||
| C 표준 라이브러리 | 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 호환을 목표로 함) | ||||
| 프로세스 스케줄링 하위 시스템 |
IPC 하위 시스템 |
메모리 관리 하위 시스템 |
가상 파일 하위 시스템 |
네트워크 하위 시스템 | ||
| 기타 구성 요소: ALSA, DRI, evdev, LVM, 장치 매퍼, 리눅스 네트워크 스케줄러, 넷필터 리눅스 보안 모듈: SELinux, TOMOYO, 앱아머, 스맥 | ||||||
| 하드웨어 (CPU, 주 메모리, 데이터 기억 장치 등) | ||||||
같이 보기
각주
- ↑ “userland, n.”. 《The Jargon File》. Eric S. Raymond. 2010년 4월 30일에 확인함.
- ↑ “What kind of kernel does Unununium have?”. 2019년 10월 30일에 원본 문서에서 보존된 문서. 2012년 10월 14일에 확인함.
| 파일:LampFlowchart.svg | 이 글은 컴퓨터 과학에 관한 토막글입니다. 여러분의 지식으로 알차게 문서를 완성해 갑시다. |
- 위키데이터 속성 P18을 사용하는 문서
- 위키데이터 속성 P41을 사용하는 문서
- 위키데이터 속성 P94를 사용하는 문서
- 위키데이터 속성 P117을 사용하는 문서
- 위키데이터 속성 P154를 사용하는 문서
- 위키데이터 속성 P213을 사용하는 문서
- 위키데이터 속성 P227을 사용하는 문서
- 위키데이터 속성 P242를 사용하는 문서
- 위키데이터 속성 P244를 사용하는 문서
- 위키데이터 속성 P245를 사용하는 문서
- 위키데이터 속성 P268을 사용하는 문서
- 위키데이터 속성 P269를 사용하는 문서
- 위키데이터 속성 P271을 사용하는 문서
- 위키데이터 속성 P347을 사용하는 문서
- 위키데이터 속성 P349를 사용하는 문서
- 위키데이터 속성 P350을 사용하는 문서
- 위키데이터 속성 P373을 사용하는 문서
- 위키데이터 속성 P380을 사용하는 문서
- 위키데이터 속성 P396을 사용하는 문서
- 위키데이터 속성 P409를 사용하는 문서
- 위키데이터 속성 P428을 사용하는 문서
- 위키데이터 속성 P434를 사용하는 문서
- 위키데이터 속성 P435를 사용하는 문서
- 위키데이터 속성 P436을 사용하는 문서
- 위키데이터 속성 P454를 사용하는 문서
- 위키데이터 속성 P496을 사용하는 문서
- 위키데이터 속성 P549를 사용하는 문서
- 위키데이터 속성 P650을 사용하는 문서
- 위키데이터 속성 P651을 사용하는 문서
- 위키데이터 속성 P691을 사용하는 문서
- 위키데이터 속성 P716을 사용하는 문서
- 위키데이터 속성 P781을 사용하는 문서
- 위키데이터 속성 P791을 사용하는 문서
- 위키데이터 속성 P864를 사용하는 문서
- 위키데이터 속성 P865를 사용하는 문서
- 위키데이터 속성 P886을 사용하는 문서
- 위키데이터 속성 P902를 사용하는 문서
- 위키데이터 속성 P906을 사용하는 문서
- 위키데이터 속성 P947을 사용하는 문서
- 위키데이터 속성 P950을 사용하는 문서
- 위키데이터 속성 P966을 사용하는 문서
- 위키데이터 속성 P982를 사용하는 문서
- 위키데이터 속성 P1003을 사용하는 문서
- 위키데이터 속성 P1004를 사용하는 문서
- 위키데이터 속성 P1005를 사용하는 문서
- 위키데이터 속성 P1006을 사용하는 문서
- 위키데이터 속성 P1015를 사용하는 문서
- 위키데이터 속성 P1045를 사용하는 문서
- 위키데이터 속성 P1048을 사용하는 문서
- 위키데이터 속성 P1053을 사용하는 문서
- 위키데이터 속성 P1146을 사용하는 문서
- 위키데이터 속성 P1153을 사용하는 문서
- 위키데이터 속성 P1157을 사용하는 문서
- 위키데이터 속성 P1186을 사용하는 문서
- 위키데이터 속성 P1225를 사용하는 문서
- 위키데이터 속성 P1248을 사용하는 문서
- 위키데이터 속성 P1273을 사용하는 문서
- 위키데이터 속성 P1315를 사용하는 문서
- 위키데이터 속성 P1323을 사용하는 문서
- 위키데이터 속성 P1330을 사용하는 문서
- 위키데이터 속성 P1362를 사용하는 문서
- 위키데이터 속성 P1368을 사용하는 문서
- 위키데이터 속성 P1375를 사용하는 문서
- 위키데이터 속성 P1407을 사용하는 문서
- 위키데이터 속성 P1556을 사용하는 문서
- 위키데이터 속성 P1584를 사용하는 문서
- 위키데이터 속성 P1695를 사용하는 문서
- 위키데이터 속성 P1707을 사용하는 문서
- 위키데이터 속성 P1736을 사용하는 문서
- 위키데이터 속성 P1886을 사용하는 문서
- 위키데이터 속성 P1890을 사용하는 문서
- 위키데이터 속성 P1907을 사용하는 문서
- 위키데이터 속성 P1908을 사용하는 문서
- 위키데이터 속성 P1960을 사용하는 문서
- 위키데이터 속성 P1986을 사용하는 문서
- 위키데이터 속성 P2041을 사용하는 문서
- 위키데이터 속성 P2163을 사용하는 문서
- 위키데이터 속성 P2174를 사용하는 문서
- 위키데이터 속성 P2268을 사용하는 문서
- 위키데이터 속성 P2349를 사용하는 문서
- 위키데이터 속성 P2418을 사용하는 문서
- 위키데이터 속성 P2456을 사용하는 문서
- 위키데이터 속성 P2484를 사용하는 문서
- 위키데이터 속성 P2558을 사용하는 문서
- 위키데이터 속성 P2750을 사용하는 문서
- 위키데이터 속성 P2980을 사용하는 문서
- 위키데이터 속성 P3223을 사용하는 문서
- 위키데이터 속성 P3233을 사용하는 문서
- 위키데이터 속성 P3348을 사용하는 문서
- 위키데이터 속성 P3372를 사용하는 문서
- 위키데이터 속성 P3407을 사용하는 문서
- 위키데이터 속성 P3430을 사용하는 문서
- 위키데이터 속성 P3544를 사용하는 문서
- 위키데이터 속성 P3562를 사용하는 문서
- 위키데이터 속성 P3563을 사용하는 문서
- 위키데이터 속성 P3601을 사용하는 문서
- 위키데이터 속성 P3723을 사용하는 문서
- 위키데이터 속성 P3788을 사용하는 문서
- 위키데이터 속성 P3829를 사용하는 문서
- 위키데이터 속성 P3863을 사용하는 문서
- 위키데이터 속성 P3920을 사용하는 문서
- 위키데이터 속성 P3993을 사용하는 문서
- 위키데이터 속성 P4038을 사용하는 문서
- 위키데이터 속성 P4055를 사용하는 문서
- 위키데이터 속성 P4114를 사용하는 문서
- 위키데이터 속성 P4143을 사용하는 문서
- 위키데이터 속성 P4186을 사용하는 문서
- 위키데이터 속성 P4423을 사용하는 문서
- 위키데이터 속성 P4457을 사용하는 문서
- 위키데이터 속성 P4534를 사용하는 문서
- 위키데이터 속성 P4535를 사용하는 문서
- 위키데이터 속성 P4581을 사용하는 문서
- 위키데이터 속성 P4613을 사용하는 문서
- 위키데이터 속성 P4955를 사용하는 문서
- 위키데이터 속성 P5034를 사용하는 문서
- 위키데이터 속성 P5226을 사용하는 문서
- 위키데이터 속성 P5288을 사용하는 문서
- 위키데이터 속성 P5302를 사용하는 문서
- 위키데이터 속성 P5321을 사용하는 문서
- 위키데이터 속성 P5368을 사용하는 문서
- 위키데이터 속성 P5504를 사용하는 문서
- 위키데이터 속성 P5587을 사용하는 문서
- 위키데이터 속성 P5736을 사용하는 문서
- 위키데이터 속성 P5818을 사용하는 문서
- 위키데이터 속성 P6213을 사용하는 문서
- 위키데이터 속성 P6734를 사용하는 문서
- 위키데이터 속성 P6792를 사용하는 문서
- 위키데이터 속성 P6804를 사용하는 문서
- 위키데이터 속성 P6829를 사용하는 문서
- 위키데이터 속성 P7293을 사용하는 문서
- 위키데이터 속성 P7303을 사용하는 문서
- 위키데이터 속성 P7314를 사용하는 문서
- 위키데이터 속성 P7902를 사용하는 문서
- 위키데이터 속성 P8034를 사용하는 문서
- 위키데이터 속성 P8189를 사용하는 문서
- 위키데이터 속성 P8381을 사용하는 문서
- 위키데이터 속성 P8671을 사용하는 문서
- 위키데이터 속성 P8980을 사용하는 문서
- 위키데이터 속성 P9070을 사용하는 문서
- 위키데이터 속성 P9692를 사용하는 문서
- 위키데이터 속성 P9725를 사용하는 문서
- 위키데이터 속성 P9984를 사용하는 문서
- 위키데이터 속성 P10020을 사용하는 문서
- 위키데이터 속성 P10299를 사용하는 문서
- 위키데이터 속성 P10608을 사용하는 문서
- 위키데이터 속성 P10832를 사용하는 문서
- 위키데이터 속성 P11249를 사용하는 문서
- 위키데이터 속성 P11646을 사용하는 문서
- 위키데이터 속성 P11729를 사용하는 문서
- 위키데이터 속성 P12204를 사용하는 문서
- 위키데이터 속성 P12362를 사용하는 문서
- 위키데이터 속성 P12754를 사용하는 문서
- 위키데이터 속성 P13049를 사용하는 문서
- 잘못된 파일 링크가 포함된 문서
- 컴퓨터 과학에 관한 토막글
- 모든 토막글 문서
- 운영체제 기술
- 장치 드라이버