쉽게 배우는 운영체제를 읽고 스스로 이해하기 위해 정리한 내용입니다.
Operating System
이라고 일컫는 운영체제는 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 일종의 소프트웨어이다.
우리가 가장 흔하게 접하는 os로는 Window, MAC OS, Unix, Linux, Android, iOS 등이 있다.
TV, 내비게이션 등에도 설치되는 OS는 CPU 성능이 낮고 메모리 크기도 작은 시스템에 내장하도록 만들었기에 임베디드 운영체제 혹은 임베디드 시스템이라고 부른다. 임베디드 시스템이 내장된 기계는 OS를 통해 기능을 향상시킬 수 있다.
뿐만 아니라 OS는 사용자가 직접 자원에 접근하는 것을 막아 자원을 보호하고 관리한다. 여기서 말하는 자원은 컴퓨터에 부착된 모든 장치를 말하며 CPU, 메모리, 키보드, 마우스 등이 있다.
OS는 사용자의 직접 접근을 막는 대신 인터페이스를 제공해 컴퓨터를 사용할 수 있게끔 돕고 있다.
정리해보자면 OS의 역할은 다음과 같다.
[운영체제의 역할]
자원 관리
: 여러 응용 프로그램이 자원을 요청하면 적절한 순서로 배분하고 회수하여 자원을 효율적으로 관리한다.
=> 효율성
자원 보호
: CPU, 메모리 등에 대한 사용자와 응용 프로그램의 직접 접근을 막는다.
=> 안정성
하드웨어 인터페이스 제공
: 다양한 제조사, 각기 다른 구성으로 되어있는 마우스, 키보드 등을 복잡한 과정없이 사용할 수 있도록 하드웨어 인터페이스를 제공한다. 일부 하드웨어는 직접 드라이버(=하드웨어 인터페이스)를 설치해야한다.
=> 확장성
소프트웨어 인터페이스 제공
: 사용자가 운영체제를 편리하게 사용하기 위해 제공되는 것으로, 대부분의 작업을 마우스로 수행하거나 스마트폰의 터치스크린 등을 통해 제공되는 기능을 말한다.
=> 편리성
자원관리, 자원보호, 하드웨어 / 소프트웨어 인터페이스 제공을 하는 운영체제는 효율성, 안정성, 확장성, 편리성을 목표로 하고 있다.
운영체제는 크게 커널과 인터페이스
, 두 부분으로 나뉜다.
커널 Kernel
은 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 핵심적인 기능을 한다. 운영체제의 성능은 커널이 좌우하는데, 이 커널 내부에는 시스템 호출와 드라이버
가 있다.
시스템 호출
시스템 호출 system call
은 커널이 자신을 보호하기 위해 만든 인터페이스이다. 커널은 자원에 대한 직접 접근을 차단하기 때문에 자원을 이용하기 위한 시스템 호출이라는 인터페이스를 필요로 한다.
예를 들어 응용 프로그램이 하드디스크에 데이터를 저장하려고 한다면, 직접 하드디스크의 특정 위치에 데이터를 저장하는 것이 아니라 커널을 통해 데이터 저장을 요청하게 된다.
드라이버
드라이버 driver
는 시스템 호출과 달리 응용 프로그램이 아닌, 하드웨어의 인터페이스 역할을 한다. 커널 내부의 드라이버는 간단한 입출력 정도의 입력만 제작하고 개별 하드웨어의 특성을 반영한 소프트웨어(디바이스 드라이버)는 추가적인 드라이버와 함께 실행되도록 한다.
운영체제의 구조를 도식화한 것을 보면 시스템 호출은 커널의 전체를 감싸고 있는 반면에, 드라이버는 일부를 감싸고 있다.
인터페이스는 반드시 시스템 호출을 통해 커널에 접근할 수 있고, 드라이버는 디바이스 드라이버와 함께 동작하기 때문에 이와 같이 표현한 것이다.
시스템 호출과 드라이버로 구성된 커널은 다음과 같은 역할을 한다.
[커널의 역할]
프로세스 관리
: 프로세스에 CPU를 배분하고 작업에 필요한 환경을 제공한다.
메모리 관리
: 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다.
파일 시스템 관리
: 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다.
입출력 관리
: 필요한 입력과 출력 서비스를 제공한다.
프로세스 간 통신 관리
: 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다.
이 기능들의 구현 방식에 따라 단일형 구조 커널, 계층형 구조 커널, 마이크로 구조 커널로 구분된다.
단일형 구조 커널 monolithic architecture
은 초창기 운영체제 구조로, 기능들이 단일의 모듈로 구성되어 있다. 대표적인 예로는 MS-DOS, VMS, 초기의 Unix 운영체제가 있다.
단일형 구조 커널은 아래와 같은 장단점이 있다.
[장점]
[단점]
계층형 구조 커널 layered architecture
은 단일형 구조 커널의 발전된 형태로 비슷한 기능의 모듈을 하나의 계층으로 묶어 계층 간의 통신을 통해 운영체제를 구현한다. Window를 비롯한 현대의 운영체제는 대부분 이 구조로 구성되어 있다.
계층형 구조 커널은 버그나 오류가 생길 경우 해당 계층만 수정하면 되기 때문에 디버깅이 쉽다는 장점이 있다.
마이크로 구조 커널 micro architecture
은 계층형 구조의 접근 방식과 반대로 개발된 커널로 가장 기본적인 기능만 제공하고 있다. 다른 커널과 달리 많은 기능이 사용자 영역에 구현되어 있으며, 각 모듈 간의 정보 교환은 프로세스 간 통신을 통해 이루어지고 있다. 애플의 OS X와 iOS의 커널로 사용된 마하(Mach)가 대표적인 예이다.
각 모듈이 독립적으로 작동하기 때문에 하나의 모듈에 문제가 있어도 전체 운영체제가 멈추지 않는다는 장점이 있다. 또한 커널이 가벼워 CPU 용량이 작은 시스템에도 적용이 가능하다.
운영체제는 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리한다. 커널과 인터페이스로 구성되어 있으며, 커널은 system call과 driver를 통해 응용 프로그램, 하드웨어가 자원에 접근할 수 있도록 한다.