운영체제의 종류와 발전 과정

kakasoo·2021년 9월 9일
0

운영체제

목록 보기
1/3
post-thumbnail

운영체제의 역할


컴퓨터 시스템은 사용자, 하드웨어, 소프트웨어의 구성이다. 운영체제는 이 세 구성 간의 조정자 역할로서, 이 사이에서 자원 관리자, 입출력 장치, 사용자 프로그램 등의 제어 역할을 담당한다. 이로써 편리성, 효율성, 안정성, 확장성을 보장한다.


운영체제의 종류와 발전 과정


운영체제의 발전 과정에 대해서 우선 설명한다. 몇몇 시스템은, 한 줄 정도로 짧게 설명하고 지나간다.

1. 초창기 컴퓨터

소프트웨어라는 게 없었다. 프로그램을 짠다는 건, 컴퓨터에 정해진 전선들을 바꿔 끼우는 걸 말했다.

2. 일괄 처리 시스템 (Batch System)

초기 컴퓨터는 일괄 처리 방식이었다. 그 당시에는 천공 카드라고 하는, 지금으로 치면 OMR 카드 비스무리한 게 있었는데, 이런 카드를 컴퓨터 드라이브에 넣음으로써 프로그램을 수행하게 했다. 그런데 이 과정이 조금 복잡한 게,

  1. 카드 판독기에 천공 카드를 넣는다.
  2. 입력 작업이 실행되어 테이프를 만든다.
  3. 만들어진 테이프를 다시 입력 테이프 드라이브에 넣으면, 시스템 테이프 드라이브를 거쳐 출력 테이프 드라이브로 나온다.
  4. 3에서 처리된 결과 역시 테이프기 때문에 출력 테이프 드라이브에 다시 넣어 프린터로 출력해야 한다.

놀라운 것은 이 입력, 처리, 출력의 3단계가 각기 다른 하드웨어에서 이루어지는 작업이기 때문에, 사람이 계속 보고 있어야 한다는 점이다. 이런 까닭에 초창기 운영체제는 오프라인 시스템이라 불렀다고 한다. 그나마 다행인 것은, 카드 판독기에 카드를 여러 개 넣어놓고 기다릴 수 있었다는 점 정도.

일괄 처리 시스템 당시는 지금의 컴퓨터 구조와 많이 다르다. 지금의 컴퓨터 구조는 저 입력, 처리, 출력이 동시적으로 이루어진다. 하나의 프로그램을 읽어내는 동안 다른 영역에서는 처리를 하고, 또 다른 영역에서는 출력을 할 수 있다. 이는 다른 시스템에서 다시 설명된다.

2. 대화형 시스템

이후 키보드가 발명되었고, 사용자와 대화하듯이 프로그래밍이 가능해졌다. 더 이상 천공 카드가 필요 없어졌고, 오류가 발생할지 중간 중간에 알 수 있게 되었다. 따라서 입출력 집중 작업이 생겨났다. 입출력 집중 작업은, 이전의 방식 (CPU 집중 작업이라고 부르게 되었다.) 과는 달리, 처리 중에도 입출력을 할 수 있게 된 것이다. 처리가 메인이었던 컴퓨터에서 입출력이 그만큼 위상을 차지하게 된 셈이다.

3. 멀티 프로그래밍 시스템

키보드가 발명되고 상대적으로 컴퓨터를 다루기 쉬워지긴 했지만 아직 문제가 있었다. 여전히 컴퓨터는 순서대로 작업을 지시해야 했다. 천공 카드를 차례대로 집어 넣듯이, 대화형 시스템은 말 그대로 대화형일 뿐, 여러 가지 작업을 동시에 할 수 없었다. 그러나 이 문제 역시도 다음 시스템에서 해소되었다. 멀티 프로그래밍 시스템이다.

위 그림처럼, 출력하는 동안에도 처리를 할 수 있고 그 와중에 누군가는 입력이 가능해졌다.

단일 사용자 시스템
아마도 이 때까지를 일컫어서 단일 사용자 시스템이라고 하는 듯하다. 여러 작업을 동시에 수행할 수 있는데 왜 단일 사용자 시스템일까. 이에 대한 설명은 바로 아래 시분할 시스템으로 이어진다.

4. 시분할 시스템 (TSS: Time Sharing System)

이제 컴퓨터는 크기가 작아지고 계산 능력이 좋아졌다. 하지만 여전히 고가였고, 효율적으로 쓰지 못하는 건 매우 큰 낭비였다. 값 비싼 기계로 하나의 작업만 수행하는 것은 낭비였다. 그래서 멀티 프로그래밍 시스템이 만들어진 것인데, 이후에는 다시 시분할 시스템이 생겨났다. 이제는 CPU 점유 시간을 잘게 쪼개서 여러 사용자들이 동시에 사용할 수 있도록 해준 것이다. 짧은 시간으로 나뉘어진 CPU 점유 시간은, 사용자들로 하여금 작업이 연속적으로 느껴지게 만들어주기 때문에 하나의 하드웨어로도 여러 명이 사용하는 데에 큰 문제가 없었다.

멀티 프로그래밍 시스템과 시분할 시스템의 차이는?
멀티 프로그래밍 시스템은 여러 프로세스를 동시에 처리할 수는 있었지만, 그렇다고 해서 여러 사용자가 동시에 사용할 수 있던 것은 아니다. 멀티 프로그래밍은 하나의 처리를 하는 동안 다른 입력과 출력을 동시에 진행할 수 있었지만, 그렇다고 해서 여러 처리까지 동시에 할 수 있던 건 아니다.
프로세스 관점이냐 사용자 관점이냐에 따라 멀티 프로그래밍과 시분할을 구분할 수 있을 법 하다.

멀티 프로그래밍 시스템이랑 시분할 시스템은 그럼 다른 건가?
사실 둘 중 하나만 지원하는 경우는 없기도 해서인지, 그냥 같은 것으로 치는 경우도 있고, 아예 같다고 확언하는 경우도 있는 듯 하다. 찾아본 바로는 저마다 결론이 다르니, 그냥 이렇게 보기도 하고 저렇게 보기도 한다 정도로 생각하는 게 좋겠다.
여러 시스템들이 마치 하나의 세대처럼, 하나의 기간에 하나만 존재했다고 생각할 필요는 없겠다.

이젠 다 시분할을 사용하는가?
아직도 시분할을 쓰지 않는 경우가 있긴 하다. 이런 경우를 Real-Time System, 그냥 실시간 시스템이라고 말하는데, 미사일 같은 무기나 항공기처럼 짧은 시간 내에 중요한 작업을 처리해야 하는 경우에는 시분할을 사용하지 않는다.

5. 분산 시스템

인터넷이 발명되고 컴퓨터가 보급되기 시작했다. 그러다보니 원래는 대형 컴퓨터로 처리해야 했던 큰 작업을 여러 컴퓨터의 협력으로 처리할 수 있었다. 이를 분산 시스템이라고 한다.

클러스터 시스템 Cluster System
분산 시스템과 유사하게 클러스터 시스템이 있다. 분산 시스템보다는 좁은 범위에서 사용되는데, 여러 대의 컴퓨터가 네트워크를 이용하여 저장소를 공유하는 걸 목적으로 사용하는 시스템이다. 은행 같은 기관에서는 한 컴퓨터에 문제가 발생할 경우를 대비하여, 한 컴퓨터가 고장나도 다른 컴퓨터에서 작업을 할 수 있도록 저장소를 공유했다. 데이터에만 문제가 없으면 어떤 컴퓨터를 통해 접근해도 상관 없는 구조이다.

6. 멀티 프로세서 시스템

예전 컴퓨터는 코어가 1개, 즉 싱글 코어였다. 이 말은, 프로그램을 처리할 수 있는 처리 장치가 1개 뿐이라는 건데, 이 1개 가지고 모든 사용자들을 처리하려다 보니 시분할 시스템이 등장한 것이다. 그러나 컴퓨터에 들어갈 수 있는 코어 숫자 자체가 많아졌다. 따라서 코어를 이제 프로세서 라는 명칭으로 부르고, 프로세서들이 각기 다른 작업을 처리할 수 있게 되었다.

당연히 처리율은 배로 증가하고 비용이나 신뢰성도 크게 나아졌다. 그렇지만 이전과 달리 프로세서가 여러 개가 되다보니 어떤 프로세스를 어떤 프로세서에게 할당해야 하는가에 대한 논의가 생겼다. 결론적으로 프로세서 간의 위계를 만들었다.

마스터 프로세서가 이제 어떤 프로세서에게 어떤 프로세스를 할당할지를 결정하게 되었다. 여러 개 프로세서 중 하나가, 업무를 분담하는 역할을 수행하게 된 것이다. 여담이지만, 앞처럼 모든 프로세서의 위계가 같은 걸 대칭적 (Sysmmetric) 멀티 프로세싱이라고 하고, 후자는 주/종 (Asymmtric) 다중 처리 시스템이라고 부른다.

7. 클라이언트/서버 시스템

서비스를 요청하는 클라이언트와 서비스를 제공하는 서버의 이중 구조 시스템이다. 웹 구조를 이용한 대부분의 구조가 여기에 해당하며, 현재까지 사용된다. 단점으로는 서버 과부하를 꼽을 수 있다.

8. P2P 시스템

서버 과부하를 해소할 목적으로 고안된 시스템으로, 서버를 거치지 않고 사용자와 사용자를 직접 연결하려는 시도였다. 동일한 파일을 가지고 있는 여러 사용자에게 각기 다른 부분을 받아 이어 붙히면 된다.

서버가 없는 P2P 시스템
서버가 중앙에서 사용자와 사용자를 연결해 직접 데이터를 주고 받을 수 있게 연결해주는데, 최근에는 블록체인 기술이 서버가 없는 P2P 시스템을 구성해냈다.

기타 컴퓨팅 환경

클라우드 컴퓨팅
하드웨어를 포함한 시스템이 구름에 가려진 것 마냥 사용자에게는 보이지 않는 상태를 뜻한다. 사용하는 기기들은 실상 껍데기에 가깝고 실질적인 처리는 숨겨진 공간에서 이루어지기 때문에 하드웨어의 성능이 크게 좋을 필요는 없어졌다. 그보다는 서버 성능과 인터넷 속도가 더 중요해졌다.

사물 인터넷
사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술, 인터넷으로 연결된 사물들이 데이터를 주고 받아 스스로 분석하고 학습하게 한다.

엣지 컴퓨팅
사물 인터넷이 발전하면 센서의 수가 급격하게 많아지는데 이로 인해 네트워크 전송량이 많아지고 서버의 과부하 역시 심해진다. 따라서 단말기들이 직접 처리할 수 있는 데이터는 직접 처리하도록 유도하여 부하를 줄이는 방식이다.

profile
자바스크립트를 좋아하는 "백엔드" 개발자

0개의 댓글