개요
일상속에서 흔히 윈도우, 맥OS, iOS, 안드로이드, 그리고 이쪽 분야에 관심이 있다면 들어봤을 리눅스 또한 모두 운영체제(Operating System, OS) 입니다.
애플워치나 갤럭시워치, 심지어는 자동차 등에 들어가는 인터페이스 또한 운영체제의 일종입니다.
단, 이 경우엔 운영체제라기 보단 임베디드(Embedded)라 부르며, 임베디드 시스템은 대개 성능이 낮은 (메모리 크기가 작거나 CPU 성능이 낮은) 기기에 많이 이용됩니다.
컴퓨터
컴퓨터 또한 계산기라 말할 수 있다는건 이미 많은 사람들이 알고계실겁니다.
물론 컴퓨터를 보고 계산기라 부르는 사람은 못봤을겁니다.
만약 어떠한 기능을 수정할 일이 있다면, 계산기는 하나하나 뜯어 고쳐야 하지만, 컴퓨터는 프로그래밍이 가능한 계산기이기 때문에, 굳이 하나하나 뜯어 고칠 필요 없이, 어떤 기능 하나만 수정하면 됩니다.
컴퓨터는 데이터를 이용하여 작업이 이루어지는데, 컴퓨터는 데이터를 처리하여 결과를 출력하거나, 저장하는 역할을 하며, 이러한 의미있는 데이터를 정보라 부르며, 이러한 과정을 IT (정보 기술)이라 부릅니다.
하드웨어 (hardware), 소프트웨어 (software)
하드웨어는 컴퓨터에 관심없는 일반인들도 한번쯤 봤을 물리적인 기계를 의미합니다.
소프트웨어는 하드웨어를 제어하기 위한 역할로, 그 자체로 프로그램이라 볼 수 있습니다.
소프트웨어에선 또 2개로 나뉠 수 있는데, 다음과 같습니다:
- 시스템 소프트웨어: 운영체제와 운영체제를 보조하는 프로그램(흔히 유틸리티라 불리기도 합니다.), 즉 위에서 설명한대로 하드웨어를 제어하기 위한 프로그램을 의미합니다.
- 응용 프로그램: 애플리케이션이라고도 불리며, 우리가 흔히 사용하는 프로그램인 브라우저, 문서 작업, 게임 등 모두 응용 프로그램에 속합니다. 즉, 시스템 소프트웨어 위에서 작동하는 프로그램입니다.
시스템 소프트웨어는 하드웨어 없이 작동하지 못함으로, 하드웨어가 꼭 필요한데, 이 두 특성을 합쳐놓은 것을 펌웨어(firmware)라고 합니다.
운영체제
그래서 운영체제가 무엇이냐, 라고 한다면: 외부 장치나 프로그램 등은 컴퓨터 리소스 (자원)을 공유하며 작동하는데, 이 공유 과정을 도와주며, 응용 프로그램을 안정적으로, 그리고 잘못된 작동을 막아주 등의 작업을 하는 소프트웨어를 운영체제라 부릅니다.
운영체제의 이름 또한 “ 운영 (Operating) “이 포함되어 있으며, 간단하게 서술하자면 컴퓨터를 관리하고 운영하는 소프트웨어를 말합니다.
때문에 운영체제는 모든 응용 프로그램의 최상위 프로그램입니다.
또한 운영체제는 규칙을 가지고 있으며, 응용 프로그램이 어떠한 작업을 하기 위해선 운영체제의 허락을 받아야 그 작업이 처리될 수 있습니다.
컴퓨터의 자원에 아무나 쉽게 접근할 수 있게 된다면, 보안상의 이유로 문제가 발생할 수 있음으로, 운영체제는 컴퓨터의 자원을 숨기게 됩니다.
컴퓨터 구조 (커널, 인터페이스)
가장 아래층인 하드웨어가 존재하며, 그 사이 운영체제, 그리고 가장 위에 응용 프로그램이 존재합니다.
그 운영체제는 인터페이스(Interface)와 커널(Kernel)로 나뉩니다.
커널은 운영체제의 핵심적인 기능을 모아둔 것으로, 커널을 통해서만 컴퓨터 자원, 하드웨어에 접근할 수 있습니다.
그리고 인터페이스를 통해 커널에게 명령을 내릴 수 있으며, 해당 작업의 결과 또한 인터페이스가 알려줍니다.
* 커널에 대한 세부적인 내용은 이 글에서 서술합니다.
사용자 인터페이스 (User Interface, UI)
우리가 전문 지식이 없다고 가정했을때, 인터페이스를 사용해서 커널에 명령을 내리는 일은 매우 어려울것입니다.
때문에 운영체제는 사용자가 편리하도록 만들어진 인터페이스인 UI를 제공하며, 그래픽을 사용하는 UI를 GUI(Graphical User Interface)라고 부릅니다.
하드웨어 인터페이스
간혹 마우스 등의 외부 하드웨어를 새로 살때, 드라이버를 설치해야 한다는 말을 듣곤 합니다.
여기서 드라이버가 하드웨어 인터페이스이며, 하드웨어와 상호작용을 위해 존재합니다.
하드웨어 인터페이스는 운영체제에서 자동으로 설치되기도 하나, 따로 설치해야 하는 경우도 있습니다.
이는 후술할 운영체제에서 제공하는 기능 중 하나에 속합니다.
결론적으로 운영체제는 아래와 같은 기능을 제공하며, 이러한 기능에 따라 사용 분야와 성능 차이가 들어나게 됩니다.
- 자원 관리, 보호: 얼마나 효율적인가, 얼마나 안정적인가
- 하드웨어 인터페이스 제공: 얼마나 제공하는가 (확장성)
- 사용자 인터페이스 제공: 얼마나 편리한가 (편리성)
윈도우와 같은 일반인이 많이 사용하는 운영체제인 윈도우 등은 사용자 인터페이스 등에 집중하는 편이며, 리눅스와 같은 경우 자원 관리 등에 집중하는 편입니다. (물론 윈도우가 자원 관리, 보호에 약하다는건 아닙니다.)