에니악 (Electronic Numerical Integrator And Computer; ENIAC)
펜실베이니아대학의 존 모클리와 존 에커트가 만들었다. 30톤 규모의 거대한 계산기로 미사일 탄도를 계산하기 위해 제작되었다. 18,000개의 진공관을 전선으로 연결하여 구성된다. (하드와이어링 방식) 백열전구 같은 모양의 진공관이라는 소자를 사용하여 진공관이 켜지면 1, 꺼지면 0이라고 판단 (컴퓨터가 2진법을 사용하는 계기) 에니악에는 운영체제가 없다.
* 하드와이어링hard wiring 방식 하드와이어링은 전선으로 논리회로를 구성하여 원하는 결과만 얻는 방식 다른 계산이나 수식을 사용하려면 전선을 다시 연결해야 함
일괄 작업 시스템 (1950년대)
진공관을 전선으로 연결했던 초창기의 컴퓨터(에니악)는 기술발전을 거쳐 IC(Integrated Circuit)라는 칩으로 만들어지게 되었다. 이를 이용해 현대적인 모습의 컴퓨터가 탄생했다. 이때의 컴퓨터에는 중앙처리장치인 CPU와 메인메모리는 있었으나 키보드, 모니터와 같은 입출력장치가 없었기 때문에 천공카드 리더를 입력장치로, 라인프린터를 출력장치로 사용했다. 하드와이어링 시스템은 다른 작업을 하려면 전선을 일일이 연결해야 했지만, 천공카드 리더와 라인 프린터를 사용함으로써 프로그램만 바꾸면 다른 작업이 가능하다.
* 천공카드 리더 punch card reader OMR(Optical Mark Reader)의 원조 격. 천공카드 시스템은 프로그램을 구성한 후 카드에 구멍을 뚫어 컴퓨터에 입력하면 프로그램이 실행되는 구조 프로그램의 실행 결과가 라인 프린터를 통해 출력
* 라인 프린터 line printer 문자만 출력하는 프린터로 한 번에 한 줄씩 출력하기 때문에 라인 프린터라는 이름이 붙음
천공카드 리더로 하나의 작업을 읽어 들여 실행하고 결과를 출력한 후 다음 작업을 읽어 들여 실행한다. 이러한 시스템에서는 작업에 필요한 프로그램과 데이터를 동시에 입력해야 작업이 가능하다.
일괄 작업 시스템batch job sytem
= 일괄 처리 시스템 batch processing system 모든 작업을 한꺼번에 처리해야 하고 프로그램 실행 중간에 사용자가 데이터를 입력하거나 수정하는 것이 불가능하다. 작기는 하지만 운영체제가 사용되었기 때문에 메인메모리가 운영체제의 상주 영역과 사용자의 사용영역으로 나뉘어 있으며, 현재 거의 사용되지 않지만 그 흔적이 남아있다. 윈도우 운영체제가 사용하는 파일 중 부팅 시 읽는 config.sys, autoexec.bat 파일이 있는데, autoexec.bat의 확장자 bat은 'batch job'을 의미한다. autoexec.bat파일은 운영체제가 시작할 때 한꺼번에 처리해야 할 작업을 모아놓은 것이다.
대화형 시스템 (1960년대 초반)
컴퓨터와 사용자의 대화를 통해 작업이 이루어진다. 1960년대 초반에 키보드와 모니터가 등장함으로써 작업 중간에 사용자가 입력하거나 사용자에게 중간 결괏값을 보여줄 수 있게 되었다. 중간 결괏값을 출력하여 프로그램에 이상이 있는지, 혹은 프로그램이 정상적으로 진행되고 있는지도 확인할 수 있다. 프로그램이 진행되는 도중에 사용자로부터 입력을 받을 수 있어 입력값에 따라 작업의 흐름을 바꾸는 것도 가능하다. 일괄작업시스템은 단순 계산 위주의 작업만 가능했으나, 대화형 시스템의 등장으로 문서 편집기, 게임과 같은 다양한 종류의 응용프로그램을 만들 수 있게 되었다. 일괄 시스템은 입출력이 거의 없어 작업 시간을 예측할 수 있지만 대화형 시스템의 경우 작업시간을 예측하기 어렵다.
* CPU 집중 작업 일괄 작업 시스템에서는 프로그램이 실행되는 동안 입출력이 불가능하기 때문에 대부분의 작업이 CPU만 사용하는 계산작업이었다. 이를 CPU 집중 작업 (CPU bound job), CPU 편향 작업 또는 컴퓨터 집중 작업 (computer bound job)이라고 부른다 ex) 수학 계산과 같은 프로그램
* 입출력 집중 작업 대화형 시스템에서는 프로그램이 실행되는 동안에 입출력이 가능하기때문에 입출력 집중 작업 I/O bound job이 생겨났다 입출력 집중 작업 또는 입출력 편향 작업은 대부분의 작업 시간을 주변장치의 입력과 출력에 사용한다 ex) 동영상 플레이어와 데이터베이스 같은 프로그램
5. 시분할 시스템 (1960년대)
1) 시분할 시스템의 개념
다중 프로그래밍 multiprogramming
하나의 CPU로 여러 작업을 동시에 실행하는 기술로, 한 번에 하나의 작업만 가능한 일괄 작업 시스템에 비해 효율성이 뛰어나다. 다중 프로그래밍 시스템에서는 CPU 사용 시간을 아주 잘게 쪼개어 여러 작업에 나누어줌으로써 모든 작업이 동시에 처리되는 것처럼 보인다. 이것을 시분할 시스템(time sharing system), 다중 작업(multitasking) 시스템이라고도 한다. 시분할 시스템에서 잘게 나뉜 시간 한 조각을 타임 슬라이스(time slice) 또는 타임 퀀텀(time quantum)이라고 한다.
시분할 시스템의 단점
여러 작업을 동시에 처리하기 위한 추가 작업이 필요하다 시스템 내에 많은 양의 작업이 공존할 경우, 중요한 작업이 일정 시간 안에 끝나는 것을 보장하지 못한다. 원자력이나 미사일을 제어하는 시스템과 같이 중요한 작업은 일정 시간 안에 끝나지 않으면 심각한 문제가 발생할 수 있기 때문에 시분할 시스템을 사용하지 않고 특정 시스템에서 일정 시간 안에 작업이 처리되도록 보장하는 실시간 시스템을 사용한다.
※ 실시간 시스템 real-time system - 경성 실시간 시스템 hard real-time system 지정한 응답 시간을 정확히 지키는 시스템. 원자력 발전소의 원자로 온도 제어, 미사일 요격과 같은 작업에 이용된다. - 연성 실시간 시스템 soft real-time system 지정한 응답 시간을 최대한 지키지만 융통성이 어느 정도 허용된 시스템. 동영상 재생기는 응답 시간 안에 작업이 처리되지 않으면 끊김 현상이 발생하지만 치명적인 결과를 낳지 않는다.
2) 다중 사용자 시스템
시분할 시스템에서 동시에 실행되는 작업의 개수를 멀티프로그래밍 수준(level of multiprogramming) 또는 멀티프로그래밍 정도(degree of multiprogramming)라고 한다.
일괄 작업 시스템은 멀티프로그래밍 수준이 1이고, 다중 프로그래밍 시스템의 멀티프로그래밍 수준은 3이다. 시분할 시스템에서 여러 작업을 동시에 실행할 수 있다는 것은 한 사람이 여러 프로그램을 동시에 실행할 수 있다는 의미이기도 하고, 여러 사람이 동시에 작업 할 수 있다는 의미이기도 하다. 즉 시분할 시스템은 하나의 컴퓨터에서 여러 명이 작업할 수 있는 다중 사용자 시스템 multi-user system을 가능하게 했다. 값비싼 컴퓨터를 한 사람 또는 하나의 작업이 독점하는 것이 아니라 여러 사람이 동시에 사용할 수 있는 환경이 만들어진 것이다. 이 시기에 AT&T 벨 연구소에서 C언어로 유닉스를 개발했다.
유닉스는 멀티프로그래밍과 다중 사용자를 지원하는 운영체제로서, 소스코드를 공개하고 다양한 업체 및 프로그래머와 공동 작업 끝에 탄생한 작고 안정적인 운영체제이다. 'uni-'는 하나라는 뜻의 접두어로, 유닉스는 그 이름이 나타내듯이 단순함을 지향하여 현대 운영체제의 기본 개념을 수립했다.
분산 시스템 (1970년대 후반)
1977년 스티브 잡스가 최초의 개인용 컴퓨터인 '애플 Ⅱ'을 발표하면서 개인이 컴퓨터를 소유하는 것이 쉬워졌다. 이 시기에는 소프트웨어도 급속도로 발전했다. 특히 운영체제 시장이 급속히 커졌으며, 개인용 컴퓨터의 운영체제로 애플의 매킨토시와 마이크로소프트의 MS-DOS가 많이 사용되었다.
1970년대 후반은 인터넷이 등장한 시기이기도 하다. 1960년대에 미국의 ARPA는 서로 호환되지 않는 LAN 들을 하나로 묶기 위한 연구를 했는데, 그 결과로 아르파넷 ARPAnet이 만들어졌다.이후 아르파넷은 대중에게 개방되었고 컴퓨터 간의 네트워킹을 위한 TCP/IP라는 프로토콜을 정의했다 (오늘날의 인터넷은 이때 정의된 TCP/IP를 사용하여 통신)
* 아르파넷 ARPAnet 1960년대에 미 국방성의 지원으로 구축한 데이터 네트워크이다. 1972년부터 본격적으로 시작되어 1990년까지 가동되었다. 이 네트워크가 현재 인터넷의 기반이 되었다. 아르파넷은 네트워크의 일부가 파괴되더라도 남아 있는 네트워크가 제 기능을 할 수 있는 컴퓨터 상호 접속 방식을 취하면서 세계 최초로 패킷교환방식에 의한 데이터 통신을 실현하였다. 이것이 인터넷의 기술적인 출발점이 되었고 현재 인터넷의 표준 프로토콜인 TCP/IP도 이 네트워크에서 사용하기 위해 개발되었다.
개인용 컴퓨터와 인터넷 덕분에 새로운 컴퓨팅 환경이 조성되었다. 당시에는 복잡한 계산이나 많은 양의 데이터를 처리하기 위해 메인프레임이라는 고가의 대형 컴퓨터를 사용했다. 하지만 개인용 컴퓨터와 인터넷이 보급되면서 값이 싸고 크기가 작은 컴퓨터들을 하나로 묶어 대형 컴퓨터에 버금가는 시스템을 만들게 되었는데 이를 분산시스템이라고 한다. 분산 시스템은 네트워크상에 분산되어있는 여러 컴퓨터로 작업을 처리하고 그 결과를 상호 교환하도록 구상한 시스템이다.
7. 클라이언트/서버 시스템(1990년대~현재)
분산 시스템은 시스템에 참가하는 모든 컴퓨터가 동일한 지위이기 때문에 컴퓨터가 고장 나거나 추가되면 작업을 분배하고 결과를 모으기 쉽지 않다. 클라이언트/서버 시스템은 이러한 문제점을 해결하는 기술로, 분산 시스템과 달리 작업을 요청하는 클라이언트와 거기에 응답하여 요청받은 작업을 처리하는 서버의 이중 구조로 나뉜다. 클라이언트/서버 구조가 일반인들에게 알려진 것은 웹 시스템 web system이 보급된 이후이다. 웹 시스템의 등장으로 그림이나 링크를 통한 다양한 응용 서비스가 가능해지자 인터넷을 사용하는 일반인이 급속도로 늘어나게 되었는데, 웹 시스템은 전형적인 클라이언트/서버 구조를 이루고 있다. 클라이언트/서버 구조의 문제점으로는 서버 과부하가 있다. 모든 요청이 서버로 집중되기 때문에 수십만 명의 클라이언트를 처리하기 위해서는 많은 서버와 큰 용량의 네트워크가 필요하다.
* 데몬 demon 클라이언트/서버 시스템에서는 서버가 멈추지 않고 계속 작동하여 클라이언트의 요청을 처리해야 하는데, 이렇게 멈추지 않고 계속 작동하는 프로그램을 데몬이라고 한다. 보통 데몬을 가진 컴퓨터를 서버라고 부르며, 웹 데몬이 설치된 컴퓨터는 웹 서버, FTP 데몬이 설치된 컴퓨터는 FTP 서버, 이메일 데몬이 설치된 컴퓨터는 이메일 서버라고 한다. 웹 데몬의 역할을 하는 프로그램으로는 아파치 톰켓 Apache Tomcat, IIS(Internet Information Service) 등이 있다.
P2P 시스템(2000년대 초반~현재)
1) P2P 시스템의 개념
1990년대 말에 전 세계의 MP3 음악 파일을 공유하려는 시도가 있었으나 클라이언트/서버 시스템의 서버 과부하가 문제였다. 웹 페이지는 한 페이지가 수 킬로바이트이지만 MP3 파일은 수 메가바이트에 달하기 때문에 기존의 클라이언트/서버 구조로 MP3 파일 공유 시스템을 구현하면 서버 과부하로 서비스를 할 수 없다. 서버의 부하를 줄일 수 있는 새로운 시스템으로 P2P 시스템(Peer-to-Peer system)이 만들어졌다. peer는 말단 노드. 즉, 사용자의 컴퓨터를 가리키며, P2P는 서버를 거치지 않고 사용자와 사용자를 직접 연결한다는 의미이다. P2P 시스템에서는 서버가 파일 검색만 맡고 사용자 간에 파일 전송이 이루어지기 때문에 서버의 부하가 적다는 것이 장점이다.
2) P2P 시스템의 예 : 메신저
P2P 시스템을 이용하여 만든 최초의 MP3 파일 공유 프로그램은 1999년 서비스를 시작한 미국의 냅스터 Napster 우리나라에서는 이를 따라 소리바다가 만들어졌지만, 저작권 문제로 둘 다 불법 소프트웨어로 규정되어 사용이 금지되었다. P2P 기술은 불법 소프트웨어 기술 규제 때문에 발전하지 못하다가 메신저 프로그램에 도입되어 큰 발전을 이루었다. 수만 명이 동시에 채팅을 하고 파일을 주고받는 메신저 프로그램은 클라이언트/서버 구조로 만들 수 없으며 P2P 기술을 이용하면 서버의 부하 없이 구현할 수 있다. 메신저에 로그인하면 먼저 서버에 접속해 사용자 인증(certification)과 출석(presence) 등의 정보를 받는다. 출석은 친구나 관련자가 어디에 있는지, 어떤 상태인지 확인하는 과정을 말하는데, 이런 절차가 완료되면 서버를 거치지 않고 사용자 간에 직접 채팅을 하거나 데이터를 전달 할 수 있다.
3) P2P 시스템의 예 : 파일 공유
대용량 파일 공유 P2P 시스템은 같은 파일을 가진 여러 사람으로부터 데이터를 나눠 받는다. 예를 들어 K.avi라는 동영상을 받는다면 K.avi를 가진 여러 사용자로부터 조금씩 나누어 받아 하나의 파일을 완성한다. 10명에게서 데이터를 받는다면 1명에게 데이터를 받을 때보다 속도가 10배 빠를 뿐만 아니라, 데이터를 받는 도중 1~2명이 프로그램을 중단해도 다른 사람에게 나머지를 받을 수 있다.
* 서버가 있는 P2P 시스템 : 메신저. 사용자 인증과 출석 정보, 과거 데이터 보관 등을 위해 서버를 사용한다. * 서버가 없는 P2P 시스템 : 비트코인의 블록체인
- 비트코인 인터넷 상에 존재하는 가상화폐로, 비트코인을 사거나 팔 때 누가 얼마만큼 사고 팔았는지를 장부에 기록해야 한다. 실제 화폐라면 은행 데이터베이스에서 관리하겠지만 실물이 없는 가상화폐의 경우 그 기록을 누가 관리할 지 정할 수 없다. 혹 관리자를 정한다하더라도 누군가가 장부를 조작하거나 없애면 화폐의 가치가 사라진다. 따라서 비트코인은 블록체인 기법을 사용하여 서버가 없는 완전한 P2P 방식으로 거래 장부의 문제를 해결했다. 블록체인 기법의 경우 P2P 시스템 전체에 거래 장부를 분산시킴으로써 하나의 장부가 조작되거나 유실되더라도 거래에 영향을 미치지 않는다. 전체 시스템의 50% 이상이 동의했을 때만 거래 장부의 변경이 가능하도록 함으로써 악의적인 공격을 방어한다.
기타 컴퓨팅 환경 (2000년대 초반~현재)
그리드 컴퓨팅 grid computing
필요한 컴퓨팅 자원을 구매하여 사용하는 컴퓨팅 환경을 그리드 컴퓨팅이라고 부른다. 그리드 컴퓨팅은 분산 시스템의 한 분야로, 서로 다른 기종의 컴퓨터들을 묶어 대용량의 컴퓨터 풀(computer pool)을 구성하고 이를 원격지와 연결하여 대용량 연산을 수행하는 컴퓨팅 환경이다. 대용량 데이터의 연산을 소규모 연산으로 나누어 여러 대의 컴퓨터로 분산시킨다는 점에서 분산 시스템이라고 볼 수 있다. 그리드 컴퓨팅은 CPU 관리, 저장소 관리, 보안 조항, 데이터 이동, 모니터링과 같은 서비스를 위한 표준 규약 생성에 기여했다. 그리드 시스템은 분산 시스템과 마찬가지로 일반인을 위한 시스템이라기보다는 연구용, 상업용으로 이용되는 시스템으로, 일반인은 웹 하드 서비스에서 그리드 시스템을 경험할 수 있다. 서버에 엄청난 양의 데이터를 보관하는 웹 하드는 사용자에게 데이터를 전송할 때 과부하가 걸리기도 하여 이를 해결하기 위해 대용량 데이터 P2P 시스템 기술을 사용한다.
그리드 딜리버리grid delivery
누군가가 웹하드에서 K.avi 파일을 내려받으려고 하면 서버에서 주는 것이 아니라 전에 K.avi 파일을 내려받은 컴퓨터로부터 몰래 데이터를 빼 와서 전달하는데, 이러한 기술을 그리드 딜리버리(grid delivery)라고 부른다. 사용자의 컴퓨터를 느리게 하는 주범으로, 일부 웹 하드 서비스 업체가 무료로 웹 하드 이용권을 나누어 주는 것은 서비스 가입자 몰래 그리드 딜리버리 프로그램을 깔아서 서버의 부하를 줄이기 위함이다. 자신의 컴퓨터 자원을 빼앗기기 싫다면 그리드 딜리버리 프로그램을 찾아서 지우는 것이 좋다.
Saas (Software as a Service)
사용자가 필요할 때 소프트웨어 기능을 이용하고 그만큼만 비용을 지불하는 개념이다. 일반적으로는 소프트웨어를 사용자의 컴퓨터에 설치한 후 사용하지만, SaaS의 경우 필요한 기능을 모아 서버에서 실행하고 사용자는 인터넷을 통해 필요한 서비스만 제공받으며 월별로 혹은 서비스를 이용한 만큼 비용을 지불한다. 프로그램을 깔거나 업데이트할 필요 없이 인터넷에 접속하면 누구나 이용할 수 있다는 것이 가장 큰 장점이다.
2) 클라우드 컴퓨팅 cloud computing
언제 어디서나 응용 프로그램과 데이터를 자유롭게 사용할 수 있는 컴퓨팅 환경으로 그리드 컴퓨팅과 SaaS를 합쳐놓은 형태이며, IT 산업 전반에 많이 활용되고 있다. 하드웨어를 포함한 시스템이 구름에 가려진 것처럼 사용자에게 보이지 않는 컴퓨팅 환경이라는 의미에서 클라우드라는 명칭이 붙게 되었다.
PC, 휴대전화, 스마트 기기 등을 통해 인터넷에 접속하고, 다양한 작업을 수행하며, 기기 간의 데이터 이동이 자유로운 컴퓨팅 환경이다. 집이나 회사의 컴퓨터에 소프트웨어를 깔고 이동 저장장치로 데이터를 옮기는 것에 비해 매우 편리한 방식이다. 클라우드 컴퓨팅 환경에서는 클라우드 서버에 회사 홈페이지를 올려놓고 사용한 만큼 비용을 지불하면 되며, 서버 관리와 네트워크 관리를 클라우드 서버 제공자가 알아서 해주기 때문에 편리하다. 클라우드 컴퓨팅이 현재는 일반인에게도 활용되기 시작했는데 스마트폰 백업을 예로 들 수 있다. 클라우드 컴퓨팅 환경은 많은 계산을 해야 해서 구현하기 어려웠던 기술을 가능하게 함으로써 4차 산업혁명을 이끌고 있다.
3) 사물 인터넷 Internet Of Things, IoT
사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술이다. 인터넷으로 연결된 사물들이 데이터를 주고받아 스스로 분석하고 학습한 정보를 사용자에게 제공하거나 새로운 서비스를 창출하는 사물 인터넷은 인공지능, 로봇 공학, 무인 운송 수단, 3D 인쇄, 나노 기술과 더불어 4차 산업혁명을 이끄는 기술이다. 지하철과 버스의 도착 예정 시간을 알려주고 각종 전자 제품을 스마트폰으로 제어하는 등 사물 인터넷 기술도 점차 대중화되고 있다. 재난 방지 시스템, 안드로이드 운영체제를 이용한 커넥트카, 에너지를 제어하는 스마트 그리드, 공공 기물을 관리하는 스마트 시티 등 다양한 분야에서 사용된다.