운영체제 : 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층

일반적으로 컴퓨터는 위의 그림과 같은 구조를 가진다. 운영체제는 소프트웨어와 하드웨어 사이에 존재하는데 그로 인해 하드웨어와 어떻게 상호작용할지? 사용자 소프트웨어와 어떻게 상호작용할지? 2가지의 관점을 가지고 동작하게 된다.
운영체제는 컴퓨터 시스템을 편리하게 사용할 수 있게 해주는 환경으로 운영체제가 없다면 컴퓨터 하드웨어는 단순한 고철덩어리에 불과하다. 개발된 프로그램은 하드웨어가 필요한 경우 직접 하드웨어를 다루지 못하고 운영체제가 하드웨어 소프트웨어 사이의 중개자 역할을 진행하게 된다.
가상머신을 사용할 때 각 사용자들은 마치 자기 자신만의 컴퓨터를 사용하고 있다고 느끼게 된다. 실제로는 운영체제가 cpu를 번갈아 가면서 각 가상 머신이 사용할 수 있도록 해주는 기능을 담당하게 되는데 이처럼 컴퓨터 자원들을 여러 프로그램들이 공유 및 분할해서 사용할 수 있게 해주는 것이 운영체제의 주 목표이다.

운영체제를 좁은 범위로 표현하면 커널을 의미한다.
커널 : 부팅이 일어난 이후 메모리에 상주하는 부분
운영체제를 넓은 의미로 표현하게 되면 커널을 포함해서 각종 주변 시스템 유틸리티까지 포함한 개념이다. 파일을 관리한다거나 하는 메모리에 상주하지 않는 독립적인 프로그램들까지를 포함하는 개념이다.
단일 작업 운영체제는 예전에 사용하던 운영체제로 단순히 하나의 작업만을 처리하는 방식의 운영체제를 의미한다. 즉 하나의 프로그램을 돌리면 아예 다음 프로그램을 입력할 수 있는 방법조차 주어지지 않는 운영체제로 현대에는 주로 사용되지는 않는다.
주요 단일 작업 운영체제로는 DOS가 있다.
다중 작업 운영체제는 현대적인 운영체제로 일반적으로 하나의 PC에서 여러개의 작업을 동시에 수행할 수 있는 운영체제이다. 현대 PC에서 사용하는 windows나 linux같은 운영체제들이 모두 다중 작업 운영체제에 속한다.
하나의 사용자만을 지원하는 운영체제로 단일 작업을 지원하는 운영체제의 경우 단일 사용자에 해당하게 된다.
하나의 PC에 여러 사용자들이 로그인해서 여러 작업을 진행할 수 있는 운영체제를 의미한다. 현대의 대부분의 운영체제들이 다중 사용자를 지원한다.
일괄 처리 방식은 여러 작업을 한번에 모아서 한꺼번에 처리하는 방식으로 현대 운영체제에서는 찾아보기 어려운 방식이다. 마치 빨래를 할 때 빨래통이 다 찼을 때 세탁기를 돌리는 것처럼 동작하며 이런 일괄 처리 방식을 batch processing이라고 한다.
현대 운영체제에서 사용하는 방식으로 운영체제가 각 작업에 작은 시간 단위로 나누어서 자원을 할당하는 방식으로 마치 동시에 여러개가 실행되는 것처럼 동작하는 방식이다.
각각의 사용자 입장에서는 짧은 응답시간으로 인해 즉각적인 반응처럼 확인될 수 있는데 이를 interactive 하다고 표현한다. 시분할 방식은 사용자나 작업들이 많아지게 되면 응답시간을 어느정도 증가될 수 있다. 시분할 방식은 여러 작업이 동시에 수행되게 끔 느껴지게 하는 것이 목표이지 정해진 시간내에 응답을 하는 것이 목표가 되지는 않는다.
실시간 방식은 시분할 방식과 유사하지만 데드라인을 정해 데드라인 이내에 반드시 응답하는 것을 보장하는 방식이다. 그렇기 때문에 정교한 시스템에서 사용되며 일반적으로 원자로 공장, 미사일 제어 같은 특수 목적 시스템에서 주로 사용된다.
- 실시간 방식의 종류
실시간 방식도 2가지로 구분 가능하다.
hard realtime system: 데드라인을 반드시 지키는 일반적인 실시간 방식
soft realtime system: 데드라인을 지키도록 하지만 일부 끊어져도 문제가 발생하지 않는 실시간 방식으로 주로 영화에 사용된다.
UNIX는 초창기에 대형 컴퓨터를 위해 만들어진 운영체제이다. 대형 컴퓨터를 목표로 개발되었다 보니 기본적으로 멀티프로세스와 다중 사용자를 지원한다. 기본적으로 이전까지 운영체제 개발에는 어셈블리어가 사용되었다. 하지만 어셈블리어로 개발하는 것은 너무 어려웠기에 c언어라는 언어를 개발해서 UNIX를 개발하게 되었다. 이로 인해 기계어 집합이 다른 컴퓨터라도 단순히 c언어로 개발된 운영체제를 컴파일해주기만 하면 사용가능했기에 높은 이식성을 자랑했다. 또한 UNIX는 핵심 부분만을 커널에 집어 넣었기에 메모리 사용량을 최적화할 수 있었다. 현재 대표적으로 가장 많이 사용되는 UNIX 계열의 운영체제는 LINUX가 있다.
Windows는 UNIX와 반대로 초기에 개인 PC만을 위해 만들어진 운영체제이다. 개인 PC를 목표로 개발되다 보니 기본적으로 개인 사용자와 단일 작업만을 지원했다. 초기에는 PC에 용량이 작았기 때문에 작은 메모리 용량을 가지고 있었으나 하드웨어 빠른 발전으로 인해 현재는 매우 큰 크기의 메모리를 지원하며 다중 사용자와 다중 작업까지 지원하고 있다. GUI 기반의 운영체제를 지원하고 있다.