커널
- OS의 심장 · 뇌 · 척수
- OS의 본질
- 커널 자체 = OS의 '인프라'
- 역할 : 뒤에서 무슨 일이 벌어지는지 은폐하면서도 편리한 인터페이스를 제공하는 것
- 커널 때문에 개발자는 하드웨어나 다른 애플리케이션에 끼치는 영향을 의식하지 않고 개발할 수 있음
- 커널을 통해 OS 처리가 이루어짐
커널의 6가지 역할
1) 시스템 콜 인터페이스 - 프로세스나 스레드로부터 명령을 받는 인터페이스
2) 프로세스 관리 - 가동되고 있는 프로세스 관리, CPU 이용 우선순위 등을 '스케줄'함
3) 메모리 관리 - 서버상의 메모리를 단위 크기의 블록으로 분할해서 프로세스에 분할
4) 네트워크 스택 - (나중)
5) 파일시스템 관리
6) 장치 드라이버 - NIC, HBA, 디스크 등의 물리 장치와 작업
1) 시스템 콜 인터페이스
- 프로세스/스레드에서 커널로 연결되는 인터페이스
- 애플리케이션이 OS를 통해 어떤 처리를 하고싶으면 '시스템 콜'이라는 명령을 이용해서 커널에 명령을 내림. 이때, 명령이 인터페이스를 통해 전달됨
≒ 은행의 접수 창구
- ex) 디스크상의 데이터를 읽고 싶을 때, 네트워크 통신을 하고 싶을 때, 새로운 프로세스를 생성하고 싶을 때
→ 해당 시스템 콜 호출 ⇒ 기능 이용
- 데이터 I/O와 네트워크 I/O 모두 프로세스 관점에서는 동일한 '시스템 콜'
2) 프로세스 관리
- OS의 가장 중요한 기능
- OS상에서는 수십 ~ 수천 개의 프로세스 가동 가능
- 물리서버 CPU 코어 제한적
⇒ 언제, 어떤 프로세스가 어느 정도의 CPU 코어를 이용할지, 처리 우선순위를 어떻게 결정할 것인지 등 관리
- 스케줄 관리
3) 메모리 관리
- 메모리 영역 관리
- 프로세스 관리는 CPU 코어 고려, 메모리 관리는 물리 메모리 공간의 최대치 고려
- 프로세스가 이용하는 독립 메모리 공간 확보
- 상호 간의 참조 영역을 지키기 위해 독립성 관리
- 이 기능이 없으면 각 프로세스는 다른 프로세스가 사용하고 있는 메모리 영역 범위를 파악해야함
4) 네트워크 스택 ··· (나중)
5) 파일시스템 관리
- 파일시스템용 인터페이스 제공
- 파일시스템 : OS 기능의 하나. 물리 디스크에 제공된 데이터를 관리
- 물리 디스크에 기록된 데이터 = 숫자의 집합 (ex. 01011110...)
→ 파일시스템을 통해 애플리케이션은 '파일' 단위로 데이터 작성/삭제
⇒ 프로세스/스레드는 모든 것을 '파일' 단위로 생각 (편리성)
= 프로세스는 물리 디스크 구조나 데이터 배치 상태를 의식할 필요 X
- 주요 관리 기능 : 디렉토리(폴더) 구조 제공, 액세스 관리, 고속화, 안정성 향상 등
6) 장치 드라이버
- 디스크나 NIC 등의 물리 장치용 인터페이스 제공
- ex) NIC · 디스크 ~ 다수의 제조사가 독자 제품 제공 → 각각에 대응하는 애플리케이션 개발 = 비현실적
커널은 장치 드라이버를 이용해서 그 아래의 물리 장치를 은폐
⇒ 각 장치 제조사가 OS에 대응하는 장치 드라이버를 제공 → 해당 OS의 표준 장치로서 커널을 경유해 이용
커널 설계 및 구현 방식
- 모놀리식(Monolithic) 커널 vs 마이크로(Micro) 커널

- 현재 대부분의 아키텍처는 양쪽의 '장점'을 취하고 있음
ex) 리눅스에서는 '커널 모듈'을 이용해서 기능 추가 가능 ⇒ 마이크로 커널의 특징도 포함 가능
출처 : 야마자키 야스시 외 3, 「그림으로 공부하는 IT 인프라 구조」, 제이펍