운영체제는 커널과 인터페이스로 구성되어 있다.
커널
운영체제의 핵심 기능을 구현한 프로그램.
- 프로세스 관리, 메모리 관리, 저장장치 관리 등의 기능.
- 운영체제의 성능은 커널이 좌우한다.
유닉스 계열 커널
- 빠르고 안정적이다.
- 사용자 인터페이스는 보잘것 없다.
- 주로 문자로 명령을 내린다.
- 셸 sh
- Mac OS 도 유닉스 커널을 사용한다.
윈도우 계열 커널
- 윈도우에도 MS-DOS 가 사용했던 문자 기반 인터페이스가 남아있다.
- 명령 프롬프트 cmd
인터페이스
커널에 명령을 전달하고 실행 결과를 사용자와 응용 프로그램에 돌려준다.
시스템 호출
커널이 자신을 보호하기 위해 만든 인터페이스.
- 커널은 컴퓨터 자원을 보호하기 위해 사용자나 응용 프로그램의 직접 접근을 차단한다.
- 대신 함수 형태의 시스템 호출 인터페이스를 이용하여 접근해야 한다.
- 사용자가 자발적으로 커널 영역에 진입할 수 있는 유일한 수단.
응용 프로그램 인터페이스 API
응용 프로그램이 자신과 연관된 프로그램을 개발할 수 있도록 제공하는 인터페이스.
- 예) 구글 맵을 이용해 배달 서비스를 개발하려면 구글이 제공하는 다양한 함수를 사용해야 한다.
- 이 함수 집합이 API
시스템 개발자용 키트 SDK
프로그램 개발자를 위해 API 및 API 메뉴얼, 코드 편집기, 에뮬레이터 같은 각종 개발용 응용 프로그램까지 하나로 묶어서 배포하는 개발 툴.
- 예) 비주얼 스튜디오, 안드로이드 스튜디오.
디바이스 드라이버
커널과 하드웨어의 인터페이스.
- 주변 장치와 데이터를 주고 받는 표준 방식을 정하고 있다.
- 그래서 꽂기만 하면 바로 사용 가능.
- 일반 인터페이스와 달리 커널 제공 드라이버(인터페이스)와 하드웨어 제작자 제공 드라이버도 존재한다.
- 성능 향상이나 편리성을 위해 표준 외 기능을 수행한다면, 장치 제작자가 디바이스 드라이버를 따로 준비한다.
- 예 ) 그래픽 카드, 프린터, 타블렛.
커널의 역할
핵심 기능 | 설명 |
(주요) 프로세스 관리 | 프로세스에 CPU를 배분하고 작업에 필요한 제반환경을 제공. |
메모리 관리 | 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상 공간을 제공. |
입출력 관리 | 필요한 입력과 출력 서비스를 제공. (키보드, 마우스 같은 주변 장치) |
프로세스간 통신 관리 | 공동 작업을 위한 각 프로세스간 통신 환경을 지원. |
커널의 종류
단일형 구조 커널
초창기 운영체제 구조, 커널의 핵심 기능을 구현하는 모듈이 구분없이 하나로만 구성되어 있다. 예) MS-DOS, VMS, 초기 유닉스.
- 함수를 거의 사용하지 않고 main() 에 모든 기능을 구현한 형태.
장점
- 모듈이 거의 분리되지 않아 모듈 간의 통신 비용이 줄어든다.
- 효율적인 운영 가능.
단점
- 모든 모듈이 하나로 묶여 있어 버그나 오류 처리가 어렵다.
- 여러 기능이 서로 연결되어 상호 의존성이 높아 기능상의 작은 결함이 시스템 전체로 확산될 수 있다.
- 단일형 구조는 수정이 어려워 다양한 환경의 시스템에 적용하기 어렵다. 이식성이 낮다.
- 현대의 운영체제는 매우 크고 복잡하여 완전한 단일형 구조 운영체제를 구현하기 어렵다.
계층형 구조 커널
비슷한 기능을 가진 모듈을 묶어 하나의 계층을 만들고 계층 간의 통신을 통해 운영체제를 구현하는 방식.
장점
- 비슷한 기능을 모아 모듈화해 단일형 구조보다 버그나 오류를 쉽게 처리할 수 있다.
- 해당 계층만 따로 수정하면 되어 디버깅이 쉽다.
- 윈도우를 비롯한 오늘날의 운영체제 대부분이 이 구조를 가지고 있다.
마이크로 구조 커널
계층형과는 반대로 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공한다.
- 운영체제의 많은 부분이 사용자 영역에 구현되어 있다.
- 각 모듈은 세분화되어 존재하며, 모듈간의 정보 교환은 프로세스 간 통신으로 이루어진다.
- 각 모듈은 독립적으로 작동한다.
장점
- 하나의 모듈이 실패해도 전체 운영체제가 멈추지 않는다.
- 커널 이식이 쉽고 가벼워 CPU 용량이 작은 시스템에도 적용이 가능하다.
- 예) 마하 운영체제 → OS X 와 iOS 의 커널.
가상머신 VM
응용 프로그램의 호환성을 위해 운영체제와 응용 프로그램 사이에서 작동하는 프로그램.
- C 언어는 윈도우처럼 유닉스와 다른 커널을 가진 운영체제와의 호환성이 떨어진다.
- 한 쪽에서 만든 소스코드가 다른 운영체제에서는 동작하지 않는다.
- 자바는 JVM을 이용해 가상 머신 위에 응용 프로그램이 동작해 모두 동일한 환경에서 작동한다.
응용
- 윈도우에서 유닉스를 사용하고 싶을 때.
- 두 운영체제를 같이 설치한다면 부팅할 때 어떤 운영체제를 사용할지 선택해야 한다.
- 하지만 유닉스는 가끔만 사용한다면 두 가지를 다 설치하기 좀 부담스럽다.
- 윈도우 운영체제에 유닉스 가상 머신을 설치해 사용하자!
장점
- 호환성이 높아진다.
단점
- 응용 프로그램이 가상머신을 통해서만 작동해 느려진다.
728x90
'개발공부 개발새발 > OS' 카테고리의 다른 글
OS ) 시스템콜, 코루틴, 그리고 이벤트 루프란? (0) | 2024.10.29 |
---|---|
OS ) CPU와 메모리 (0) | 2023.11.02 |
OS ) 컴퓨터의 기본 구성 (1) | 2023.10.23 |
OS ) 운영체제의 발전 (1) | 2023.10.22 |
OS ) 운영체제 소개 (0) | 2023.10.21 |