reference : [도서] 쉽게 배우는 운영체제


2.1 개요

구분 시기 주요 기술 특징
0기 1940년대 없음 진공관(0,1) 사용
1기 1950년대 카드 리더, 라인 프린터 일괄 작업 시스템
운영체제의 등장
2기 1960년대 초반 키보드, 모니터 대화형 시스템
3기 1970년대 후반 C 언어 다중 프로그래밍 기술 개발
시분할 시스템
4기 1980년대 PC 개인용 컴퓨터의 등장
분산 시스템
5기 1990년대 클라이언트/서버 시스템
6기 2000년대 스마트폰 P2P 시스템 (메신저, 파일 공유)
그리드 컴퓨팅
클라우드 컴퓨팅
사물 인터넷

 

2.2 초창기 컴퓨터 (0기, 1940년대)

최초의 컴퓨터인 에니악은 펜실베니아대학의 두 학생이 만들었다. 전선을 회로에 연결하여 제작되었고, 사람이 7시간동안 계산하던 것을 3초만에 끝냈다. 진공관이 켜지면 1, 꺼지면 0으로 판단하여 향후 컴퓨터가 2진법을 사용하는 데 영향을 끼쳤다. 

키보드, 마우스, 모니터와 같은 입출력장치 없이 진공관을 전선으로만 연결했는데, 이렇게 논리회로를 구성하는 것을 '하드와이어링' 방식이라고 한다. 하드와이어링은 원하는 결과만 얻는 방식이므로 다른 계산이나 수식을 사용하려면 전선을 다시 연결해야 한다는 단점이 있다. 이 당시의 컴퓨터에는 운영체제가 없었다.

 

2.3 일괄 작업 시스템 (1기, 1950년대)

전공관을 전선으로 연결하는 컴퓨터에서 기술 발전을 거쳐 IC (Integrated Circuit) 라는 칩으로 만들었는데, 진공관과 전선으로 만들어진 논리회로를 아주 작은 크기로 구현한 것이다. 당시엔 CPU와 메모리가 있었지만 여전히 키보드, 모니터 등의 입출력장치가 없었고 천공카드 리더를 입력장치로, 라인 프린터를 출력장치로 사용하였다.

  • 천공카드 리더 : OMR 카드에 특수한 펜으로 표시하면 기계가 이 마크를 읽어 데이터를 수집하는 OMR의 원조가 되는 방법론이다. 특수한 펜으로 표시하는 대신 구멍을 뚫어 문자나 숫자를 표현하였다.
  • 라인 프린터 : 문자만 출력하는 프린터로, 이름처럼 한 번에 한 줄씩 출력한다.

해당 입출력장치를 사용함으로써 지금의 프로그래밍과 유사한 방식으로 다양한 소프트웨어를 개발할 수 있었다. 요즘은 멀티태스킹이 가능하지만 당시에는 한 번에 한가지 작업만 할 수 있었다. 작업에 필요한 프로그램과 데이터를 동시에 입력해야했고, 실행 중간에 데이터를 입력하거나 수정하는 것이 불가능했는데 이러한 시스템을 일괄 작업 시스템(batch job system), 일괄 처리 시스템(batch processing system) 이라고 부른다. 

윈도우가 사용하는 파일 중 부팅 시 읽는 config.sys, autoexec.bat 파일이 있는데, 여기서 .bat 확장자는 batch job을 의미한다. 이는 운영체제가 시작할 떄 한꺼번에 처리해야할 작업을 모아둔 파일이다.

 

2.4 대화형 시스템 (2기, 1960년대)

키보드와 모니터가 등장했다. 타자기의 쿼티QWERTY 자판에 키를 추가하여 만든 것이 키보드고, 초기의 모니터는 컬러가 아닌 단색이었다. 이 둘은 컴퓨터의 시스템 방식을 획기적으로 바꾸어 놓았는데, 기존의 일괄시스템은 데이터와 프로그램을 같이 입력하여 최종 결과만 얻었다. 새로운 값을 입력하거나 데이터를 변경하는 과정도 불가능했으며, 오류가 있거나 결과가 틀려도 무조건 최종 결과물로만 확인할 수 있었다. 요즘말로 다시 말하자면, 디버깅이 불가능했다. 

하지만 키보드와 모니터덕분에 위의 불가능했던 과정이 모두 가능해졌다. 이러한 시스템은 대화형 시스템(interactive system)이라고 한다. 그러나 대화형 시스템에도 문제는 있었다. 일괄 작업 시스템은 작업 시간을 예측할 수 있지만, 대화형 시스템의 경우 작업 시간을 예측하기 어려웠다. 

 

2.5 시분할 시스템 (1960년대 후반)

2.5.1 시분할 시스템의 개념

1960년대 후반에 컴퓨터의 크기가 작아지고 계산 능력이 향상되었지만, 여전히 값비싼 데다가 일부 사용자만 사용이 가능했다. 컴퓨터를 효율적으로 사용하기 위한 다중 프로그래밍(multiprogramming) 기술이 개발되었다. 한 번에 하나의 작업만 가능했던 부분을 멀티 프로세싱이 가능하도록 한 것이다.

다중 프로그래밍 시스템에서는 CPU 사용 시간을 아주 잘게 쪼개어 여러 작업에 나누어준다. 마치 영화 필름을 여러장 이어붙여 빠른 속도로 재생하여 영화가 재생되듯말이다. 분명 작업은 끊어져서 실행되겠지만, 바로 0.1초 뒤에 다른 작업을 분배하는 식의 방법을 통해 사용자가 느끼기에는 동시에 실행되는 것처럼 보이는 것이다. 이처럼 오늘날의 컴퓨터에는 대부분 시분할 시스템이 사용된다. 

이러한 시분할 시스템의 단점은 멀티프로세싱을 하기 위해 또다른 추가 작업이 필요하며, 만약 동시에 진행되는 작업이 많을 경우 실행 시간이 오래 걸릴 수 있다는 점이다. 그래서 중요한 관제 시스템의 경우 시분할 시스템이 아닌 실시간 시스템(real-time system)을 사용하기도 한다.

 

2.5.2 다중 사용자 시스템

시분할 시스템은 한 컴퓨터에서 여러 명이 작업할 수 있는 다중 사용자 시스템을 가능하게 했다. 이 시기에 AT&T 에서 C언어로 유닉스를 개발했고, 유닉스는 다중 사용자를 지원하는 운영체제이다. 

 

2.6 분산 시스템 (1970년대 후반)

1977년 스티브잡스가 최초의 개인용 컴퓨터를 발표하였고, 이 시기에는 개인용 컴퓨터의 운영체제로 애플의 매킨토시와 마이크로소프트의 MS DOS가 많이 사용되었다. 이 시기에는 인터넷도 함께 등장했는데, 서로 호환되지 않는 LAN을 하나로 묶기 위한 연구의 결과로 아르파넷이 만들어졌다. 아르파넷이 대중에게 개방되며 컴퓨터간의 네트워킹을 위한 TCP/IP라는 프로토콜을 정의하였고 오늘날의 인터넷은 이때 정의된 TCP/IP를 아직까지 사용하는 것이다.

개인용 컴퓨터와 인터넷이 보급되면서 값싸고 작은 컴퓨터들을 하나로 묶어 대형 컴퓨터에 버금가는 시스템을 만들게 되었는데 이를 분산 시스템(distributed system)이라 부른다. 분산 시스템은 네트워크 상에 분산되어있는 여러 컴퓨터로 작업을 처리하고 그 결과를 상호 교환하도록 구성된 시스템이다.

 

2.7 클라이언트/서버 시스템 (1990년대~현재)

분산시스템에 속한 모든 컴퓨터는 동일한 지위이기 때문에 컴퓨터가 고장나면 작업을 분해하거나 결과를 모으기 쉽지 않다. 이 단점을 해결하는 기술인 클라이언트/서버 시스템이 있다. 작업을 요청하는 클라이언트와 요청받은 작업을 처리하는 서버의 이중 구조로 나뉜다.

웹시스템이 보급되며 대중들에게 알려졌는데, 링크를 통해 접속하는 것 또한 전형적인 클라이언트/서버 구조이다. 이 시스템의 문제점으로는 서버 과부하인데, 사용자가 집중될 경우에 클라이언트의 요청을 처리하기 위해 많은 서버와 대용량의 네트워크가 필요하기 때문이다. 유명 공연/전시회의 티켓팅에 사람이 몰리면 서버가 다운되는 경우도 마찬가지의 경우다.

 

2.8 P2P 시스템 (2000년대 초반~현재)

2.8.1 P2P 시스템의 개념

1990년대 말 MP3 가 유행하면서 음악파일을 공유하려는 시도가 많았고, 클라이언트/서버 시스템이 과부하되는 경우가 있었다. 웹 페이지보다 MP3 파일의 크기가 크기 때문에 기존 구조로 구현할 수 없었기 때문이다. 이 때 등장한 것이 P2P 시스템(Peer-to-Peer System)이다. peer는 사용자의 컴퓨터를 가리키며, p2p는 서버를 거치지 않고 사용자와 사용자를 직접 연결한다는 의미이다. 

 

2.8.2 P2P 시스템의 예: 메신저

P2P 시스템을 이용하여 만든 최초의 MP3 파일 공유 프로그램은 미국의 냅스터이다. 비슷한 컨셉으로 한국에서는 소리바다가 만들어졌지만, 둘 다 불법 소프트웨어로 제재를 받았다. 이 기술은 불법 규제 때문에 발전하지 못하다가 메신저 프로그램에 도입되어 큰 발전을 이뤘다. 수만 명이 채팅을 하거나 파일을 주고받는 메신저는 클라이언트/서버 구조가 아닌 P2P 기술을 이용해야 효율적으로 서버의 부하 없이 구현이 가능하다. 

사용자 인증과 출석 등의 정보만 받고, 절차가 완료되면 서버를 거치지 않고 사용자 간에 직접 채팅을 하거나 데이터를 주고 받을 수 있다.

 

2.8.3 P2P 시스템의 예: 파일 공유

기존의 MP3 파일 공유 시스템은 파일 전송 도중 파일 보유자가 프로그램을 끄면 전송이 중단된다. 이러한 단점을 보완하며 P2P 시스템이 발전하고 있다. 대용량 P2P 파일 시스템은 서버에서 같은 파일을 가진 여러 사람으로부터 데이터를 나눠받는다. 1명에게 데이터를 받는것보다 10명에게 데이터를 받는 것이 10배 빠르다. 만약 누군가가 전송을 중단해도 다른 사람에게 나머지 데이터를 받을 수 있다.

대용량 P2P 시스템은 서버가 있는 시스템과 없는 시스템으로 나뉘는데, 서버가 없는 P2P 시스템의 대표적인 예로 비트코인의 블록체인이 있다. 비트코인은 블록체인 기법을 사용하여 서버가 없는 완전한 P2P 방식으로 거래 장부처럼 매매 기록을 남기도록 하였다. 이 기법은 시스템 전체에 거래 장부를 분산시킴으로써 하나의 장부가 조작되거나 유실되더라고 거래에 영향을 미치지 않는다. 전체 시스템의 50% 이상이 동의했을 때만 거래 장부의 변경이 가능하도록 함으로써 악의적인 공격을 방어할 수 있다. 

 

2.9 기타 컴퓨팅 환경(2000년대 초반~현재)

2.9.1 그리드 컴퓨팅

토이스토리 같은 3D 애니메이션을 제작한다고 할 때, 제작 과정에서는 고성능 PC가 필요하지만 제작 이후에는 활용도가 떨어진다. 이러한 경우에 필요한 기간동안만 PC를 사용하며 비용을 지불한다면 훨씬 효율적일 것이다. 이처럼 컴퓨팅 자원을 필요한만큼 구매하여 사용하는 환경그리드 컴퓨팅(grid computing) 이라 한다.

그리드 컴퓨팅은 분산 시스템의 한 분야로, 서로 다른 컴퓨터를 묶어 대용량의 컴퓨터 풀을 구성하고 이를 원격지와 연결하여 대용량 연산을 수행하는 컴퓨팅 환경이다. 대용량의 연산을 소규모로 나누어 분산시킨다는 점에서 분산 시스템이라고 볼 수 있다. 일반적으로 연구용이나 상업용으로 이용된다. 

일반인은 웹하드 서비스에서 그리드 시스템을 경험할 수 있다. 누군가가 웹하드에서 a 파일을 내려받으려고 시도하면 서버에서 주는 것이 아니라 전에 a 파일을 내려받은 컴퓨터로부터 몰래 데이터를 빼와서 전달하는데, 이 기술을 그리드 딜리버리(grid delivery) 라고 부른다. 그리드 딜리버리는 사용자의 컴퓨터를 느리게 하는 주범으로, 일부 웹하드 서비스 업체가 무료로 웹하드 이용권을 나눠주는 것은 몰래 사용자의 컴퓨터에 그리드 딜리버리 프로그램을 설치하여 서버의 부하를 줄이기 위한 것이다.

그리드 컴퓨팅이 하드웨어적인 컴퓨팅 환경의 통합이라면 SaaS(Software as a Service)는 사용자가 필요할 때 소프트웨어 기능을 이용하고 비용을 지불하는 개념이다. SaaS는 필요한 기능을 모아 서버에서 실행하고, 사용자는 필요한 서비스만 인터넷으로 제공받으며 월별 혹은 서비스 이용량에 비례하여 비용을 지불하는 서비스이다. 프로그램을 깔거나 업데이트를 할 필요없이 인터넷 접속만을 통해 이용할 수 있다는 장점이 있다.

2.9.2 클라우드 컴퓨팅

클라우드 컴퓨팅(cloud computing)은 그리드 컴퓨팅과 SaaS를 합쳐놓은 것으로, 언제 어디서나 응용 프로그램과 데이터를 자유롭게 사용할 수 있는 컴퓨팅 환경이다. 시스템이 구름에 가려진 것처럼 사용자에게 보이지 않는 컴퓨팅 환경이라는 의미에서 클라우드라는 명칭이 붙게 되었다고 한다.

2006년 구글의 직원이 처음 제안한 것으로, 기기 간의 데이터 이동이 자유롭다는 장점이 있다. 클라우드 컴퓨팅은 IT 산업 전반에 많이 활용되고 있다. 과거에는 회사에서 홈페이지 서비스를 제공하기 위해 서버를 설치하거나 관리 인력을 따로 뒀지만, 오늘날에는 클라우드 서버에 회사 홈페이지를 올려두고 사용한만큼만 비용을 지불하면, 서버와 네트워크 관리를 클라우드 서버 제공자가 알아서 해준다.

클라우드는 백업을 통해 휴대폰을 바꾼다해도 이전 휴대폰과 같은 상태로 사용하는 등의 장점이 있다. 클라우드 컴퓨팅 환경을 통해 구현하기 어려웠던 기술을 가능케 할 수 있으며, 또한 4차 산업혁명에 보탬이 되고 있다.

 

2.9.3 사물 인터넷

사물 인터넷(Internet of Things, IoT)은 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술이다. 인터넷으로 연결된 사물들이 데이터를 주고받아 스스로 분석하고 학습한 정보를 사용자에게 제공하거나 새로운 서비스를 창출하는 기술이다. 이는 재난 방지 시스템, 에너지 제어 시스템, 스마트 시티 등 다양한 분야에서 활용되고 있다.

 

 

+ Recent posts