정의
운영체제는 메모리를 크게 유저 영역(User Space)과 커널 영역(Kernel Space)으로 나눕니다. 유저 영역은 우리가 실행하는 애플리케이션 코드가 동작하는 공간이고, 커널 영역은 프로세스/메모리/파일/네트워크 같은 자원을 직접 관리하는 “OS의 핵심”이 동작하는 공간입니다.
“커널 영역은 ‘빠른 공간’이 아니라,
안전하게 자원을 중재하기 위한 ‘권한의 공간’이다.”
왜 분리하는가
애플리케이션(유저 영역)이 실수로 잘못된 메모리를 쓰거나, 악의적으로 시스템 자원에 접근하면 OS 전체가 불안정해질 수 있습니다. 그래서 OS는 커널을 “특권 모드”에서만 실행하게 하고, 유저 코드는 제한된 권한으로만 실행합니다.
커널이 하는 일
- ✔️ 프로세스/스레드 관리: 생성/종료, 스케줄링, 컨텍스트 스위칭
- ✔️ 메모리 관리: 가상 메모리, 페이지, 보호(권한), 페이지 폴트 처리
- ✔️ 파일 시스템: 파일/디렉터리, 권한, 캐시, 버퍼링
- ✔️ I/O 및 네트워크: 장치 드라이버, 소켓, 인터럽트 처리
유저 영역과 경계
유저 영역은 직접 커널 메모리에 접근할 수 없습니다. 파일 읽기, 네트워크 송수신 같은 작업은 “권한이 필요한 작업”이기 때문에 커널이 대신 수행해야 합니다. 그래서 유저 영역은 시스템 콜(system call)로 커널에 요청하고, 커널은 권한/유효성을 확인한 뒤 실제 작업을 수행합니다.
시스템 콜 흐름
실무 포인트
- ✔️ 컨텍스트 스위칭 증가: 스레드 과다/락 경합 → 스케줄링 오버헤드
- ✔️ 페이지 폴트: 메모리 부족/스와핑 → 지연 급증(p95 튐)
- ✔️ 파일 디스크립터 고갈: 소켓/파일 누수 → “Too many open files”
- ✔️ 네트워크 버퍼/큐: backlog, TIME_WAIT, retransmission → 타임아웃/지연
💡 TIP / 감각
“커널이 느리다”는 말은 대부분 커널이 일을 많이 하고 있다는 뜻입니다. 즉, 애플리케이션이 I/O를 많이 하거나(네트워크/디스크), 메모리가 부족하거나(페이지 폴트), 스레드/락이 과한 경우로 이어집니다.
핵심 요약
✅ 핵심 요약
- ✔️ 커널 영역은 OS 커널이 최고 권한으로 실행되는 보호된 메모리 영역이다.
- ✔️ 유저 영역은 직접 커널 자원에 접근할 수 없고, 시스템 콜로 커널에 요청한다.
- ✔️ 커널은 프로세스/메모리/파일/네트워크/I-O를 관리하며 보안·안정성을 제공한다.
- ✔️ 실무에서는 컨텍스트 스위칭, 페이지 폴트, FD 고갈, 네트워크 큐 같은 이슈가 커널 영역 문제로 연결된다.