반응형
🗂️ 커널이란 무엇인가
운영체제(OS)의 핵심이자 가장 아래 계층, 하드웨어와 소프트웨어 사이를 중계하고 시스템 전체 자원을 통제한다.
주요 역할
1) 메모리 관리
커널은 시스템 RAM을 어떤 프로세스가 얼마나 사용할지 통제한다.
- 각 프로세스가 사용할 메모리 영역을 분리
- 물리 메모리 부족 시 스왑 사용 결정
- 캐시/버퍼 메모리 관리
- 페이지 폴트 처리
- 한 프로세스가 다른 프로세스 메모리를 침범하지 못하도록 메모리 보호
❗메모리 사용량이 너무 높은 앱이 있어도, 커널이 메모리 충돌을 막아 시스템 전체가 죽지 않도록 관리한다.
❗메모리가 고갈되면 OOM Killer가 비효율적인 프로세스를 강제로 종료해 시스템 유지를 우선한다.
2) CPU 스케줄링
CPU는 한 번에 하나의 명령만 실행할 수 있다. 커널은 수백~수천 개의 프로세스가 있을 때 누구를 먼저 실행할지 결정한다.
- 프로세스 우선순위 관리
- 타임슬라이스 분배
- 멀티코어 사용 최적화
- 대기/실행/중지 상태 전환
커널이 제대로 CPU 스케줄링을 하지 못하면, 다음과 같은 증상이 나타난다.
- 시스템 전체 렉, 키보드와 마우스 입력 지연
- 특정 프로세스만 과하게 CPU를 쓰는 현상
3) 프로세스/스레드 관리
프로그램 자체는 실행의 대상이 아니다. 커널이 프로그램을 프로세스로 띄워서 자원을 할당해야 실행된다.
- 프로세스 생성/종료
- 스레드 관리
- 프로세스 간 통신 관리: pipe, shared memory 등
- context switching(실행 중인 프로세스를 교체)
- fork/exec 수행
❗여러 프로그램이 동시에 실행되는 것처럼 보인다.
❗병렬 연산 및 백그라운드 기능이 가능해진다.
4) I/O·디바이스 통제 및 파일 시스템
커널은 모든 입출력 장치를 통제한다.
- 디바이스 드라이버 로드
- 파일 시스템 접근 관리
- 블록 I/O 스케줄링
- 버퍼링 및 캐싱
- 데이터 손상 방지
❗프로그램은 하드웨어에 위험하기 때문에 직접 접근하지 못한다.
❗커널이 중간에서 안전하게 제어하고 결과만 전달한다.
5) 보안·권한·시스템콜 제공
커널은 시스템의 최종 권한 관문 역할을 수행한다.
- 사용자/프로세스의 권한 레벨 검사
- root 권한 관리
- SELinux/AppArmor 정책 적용
- 네임스페이스 같은 경리 기능
- 시스템콜 제공: `open()', `read()', `fork()' 같은 OS 기능 API
❗앱은 커널이 허가해야만 하드웨어·파일·네트워크에 접근할 수 있다.
❗그래서 커널의 보안 취약점 = 시스템 전체 치명적 위험이다.
🗂️ 커널 업데이트
OS가 커널을 새 버전으로 교체하거나 패치하는 것
목적
- 보안 취약점 패치
- 버그 수정
- 성능 개선
- 새로운 하드웨어 지원
- 새로운 기능 추가
업데이트 방식
- 배포판 패키지 업데이트(예: `apt upgrade`, `yum update`)
- 커널 직접 컴파일
- 공급사 전용 툴