- 운영 체제는 커널과 인터페이스로 구성
커널(kernel) : 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심기능을 구현한 프로그램
인터페이스(interface) : 사용자와 응용프로그램에 인접하여 커널에 명령 전달하고 실행 결과를 리턴
- 운영 체제는 크게 유닉스 계열 커널과 윈도우 계열 커널로 구분
유닉스 커널
- 과거 대형 컴퓨터에서 이용
- 빠르고 안정적
- Shell 이라는 사용자 인터페이스 사용 → 문자로 명령어 입력
윈도우 커널
- 그래픽 사용자 인터페이스(GUI) 기반
- 문자 기반의 사용자 인터페이스 cmd 사용가능
시스템 호출과 디바이스 드라이버
- 시스템 호출
- 사용자나 응용 프로그램은 시스템 호출이라는 인터페이스를 통해 커널에 접근
- 시스템 호출은 커널이 제공하는 시스템 자원을 사용하기 위한 함수
- 응용 프로그램이 하드웨어 자원에 접근하거나 운영체제가 제공하는 서비스를 이용하려면 시스템 호출 사용
- 운영체제는 커널이 제공하는 서비스를 시스템 호출로 제한
- 사용자가 자발적으로 커널 영역에 진입할 수 있는 유일한 수단
- 응용 프로그램 인터페이스(API)
- 응용 프로그램이 자신과 연관된 프로그램을 개발할 수 있도록 제공하는 인터페이스.
- 운영체제에서 제공하는 함수를 이용하여 응용프로그램을 만든다는 것은 운영체제가 제공하는 API인 시스템 호출을 사용한다는 의미
- 시스템 개발자용 키트 (SDK)
- API 및 API 매뉴얼뿐 아니라 프로그램 개발에 필요한 코드 편집기와 에뮬레이터 같은 각종 개발용 프로그램을 포함
시스템 호출은 자원을 어떻게 보호 할까?
- 두개의 응용프로그램이 하드디스크에 데이터를 저장하고 싶다고 가정
- 직접 호출 : 응용 프로그램이 둘다 하드디스크에 접근해서 데이터를 저장하는 경우, 다른 프로그램이 저장한 데이터를 지울 수도 있고, 내 데이터가 다른 프로그램에 의해 지워질 수 있음
- 시스템 호출 : 커널이 전적으로 데이터 저장을 책임지기 때문에 직접호출시 발생할 수 있는 문제 해결 가능
- 디바이스 드라이버
- 디바이스 드라이버 : 하드웨어의 인터페이스
- 표준방식에 맞는 주변장치는 컴퓨터와 연결시 바로 작동 가능 하지만, 표준외의 기능을 수행하는 경우, 사용자가 디바이스 드라이버를 설치해야함
- 디바이스 드라이버를 설치해야 하는 경우 : 그래픽 카드, 프린터 등
- 커널의 역할과 종류
3-1. 커널의 역할
프로세스 관리 : 다양한 프로세스에 CPU를 배분하고 작업할 수 있는 환경 구성
메모리 관리 : 프로세스를 메모리에 배치하고, 실제 메모리보다 큰 가상공간을 제공
파일 시스템 관리 : 데이터를 저장하고 접근할 수 있는 인터페이스 제공
입출력 관리 : 필요한 입력과 출력 서비스 제공
프로세스 간 통신 관리 : 공동 작업을 위한 프로세스 간 통신 환경 지원
3-2. 커널의 종류
단일형 구조 커널 : 모듈의 구분 없이 핵심기능이 하나의 메인함수에 있는 형태
- 장점 : 모듈간의 통신비용이 줄어들어 효율적인 운영 가능(속도 빠름)
- 단점
1) 버그나 오류를 처리하기 어려움
2) 여러 기능의 상호 의존성 증가
3) 수정이 어려워 이식성이 낮음
4) 운영체제의 기능이 다양해짐에 따라 단일형 구조를 가지기 어려움
계층형 구조 커널
: 비슷한 기능을 가진 모듈을 묶어 하나의 계층으로 만들고 계층간 통신을 통해 운영체제 구현
- 오늘날의 운영체제 구조
- 디버깅 및 수정이 쉬움
마이크로 구조 커널
: 커널의 크기가 계속 커지고 방대해짐에 따라 프로세스 관리, 메모리 관리, 프로세스 간 통신관리 등 가장 기본적인 기능만 제공하는 형태
- 각 모듈은 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 전체 운영체제에는 문제가 없음
- 가장 기본적인 기능만을 제공하기 때문에 CPU 용량이 작은 시스템에도 적용 가능
- 애플의 PC 운영체제 OS X와 모바일 운영체지 iOS의 커널로 사용