누구나 10~14만원 정도의 돈을 주고 운영체제를 구입한 경험이 있을 것 같다. 지금 이 블로그를 보는 사람들이라면 Windows OS, Mac OS 등 최소한 1개 이상의 운영체제를 사용하고 있다는 뜻이다. 물론 운영체제 없이 컴퓨터를 사용하는 사람이 없다고는 못 하겠지만, 컴퓨터를 사용하는데 필수적인 요소라는 것은 확실히다.


운영체제(Operation System, OS)


Operating System, 또는 OS라고 하는 운영체제는 우리가 흔히 사용하는 ‘프로그램’의 한 종류이다. 다만, 컴퓨터를 사용할 수 있도록 컴퓨터의 시스템 자원을 관리하는 ‘소프트웨어’이다. 컴퓨터를 실행하면 가장 먼저 실행되는 프로그램이자 일반 사용자들에게는 필수적인 프로그램이다. 사용자가 컴퓨터를 편하게 이용할 수 있도록 하는 프로그램인 운영체제의 역할은 다음과 같다.

  1. 컴퓨터의 시스템 자원을 관리한다.
  2. 사용자와 컴퓨터 사이의 커뮤니케이션 지원
  3. 컴퓨터 프로그램 제어


운영체제의 역할은 더 많을 수 있지만, 크게 3가지로 분류했다. 각각의 역할에 대해 자세히 알아보자.


컴퓨터 시스템 자원 관리


컴퓨터 시스템 자원에는 다음과 같은 요소들이 있다.

사진1. 컴퓨터 시스템 자원
출처 : https://www.fun-coding.org/whatisos.html


아쉽게도 각 하드웨어 및 디바이스들은 스스로 할 수 있는 능력을 갖추지 못했다. 그들은 단지 존재하고 자원을 가지고 있을 뿐, 스스로 실행을 하거나 메모리 등을 분배하는 역할을 수행하지 못 한다.

  • CPU : 각 프로그램이 얼마나 CPU를 사용할지 스스로 결정할 수 없음.
  • Memory : 어떤 주소에 데이터를 쓰고 읽을지, 어느 정도의 공간을 확보해야 하는지 스스로 판단하지 못함.
  • 저장매체(HDD, SSD) : 어떤 주소에 데이터를 쓰고 읽을지, 언제 데이터를 읽어올지 등을 스스로 판단하지 못함.
  • I/O 디바이스 : 키보드나 마우스를 눌럿을 때 어떤 동작을 취해야하는지 스스로 판단하지 못함.


따라서 운영체제가 시스템 자원들을 관리하고 각각 어떤 동작을 해야하는지 판단하고 명령한다.


사용자와 컴퓨터 사이의 커뮤니케이션 지원


물론 운영체제가 모든 시스템 자원들을 관리하고 있지만, 사용자가 직접 컴퓨터 하드웨어에 접근해 작업을 수행해야 하는 경우가 있다. 따라서 운영체제는 사용자와 컴퓨터가 소통할 수 있도록 하나의 창구를 만들어 사용자가 직접 컨트롤을 할 수 있도록 도와준다.

사진2. 쉘(Shell))
  • 쉘(shell)이라는 하나의 프로그램을 통해 사용자에게 권리자 권한을 부여해 컴퓨터의 자원을 직접 관리할 수 있도록 하는 기능을 제공한다.


커널(kernel)이라고도 하고 쉘(shell)이라고도 하는데, 사실 커널은 운영체제 안에 있는 좀 더 깊숙한 부분을 말하기도 한다. 포인트는 컴퓨터와 대화할 수 있도록 User Interface(UI)를 제공한다는 것이다.


컴퓨터 프로그램 제어


우리는 컴퓨터를 할 때 한 가지 작업만 수행하지 않는다. 인터넷 쇼핑을 하면서 동영상을 보거나 게임을 하면서 노래를 듣는 등 다양한 작업을 동시에 수행한다. 또한 각 응용프로그램을 컴퓨터 하드웨어와 연결하여 이러한 작업을 효율적이고 편리하게 할 수 있도록 도와준다. 응용프로그램을 제어하기 위해서는 컴퓨터 하드웨어를 관리하는 여러 기술들이 필요한데, 운영체제는 이러한 기능이 탑재가 되어있는 프로그램이다.

  • 프로세스 관리, 주기억장치 관리, 파일 및 디스크 관리 등
  • 응용프로그램 사이의 권한을 관리한다.
  • 응용프로그램이 비정상적으로 작동하는 것을 막는다.(ex. 사용자가 실수로 만든 응용프로그램)
  • 모든 파일 삭제 방지


응용프로그램 : 컴퓨터를 사용할 때 흔히 말하는 ‘프로그램’에 해당한다. 좀 더 전문적인? 단어라고 생각하면 된다. 엑셀, 파워포인트, 각종 게임 등이 응용프로그램이다.


운영체제의 종류


운영체제는 여러 종류가 있지만, 가장 유명한 운영체제는 Windows OS, Mac Os 등이 있고 이 밖에 개발자들이 선호하는 운영체제인 UNIX와 LINUX 등이 있다.

  • 유닉스(UNIX) : 운영체제 발전사를 보면 현대 OS를 구현한 최초의 운영체제이다.(OS의 아버지)
  • 리눅스(LINUX) : 유닉스 계열 중 하나로 유닉스와 구조가 비슷하지만 좀 더 현대적으로 변화한 OS이다.
  • Windos OS : MS가 개발한 자체 운영체제로, MS-DOS가 그 시초이다.(빌게이츠가 차고에서 만들었다는 그 OS)
  • 그 밖에도 우분투, 레드헷, CentOS 등 다양하다.


유닉스 계열인 LINUX는 오픈소스로 개발된 운영체제이기 때문에 무료이다. 누구나 자유롭게 이용할 수 있는 운영체제이다. 하지만 Windows에 비해 사용자에게 친화적으로 만들어지진 않았다. 주로 서버를 구축할 때 사용하는 운영체제이다.


사실 우리나라도 운영체제를 자체적으로 개발한 과거가 있다. 하지만 아쉽게도 정상적으로 작동하지 않아 역사속으로 사라졌다.


운영체제는 어디에 저장되어 있나요?

  • 운영체제도 프로그램의 일종이기 떄문에 저장매체(SSD, HDD)에 설치되어 있다. 컴퓨터를 작동시키면 운영체제도 폰 노이만 구조에 의해 메모리(RAM)에 올라가 모든 역할을 수행하게 된다.


운영체제에 대해 간단히 알아보았다. 운영체제의 역할을 보면 컴퓨터의 모든 것들을 관리한다고 봐도 무방하다. 그래서 운영체제는 개발을 하기가 매우 어렵다고 한다. 또한 항상 버그가 발견되어 꾸준히 업데이트를 진행하고 있으며 보안과도 직결된 프로그램이기 때문에 웬만한 개발자들은 손도 못 대는 영역이라고 한다. 그래도 개발자가 되기 위해서는 필수로 알아야 하는 영역이기 때문에 꾸준히 공부를 할 생각이다. 다음은 역사를 통해 운영체제를 알아보는 시간을 가져보겠다.


읽어주셔서 감사합니다.(댓글과 수정사항은 언제나 환영입니다!)