커널과 인터페이스



커널

프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것
운영체제의 성능은 커널이 좌우함


운영체제는 크게 두 부분으로 나뉨

이미지의 출처는 구글 이미지 검색에서 가져왔음을 밝힙니다.



시스템 호출과 디바이스 드라이버


시스템 호출

커널이 자신을 보호하기 위한 인터페이스
커널이 제공하는 시스템 관련 서비스를 모아놓은 것(함수형태로 제공)
사용자나 응용 프로그램으로부터 컴퓨터의 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단



API?

응용프로그램이 자신과 연관된 프로그램을 만들 수 있도록 제공하는 인터페이스


SDK?

프로그램 개발자를 위해 API 및 API 사용메뉴얼 뿐만아니라 프로그램 개발에 필요한 코드 편집기와 에뮬레이터 같은 각종 개발용 응용 프로그램까지 하나로 묶어서 배포하는 개발 툴



드라이버

커널과 하드웨어의 인터페이스를 담당
마우스, 키보드와 같이 복잡하지 않은 디바이스 드라이버는 커널에 포함되어 있지만, 크래픽카드, 프린터와 같이 크기가 크고 복잡한 디바이스 드라이버는 사용자가 직접 설치해야함




커널의 구성

핵심 기능 설명
프로세스 관리 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공
메모리 관리 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공
파일 시스템 관리 데이터를 저장하고 접근할 수 있는 인터페이스를 제공
입출력 관리 필요한 입력과 출력 서비스를 제공
프로세스 간 통신 관리 공동 작업을 위한 각 프로세스 간 통신 환경을 지원

단일형 구조 커널

초창기의 운영체제 구조
구분 없이 핵심 기능을 하나로 구성
MS-DOS, VMS, 초기의 운영체제들이 대표적

장점

모듈이 거의 분리되지 않았기 때문에 모듈 간의 통신 비용이 줄어들어 효율적인 운영이 가능

단점

모듈이 하나로 묶여있기 때문에 버그나 오류를 처리하기 어려움
상호 의존성이 높기 때문에 기능상의 작은 결함이 시스템의 전체로 확산될 위험
다양한 환경의 시스템에 적용이 어려움



계층형 구조 커널

단일형 구조 커널이 발전된 커널
비슷한 모듈을 묶어서 하나의 계층으로 만들고 계층 간의 통신을 통해 운영체제의 구현하는 방식
모듈화로 인해 버그 및 오류를 쉽게 처리가 가능
마이크로소프트의 윈도우를 비롯한 운영체제는 대부분 이 구조로 이루어짐



마이크로 구조 커널

프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공
사용자 영역에 많은 부분이 구현되어 있음
각 모듈은 세분화되어 존재하며 모듈 간의 정보 교환은 프로세스 간 통신을 통해 이루어짐
각 모듈은 독립적으로 작동하기 때문에 하나의 모듈이 실패해도 전체 운영체제가 멈추지 않는다.
커널이 가벼워, CPU 용량이 작은 시스템에도 적용이 가능