Kernel
OS Service 도식화
- 커널
: OS의 핵심 프로그램으로 각종 프로그램 실행 및 서비스 제공을 위한 중추. OS 가장 밑단에서 작동되며, 프로세스 제어 및 자원 할당, 메모리 제어, 시스템 콜 등을 수행하는 영역.
1. Monolithic Kernel
- 단일형 커널
- I/O, Network, Device Drive 등 OS 관련 기능을 커널 모드에서 동작하도록 메모리에 적재, 실행하는 기법
- 적재된 메모리주소 간의 오버헤드가 적어 커뮤니케이션/통신에서 유리
2. Micro Kernel
- OS 관련 기능 중 일부를 커널 공간에서 독립적으로 수행하도록 분리시키는 기법
- 분리된 기능은 해당 역할 수행이 가능하도록 서버를 구축하여 동작하고 있음.
- 서버를 추가하면 다른 기능도 추가가 가능하므로 시스템을 더욱 견고하게 만들 수 있음.
3. Dual Mode
- 목적 : 사용자 OS 및 타 프로세스 보호
- 사용자와 OS는 시스템 자원을 공유하기 때문에 이에 대한 규제가 필요함.
- 2가지 모드(User, Kernel)를 번갈아가며 실행
* 프로그램 실행 시 메모리영역은 User Address Space 및 Kernel Address Space로 분리됨.
1) Kernel mode (Supervisor / Protected Mode)
: 시스템 전체 접근 권한 보유, 모든 CPU 명령 실행
2) User mode
: 할당된 메모리 영역 외의 타 프로세스 혹은 kernel 메모리 영역에 침입 불가. → raise Exception
(단적인 예시로, exe 파일의 어셈블리어를 직접 수정하여 프로그램 내부를 침투하거나 치명상을 입힐 수 있음. 이를 대비하여 User mode를 설정함으로써 범위를 초과하여 접근을 시도할 경우 Exception을 호출함.)
- User mode → Kernel mode
1) 시스템콜 함수 호출(ex. open, close, read, write)
※ 표준 라이브러리 함수 / 시스템콜 함수 차이점 : 커널 영역 진입 여부
2) Interrupt Handler 실행
(ex) 오류 발생 시 Exception 호출 → Interrupt Handler 실행 → Kernel mode로 진입하여 프로세스 kill