우리가 흔히 접하는 윈도우, Mac OS, 안드로이드, iOS 등을 운영체제(OS)라고 한다.
그렇다면 운영체제란 무엇일까? 한 마디로 정의하면,
운영체제는 컴퓨터 자원을 효율적으로 관리하는 소프트웨어이다.
풀어서 얘기하자면,
컴퓨터에 설치된 다양한 프로그램을 CPU, 메모리, 키보드, 마우스 등의 컴퓨터 자원이 공유하게 된다.
특별한 관리 체계 없이 프로그램들이 각 자원을 차지하기 위해 충돌하며 컴퓨터가 고장하는 것을 방지하기 위해
컴퓨터 전체를 관리하고 운영하는 소프트웨어가 운영체제이다.
위와 같이 운영체제는 사용자로부터 컴퓨터 자원을 숨기며, 커널과 인터페이스로 이루어져 있다.
즉, 사용자가 직접 컴퓨터 자원에 접근하는 형태가 아닌 인터페이스를 통해 요청하면 운영체제가 컴퓨터 자원에 접근하는 형태이다. 이를 통해 운영체제는 아래와 같은 역할을 수행한다.
운영체제가 무엇인지 살펴봤고, 이제 운영체제가 어떤 환경에서 어떻게 발전해왔는지 살펴보자.
초기의 컴퓨터는 키보드, 마우스, 모니터 등의 주변장치 없이 여러 개의 진공관을 전선으로 연결하여 프로그램을 제작했다.
이를 하드와이어링 방식이라하고, 현재와 다른 프로그램을 사용하기 위해선 전선을 다시 연결해야했다.
이때 운영체제는 존재하지 않았다.
이는 진공관과 전선으로 논리회로를 아주 작게 구현한 IC 칩의 형태로 발전했다.
키보드, 모니터 등의 입출력 장치는 존재하지 않아 중간 과정을 확인할 수 없었다.
키보드와 모니터가 등장해 사용자가 중간 결과를 확인할 수 있게 되었고, 프로그램 진행 도중에도 입력 값을 통해 작업을 변경할 수 있었다.
그러나 한 번에 한 가지 작업만 수행이 가능해 효율성이 떨어졌다.
대화형 시스템의 단점을 극복하기 위해 멀티프로그래밍 기술이 개발되었고, 이를 통해 여러 작업에 CPU 사용 시간을 잘게 쪼개어 분배하는 시분할 시스템이 완성되었다.
여전히 컴퓨터는 비싸 개인이 소유하기 어려웠다.
이때 스티브 잡스가 개인용 컴퓨터를 발명하며 소프트웨어가 급속도로 발전했고, 싸고 작은 컴퓨터를 하나로 묶어 고성능 시스템을 구축하는 분산 시스템이 생겨났다.
분산 시스템은 작업을 여러 컴퓨터로 처리한 후 결과를 상호 교환한다.
분산 시스템에서는 일부 컴퓨터가 고장나면 처리된 결과를 모으기 어렵다는 단점이 존재했고,
클라이언트가 요청하고 서버가 응답하는 클라이언트/서버 시스템이 생겨났다.
클라이언트/서버 시스템은 모든 요청이 서버로 집중되어 과부하된다는 단점이 존재한다.
위 문제점을 해결하기 위해, 서버는 얻고자 하는 자원의 위치만 알려주고 해당 위치에서 자원을 받는 구조인 P2P 시스템이 생겨났다. 유명 메신저 '카카오톡'이 대표적인 예다.
사용자가 어디에 있든 서비스를 이용할 수 있도록 중앙 시스템인 클라우드에서 관리하는 구조가 생겨났다.
이제 냉장고, 자동차, 세탁기 등의 사물도 인터넷에 연결되어 다양한 기능을 제공한다.
위에서 살펴봤듯, 운영체제는 커널과 인터페이스로 구성되어 있다.
커널과 인터페이스는 분리되어 있기 때문에 같은 커널이라도 다른 인터페이스를 장착할 수 있다.
앞서 언급한 바와 같이, 커널은 컴퓨터 자원을 보호하기 위해 사용자가 자원에 직접 접근하는 것을 막는다.
따라서 자원을 이용하기 위해선 시스템 호출을 통해 요청해야 한다.
커널과 하드웨어의 인터페이스를 디바이스 드라이버라고 부른다.
그림의 드라이버 부분을 살펴보면, 시스템 호출은 커널의 앞부분을 모두 감싸는 반면 드라이버는 일부만 감싸고 있다.
이는 시스템 호출을 거치지 않으면 커널에 진입할 수 없고, 커널이 제공하는 드라이버도 있고 하드웨어 제작자가 제공하는 드라이버도 있다는 의미다.
일상적인 예시로 대부분의 마우스는 컴퓨터에 꽂기만 하면 사용할 수 있으나, 그래픽 카드와 같이 드라이버를 추가로 설치해야 하는 장치가 있다.
운영체제의 핵심인 커널의 역할을 정리하면 아래와 같다.
커널의 기능을 어떻게 구현하는가에 따라 크게 세 가지로 나뉜다.
초창기 운영체제의 구조로, 핵심 기능이 모듈의 구분 없이 하나로 구성되어 있다.
비슷한 기능을 가진 모듈을 묶어 하나의 계층으로 만들고, 계층 간 통신을 통해 운영체제를 구현한 방식이다.
오늘날의 운영체제 대부분이 이 구조를 갖는다.
커널이 지속적으로 커짐에 따라, 계층형 구조 커널또한 오류를 처리하기 어려워졌다.
마이크로 구조 커널의 운영체제는 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공한다.
많은 부분이 사용자 영역에 구현되어 사용자의 요구를 수용하기 편해졌고, 각 모듈이 독립적으로 작동해 하나의 모듈이 실패하더라도 전체로 확산되지 않는다.
매우 기초적인 개념 및 용어의 정의에 대해 살펴봤다.
다음 장에서 CPU와 메모리를 중점으로 하여 컴퓨터를 구성하는 하드웨어의 특성에 대해 알아보자.