정의
애플리케이션은 “원하는 기능”을 수행하려면 파일을 열고, 네트워크로 보내고, 메모리를 쓰고, 스레드를 실행해야 합니다. 하지만 이런 자원은 시스템 전체가 공유하므로, 무분별한 접근을 허용하면 보안/안정성이 무너집니다. 커널은 이 자원을 권한 기반으로 통제하고, 프로세스 간 충돌을 막으며, 시스템을 지속적으로 동작하게 만듭니다.
“커널은 ‘기능’이 아니라 질서다.
여러 프로그램이 동시에 실행되는 환경에서 자원을 안전하게 나눠 쓰게 만든다.”
커널이 하는 일
- ✔️ 프로세스/스레드 관리: 생성/종료, 스케줄링, 컨텍스트 스위칭
- ✔️ 메모리 관리: 가상 메모리, 페이지, 보호(권한), 페이지 폴트 처리
- ✔️ 파일 시스템: 파일/디렉터리, 버퍼링, 캐시, 권한
- ✔️ 네트워크/I-O: 소켓, TCP/IP 스택, 장치 드라이버, 인터럽트
- ✔️ 보안/격리: 권한 검사, 프로세스 격리, 커널 보호(유저 영역 차단)
유저 영역과의 관계
파일 읽기/쓰기, 네트워크 송수신, 프로세스 생성 같은 작업은 권한이 필요한 행위입니다. 유저 영역은 커널 영역에 직접 접근할 수 없기 때문에, 시스템 콜을 통해 커널에 요청하고, 커널은 권한/유효성 검사 후 실제 작업을 수행합니다.
커널 구조
커널이 느려지는 대표 원인
- ✔️ I/O 폭증: 디스크/네트워크 작업이 많아 시스템 콜과 대기가 증가
- ✔️ 컨텍스트 스위칭 증가: 스레드 과다/락 경합 → 스케줄링 오버헤드
- ✔️ 페이지 폴트/스와핑: 메모리 부족 → 지연 급증(p95 튐)
- ✔️ 자원 고갈: FD 고갈, 포트 고갈, backlog/큐 포화 → 타임아웃/실패
💡 TIP / 실무 감각
“CPU 사용률은 낮은데 요청이 느리다”면 커널의 I/O 대기 또는 페이지 폴트 같은 신호를 의심할 만합니다. 커널은 일을 “대신” 해주지만, 그만큼 병목 지점도 될 수 있습니다.
실무 체크
- ✔️ 응답 지연(p95/p99)이 튀는데 CPU는 여유롭다 → I/O 대기/페이지 폴트 가능성
- ✔️ “Too many open files”, “Connection reset/timeout” 같은 에러가 늘었다
- ✔️ 스레드 수 급증/락 경합 증가 → 컨텍스트 스위칭/스케줄링 비용 증가
핵심 요약
✅ 핵심 요약
- ✔️ 커널은 OS의 핵심으로 자원(CPU/메모리/I-O)을 중재하고 시스템을 안정적으로 유지한다.
- ✔️ 유저 코드는 직접 커널 기능을 실행할 수 없고, 시스템 콜로 요청해 커널이 처리한다.
- ✔️ 커널 이슈는 대개 커널 자체보다 I/O 폭증/페이지 폴트/스레드 과다 같은 시스템 상태에서 발생한다.
- ✔️ 실무에서는 지연(p95), FD/네트워크 에러, 스레드/락 경합을 함께 보고 “어느 계층이 병목인지”를 판단한다.