컴퓨터(computer)

프로그램에 의해 데이터를 입력·처리·저장·검색하여 결과를 출력하는 전자장치. 컴퓨터의 기본적인 기능은 ① 고속연산(高速演算) ② 대량 데이터의 기억 ③ 데이터의 다양한 형태로서의 입출력 등이다.


1812년경 영국의 수학자 C. 배비지에 의해 처음으로 자동계산기에 대한 생각이 다루어진 이후 1944년 하버드 대학의 에이킨이 IBM사와 협력해 제작한 계전기를 사용, 1초에 덧셈을 3번 할 수 있는 전기기계식 계산기 마크-원(MARK-I )은 배비지의 해석기관의 설계개념을 계전기와 스위치·전동기 등으로 구현한 최초의 자동계산기이다.


진공관을 사용한 최초의 전자식 계산기는 미국 펜실베이니아 대학의 J. P. 에커트와 J. W. 모클리에 의해 1946년에 완성된 에니악(ENIAC)이다.


MARK-I 에서는 계산을 제어하는 데 종이테이프가 쓰였지만, 에니악에서는 배선판이 쓰였다.


그러나 프로그램을 배선판에 일일이 배선하는 외부 프로그램 방식이었으므로 작업에 따라 배선판을 교체해야만 했다.


에니악의 단점을 보완하기 위해 J. 노이만은 45년 기억장치에 컴퓨터의 명령이나 데이터를 모두 기억시키는 프로그램 내장방식을 제안했다.


그후 49년에 영국의 케임브리지 대학에서 이 프로그램 내장방식을 채택, 세계 최초로 내부기억장치가 있는 에드삭(EDSAC)을 개발했는데, 소프트웨어면에서 컴퓨터 역사상 불후의 명기(名機)였다.


에니악 이후 오늘날까지 컴퓨터의 발달 시기를 기억장치의 기억소자에 따라 구분, 세대를 나누어보면 다음과 같다.


① 제1세대(1940~50년대 후반) : 주요 기억소자로 진공관을 사용했고, 연산속도는 밀리초(ms) 단위였다.


② 제2세대(1950년대 후반~60년대 중반) : 주요 기억 소자로 진공관 대신 트랜지스터를 사용했다.


고장률과 소비전력이 적고, 부피가 작아졌다.


연산속도가 마이크로초(μS) 단위여서 일반 사무처리에도 이용되었으며, 고급언어와 원거리 데이터를 처리하는 원거리 데이터 통신이 도입되었다.


③ 제3세대(1960년대 중반~70년대 후반) : 기억소자로서 하나의 칩에 여러 개의 트랜지스터를 조립해 만든 집적회로(IC)를 사용했다.


과학기술 계산뿐만 아니라 사무처리도 할 수 있는 범용 컴퓨터가 개발되었다.


연산속도는 나노초(ns) 단위로 빨라졌다.


컴퓨터 내부에서 시스템을 관리·제어하는 운영체제(OS)가 발달해 다수의 프로그램을 동시에 처리할 수 있는 온라인 시스템 등도 가능해졌다.


④ 제4세대(1970년대 후반~현재) : 하나의 칩에 많은 회로를 집적시킨 고밀도 집적회로(LSI)와 초고밀도 집적회로(VLSI)를 사용했다.


연산속도는 피코초(ps) 단위로 빨라졌다. 부피가 초소형화한 개인용 컴퓨터의 등장과 마이크로 프로세서의 개발로 컴퓨터가 각종 산업기계에 응용됨으로써 공장자동화 시스템이 이루어졌으며, 통신기술의 발달로 세계 전역의 통신망이 컴퓨터와 연결되어 가정에서도 단말기를 통해 모든 정보를 쉽게 얻을 수 있게 되어 컴퓨터 이용의 대중화시대가 열렸다.


앞으로 개발될 제5세대에는 분자나 원자 크기의 지능을 갖는 소자가 개발될 것이며, 현재 컴퓨터의 처리속도보다도 수천 배나 빨라질 것이다.


현대의 프로그램 내장형 컴퓨터는 하드웨어와 소프트웨어로 구성된다.


하드웨어는 컴퓨터 캐비닛 내부의 전자회로 및 각종 기계장치로 이루어진 부분을 의미하며, 소프트웨어는 이러한 하드웨어를 활용해 소기의 목적을 달성할 수 있게 작성된 프로그램을 뜻한다.


〔하드웨어〕 하드웨어는 제어장치·연산장치·주기억장치·입력장치·출력장치 등 5가지 요소로 구성된다.


제어장치와 연산장치를 합쳐 중앙처리장치(central processing unit : CPU)라고 한다.


① 입력장치 : 입력매체에 기록된 프로그램과 데이터를 컴퓨터 내부로 읽어들여 주기억장치나 중앙처리장치로 보낸다.


계산순서나 데이터를 기억장치에서 해독하게 하는데, 보통 천공 카드·천공 테이프 또는 키보드(건반)가 쓰인다.


② 출력장치 : 컴퓨터 밖으로 데이터를 빼내기 위한 장치. 레이저프린터, 라인프린터, 영상표시장치, 엑스와이(XY) 플로터, 콤(COM ; computer output microfilm) 장치, 입출력 겸용 자기 테이프장치·자기디스크장치·플로피 디스크 장치, 음성출력장치 등이 있다.


③ 주기억장치 : 사람이 작성한 프로그램과 프로그램에서 처리하기 위한 데이터, 그리고 처리된 결과를 기억시키는 장치. 중앙처리장치와 직접 자료를 교환할 수 있는 기억장치이다.


외부기억장치로부터의 데이터나 처리결과를 일시적으로 기억시키는 작업 기억장소로도 사용된다.


컴퓨터에서는 2진법으로 연산한다.


2진수의 한 자리가 컴퓨터에서 다루는 최소단위인데, 이를 1비트(bit)의 정보라고 한다.


문자나 수치는 몇 bit를 조합해 표현한다.


8개의 비트가 조합된 단위를 바이트(byte)라 하며, 2, 4, 8byte 등을 모아 구성한 것을 워드라 한다.


주기억장치는 이들 단위의 기억장소를 많이 모은 것인데, 각 기억장소에는 번지(address)라는 일련번호가 매겨져 있다.


주기억장치의 성능은 기억용량과 작동속도에 의해 평가되는데, 용량표시는 킬로바이트(KB) 또는 메가바이트(MB) 단위로 표시된다.


작동속도는 접근시간(access time)으로 나타내며 보통 마이크로초(μS). 나노초(ns)단위로 표시된다.


현재 많이 사용되는 기억장치는 기능에 따라 롬(ROM)과 램(RAM)으로 분류된다.


롬은 기억된 내용을 읽기만 하고 기억된 내용을 바꾸거나 지울 수 없는 장치이며, 전원의 공급이 중단되어도 기억된 내용은 지워지지 않는다.


램은 사용자가 작성한 프로그램이나 데이터를 기억시키는 장치이며, 롬과 달리 기억된 내용을 임의로 읽거나 변경할 수 있으나, 전원의 공급이 중단되면 기억된 내용이 소멸하므로 내용을 보존하려면 보조기억장치가 필요한데, 정적 램(SRAM)과 동적 램(DRAM)이 있다.


④ 연산장치 : 프로그램의 명령에 따라 사칙연산의 산술연산과 두 수의 크기를 비교·판단하는 논리연산을 하는 장치. 산술연산과 논리연산을 수행하는 데 필요한 논리회로(전자회로)로 구성되어 있으며, 컴퓨터의 구성요소 가운데서 유일하게 자료를 변형할 수 있는 장치


이다.


논리회로는 논리곱(AND)·논리합(OR)·부정(NOT) 회로 등의 기본 논리회로(게이트)가 있으며, 이들 기본회로를 조합해 사칙연산, 데이터의 기억, 데이터의 이동 등의 연산을 한다.


그 밖에 기본 논리회로에는 부정논리곱(NAND)·부정논리합(NOR) 회로가 있다.


논리회로에 사용되는 소자를 논리소자라하며, 초기의 계전기·진공관에서 현재의 트랜지스터 ·집적회로·고밀도 집적회로를 거쳐 초고밀도 집적회로로 발전했다.


이들 논리회로를 조합하면, 1 자리의 2진수 A와 B를 덧셈해 1bit의 합 S와 1bit의 올림수 C를 구하는 회로인 반가산기(half-adder)가 된다.


반가산기를 2개 이용하면 1자리의 2진수 bit D와 E. 이보다 낮은 자리에서의 올림수 F를 계산하고, 그 합 T와 자리올림 R를 얻는 회로인 전가산기(full-adder)가 된다.


이 전가산기를 다수 이용함으로써 2진 n자리의 가산 회로를 만들 수 있다.


많은 논리소자를 여러 가지로 조합한 복잡한 회로의 입력신호와 출력신호를 해석하기 위해 불 대수(Boolean algebra)가 흔히 쓰인다.


중요한 논리소자로는 플립플롭(flip-flop)이 있다.


이것은 2진수 한 자리를 기억할 수 있는 기억소자이다.


연산장치는 플립플롭을 몇 개씩 연결한 레지스터(연산에 필요한 데이터를 일시적으로 기억하는 특수 기억장치)를 중심으로 해 만든다.


플립플롭은 전자적인 스위치의 구설도 하므로, 컴퓨터의 제어회로에서도 중요한 역할을 한다.


⑤ 제어장치 : 주기억장치에 기억된 프로그램의 순서에 따라 그 명령을 해독해 입출력장치 ·주기억장치·보조기억장치에 제어신호를 보내어 작동시키고, 시스템 전체의 작동을 지시· 제어·감독하는 장치. 제어장치는 프로그램 계수기·명령 레지스터·명령해독기·번지해독기 등으로 이루어진다.


프로그램 계수기는 프로그램의 실행순서를 지정하기 위해 다음에 실행될 명령어가 기억되어 있는 주기억장치의 번지를 기억한다.


명령어는 명령 코드부와 번지부로 구성되어 있는데, 명령 코드부에는 실행명령코드가 들어 있고, 번지부에는 실행될 데이터가 기억되어 있는 주기억장치의 번지가 들어 있다.


명령 해독기는 명령 레지스터의 번지부에 있는 번지를 해독해 주기억장치의 해당 번지에 데이터를 처리하는 논리회로이다.


⑥ 외부기억장치 : 자주 쓰는 정보를 파일로서 간직하거나 컴퓨터의 처리과정에서 보조적으로 사용하는 기억장치이며, 자기테이프 기억장치·자기드럼 기억장치·자기디스크 기억장치· 카세트 테이프·플로피 디스크 등이 있다.


〔소프트웨어〕 ① 프로그램 : 컴퓨터로 하여금 목적하는 일을 하게 하려면, 컴퓨터가 이해할 수 있는 언어를 사용해 작업처리방법과 순서를 규정된 형식과 문법에 맞는 명령문으로 알려 주어야 한다.


이와 같은 명령문들의 집합을 프로그램이라 한다.


어떤 컴퓨터라도 산술연산을 위한 명령으로는 덧셈·뺄셈·곱셈·나눗셈의 사칙연산밖에 없으며, 미분방정식이나 적분과 같은 고등수학의 문제도 모두 이 사칙연산으로 고쳐 푼다.


프로그램의 작성법에는 여러 가지가 있는데, 가장 기초적인 것은 컴퓨터 자체의 말, 즉 기계어(機械語)를 사용해 작성한다.


이것은 기억장치에 격납되는 대로 수치에 의해 하나하나 명령어 및 데이터를 작성하는 방식이다.


기계어는 컴퓨터마다 다르다.


1대의 컴퓨터라도 목적에 맞는 프로그램을 만드는 일은 상당히 어렵기 때문에 좀더 프로그램을 만들기 쉬운 방법이 연구되어 왔다.


기계어에 가까운 것에서부터 우리가 일상생활에서 쓰는 말에 가까운 것까지 다양하다.


이것들은 각각의 약속에 따른 언어로 프로그램 언어라고 한다.


이들 언어를 작성할 때는 그 언어를 기계어로 번역하는 프로그램을 준비해 두고, 실행에 앞서 그 번역 프로그램에 걸어 검사한다.


기계어에 가장 가까운 언어는 어셈블리 언어이며, 이를 기계어로 번역해 주는 프로그램을 어셈블러라고 한다.


우리가 일상적으로 사용하고 있는 언어에 가까운 프로그램 언어는 문제 해결지향 언어 또는 고수준(高水準) 언어라 하며, 이들 언어의 번역 프로그램을 컴파일러라고 한다.


② 프로그래밍 : 프로그램을 작성하는 일을 프로그래밍


이라고 한다. 좁은 의미로는 주어진 문제를 분석하고, 문제를 해결하기 위한 명령의 순서를 고안하며, 프로그램을 완성하기까지의 모든 과정을 말한다.


설계의 단계에서는 만들려고 하는 것을 기능 단위로 분해하여 모듈화하는 것이 좋다.


각각의 모듈은 단계적으로 상세화하거나, 그 기능으로 처리할 데이터 구조에 의거해 순서를 정하든지 하여, 최종적으로는 구조화 프로그램을 작성하도록 한다.


디버그(debug ; 오류를 검출 정정하는 일)를 꼼꼼히 해야 한다


디버그의 기법은 프로그램 작성의 중요한 부분을 차지한다.


③ 운영체제 : 데이터 처리과정의 수행에서 가능한 한 프로그램 작성자와 컴퓨터 조작자가 개입하지 않고 컴퓨터가 자동으로 수행할 수 있도록 하는 프로그램의 집합. 최근에는 미니컴퓨터에서도 보통 시분할(timesharing ; 하나의 장치를 2가지 이상의 목적을 위해 시간을 세분화해서 사용하는 일)을 하고 있다.


소규모 시스템에서 천공 카드 또는 천공 테이프로 처리하는 경우에는, 기계어로 씌어 있는 번역 프로그램을 천공 카드(또는 천공 테이프·자기 테이프)무부터 기억장치에 해독시킨 다음, 원시 프로그램을 카드(또는 테이프) 판독기에 걸어 번역 프로그램으로 번역한다.


즉, 번역 프로그램에서 원시 프로그램을 목적 프로그램으로 번역한 후에 목적 프로그램을 실행하고, 프로그램에 따라 처리된 결과를 출력(인쇄)한다.


그러나 이와 같은 조작을 하나하나 처리하면 효율이 떨어지므로 이 작업을 자동화하는 일을 하는 프로그램의 집합을 운영체제 또는 오퍼레이팅 시스템이라 하며, 핵심부분은 주기억장치에 상주(常駐)되어 있다.


운영체제는 프로그램의 자동처리뿐만 아니라 필요한 번역 프로그램을 외부기억장치로부터 빼내거나, 사용자의 파일을 관리 한다.


따라서 프로그램을 실행시키기 위해서는 프로그램·데이터와 함께 그 실행에 필요한 작업이나 자원(resource)을 운영체제에 지시하는 제어문을 사용한다.


제어문은 작업제어 언어로 기술한다.


컴퓨터 시스템에는 한 번에 하나의 프로그램만을 주기억장치에 넣어 실행하는 단일 프로그래밍 시스템과 동시에 몇 개의 프로그램을 주기억장치에 넣어 기계의 사용효율을 높이는 다중 프로그래밍 시스템이 있다.


④ 조작방식 : 운영체제를 갖춘 컴퓨터 시스템에서 사용자의 프로그램을 일괄처리하는 방식을 일괄처리 시스템이라고 한다.


일괄처리 시스템에서는 프로그램의 실행을 의뢰한 후 결과가 되돌아오기까지 상당한 시간이 걸린다.


기본적으로는 일괄처리 시스템이지만 결과를 즉시 손에 넣을 수 있게 하는 방식으로서 카페테리아 방식이 있다.


일괄처리 시스템에서는 처리도중에 사용자가 개입할 수 없으므로, 컴퓨터와 대화를 나누면서 일을 진행시킬 수 있게 한 방식으로 시분할처리 시스템이 있으며, 발생한 데이터를 직접컴퓨터에 넣고 필요에 따라 즉시 응답하는 방식을 실시간처리 시스템이라 한다.


주컴퓨터와 원격 단말장치를 직접 또는 통신회선으로 연결해 데이터가 발생하는 즉시 컴퓨터에 입력, 처리하는 형태를 온라인 방식이라 한다.


특히 통신회선을 경유하는 경우에는 데이터를 암호화(暗號化)하는 등 보완 대책을 충분히 강구해야 한다.


〔소프트웨어 기술의 동향〕 컴퓨터의 역사는 하드웨어에서 출발했으나, 하드웨어의 진보가 소프트웨어의 역할을 증대시킴에 따라 소프트웨어가 주도하는 시대로 접어들었다.


특히 80년대 이후 데이터 기술의 진전에 따른 프로토콜 표준화 및 인터페이스 기술개발, 네트워크 관리기술 개발, 데이터베이스 관리기술 개발 등에 기술혁신이 얻어남으로써 자연언어처리 등 인간의 두뇌와 비슷한 기능을 갖춘 인공지능형 소프트웨어를 개발하는 것이 중요한 과제로 대두하고 있다.


따라서 소프트웨어 기술의 발전동향은 표준화, 고급화, 정보처리의 고속화, 패턴정보의 인식처리, 자동화, 안정성 확보, 간편화로 요약된다.


① 표준화 측면에서는 운영체제(OS)를 표준화해 다른기종과의 호환성을 확보해야 한다.


② 고급화 측면에서는 자연어·번역·추론 등 인간두뇌와 비슷한 정보를 처리하기 위해 인공지능 소프트웨어의 개발이 추진되고 있다.


③ 고속 정보처리 측면에서는 대량의 정보를 효율적으로 처리하는 병렬처리 등의 고속처리용 소프트웨어와 데이터베이스 관리시스템(DBMS)에 의한 대량의 정보를 효율적으로 관리하는 소프트웨어의 개발이 추진되고 있다.


정보처리를 통신과 결합시키기 위한 온라인 정보처리의 고도화도 시도되고 있다.


④ 패턴정보의 인식처리 측면에서는 음성·문자·화상 등의 패턴정보 인식처리 기술의 발전에 따라 정보처리의 다양화가 진전되고 있다.


⑤ 자동화 측면에서는 소프트웨어 생산성 향상을 위해 요구분석, 정의의 단계에서 설계·프로그래밍·검사의 전과정을 자동화하려는 노력이 경주되고 있다.


⑥ 시스템 장애나 프라이버시 보호를 위한 시스템의 신뢰성 향상기능과 데이터 보호기능을 부가한 소프트웨어의 개발이 추진되고 있다.


⑦ 간편화 측면에서는 복잡한 기능을 가지면서도 일반사용자가 쓰기 쉬운 소프트웨어의 개발이 추진되고 있다.


〔2진법〕 컴퓨터에서 수치를 표현하려면 보통 2진법(二進法)을 쓴다.


2진법이란 「0」과 「1」의 2가지 수만을 써서 수치를 표현하는 방법이다.


1어(語)가 4bit라면 0000에서 1111까지의 수치가 표현되므로, 10진법의 0에서 15까지의 수치가 표현된다.


즉, 1어(語)를 n bit라 하고, 1어로 표현되는 수치를 하면,







이 된다.


〔음수의 표현법〕 그러나 이 상태로는 음수를 나타낼 수 없다.


그래서 를 2으로 나눈 경우의 절대값이 최소가 되는 나머지를 a’라 한다.


예컨대 n=4(1어가 4bit)인 경우, a가 10일 때 a’는 어떻게 되는지 알아보자. 10을 2 즉 16으로 나누면 몫은 0, 나머지는 10이 된다.


여기서 몫을 1이라 하면, 나머지는 -6이된다.


이어 몫을 -1, -2, -3, …이라 하면 나머지는 26, 42, 58, 로 점점 커지며, 몫을 2, 3, 4, …라고 하여 구하면 나머지는 -22, -38, -54, …로 그 절대값은 점점 더 커진다.


즉, 10을 16으로 나누었을 때 절대값이 최소가 되는 나머지는 -6임을 알 수 있다.


일반적으로는 다음과 같이 된다.







다시 말하면, a<2일 때 (위의 예에서는 a가 8보다 작을 때)는 a’=a이며, a≥2일 때(위의 예에서는 a가 8 이상일 때)는 a’=a-2(위의 예에서는 a’=a-16)이다.


그런데







이므로, 1어의 왼쪽 맨 끝의 비트에 -2이라는 자릿수를 부여하고, 나머지 비트에는 보통의 2진 자릿수를 주었다고 생각할 수도 있다.


예컨대 1어를 4bit라하면,









과 같이 된다.


〔보수 방식〕 이와 같이 표현하면 음수(-x)의 표현은 a-2이다.







이므로 







이다. 즉 음수의 표현은 1어로 표현되는 수를 a라고 했을 때의 양수의 표현과 2에 관해 서로 보수(補數)가 되어 있다.


따라서 이 표현방식을 보수방식이라 한다.


보수방식으로 표현히더리도 가감산(加減算)은 보통 방법으로 할 수 있다.







그런데 뺄셈 a’-b’를 생각할 때, b’의 보수를 로 나타낸다면(는 b’를 표현하고 있는 비트의 「0」과 「1」을 역으로 한 것에 1을 더한 것이 되어 있음에 주의), 보수방식에서는 a’-b’=a’+


가 되므로, 뺑셈은 덧셈에 의해 할 수 있다.







〔장래의 컴퓨터〕 현재의 컴퓨터는 세상에 나온 지 불과 40여 년 사이에 어떤 기술부문에서도 유례를 찾아볼 수 없을 만큼 급성장했다.


그러나 점차 다양해지고 있는 새로운 욕구를 충족시킬 기술력은 한계를 보이기 시작하고 있다.


따라서 앞으로 집적도·처리속도·추론기능·신뢰도·환경적응력 등의 측면에서 획기적인 발전이 이루어져야 할 것이다.


그 발전방향을 정리해 본다.


① 기존 컴퓨터의 주소재인 실리콘 소자의 집적도는 현재의 기술수준으로 볼 때 거의 한계에 이르러 분자단위나 원자단위의 소자를 기초로 하는 분자 컴퓨터 또는 원자 컴퓨터의 개념이 나타나고 있다.


특히 분자소자는 생물컴퓨터와 밀접한 관련을 맺고 있다.


② 일반 대형컴퓨터의 처리속도는 사이클 타임을 기준으로 볼 때 50ns 내외여서 수요증가가 예상되는 대규모 과학기술계산에 필요한 1ns의 요구에 훨씬 못 미치고 있다.


이를 해결하기 위해 개발·보급되고 있는 것이 슈퍼컴퓨터인데, 광컴퓨터가 등장하면 더욱더 고속화할 것으로 보인다.


기존 컴퓨터가 전자적인 처리에 의해 작동되는 데 반해 빛 자체로 정보의 입출력·정보처리 ·저장 등이 이루어지는 시스템이 광컴퓨터의 기능이다.


③ 지금까지의 컴퓨터는 미리 정해진 프로그램에 따라 주어진 자료에 의해서만 문제의 분석이 가능하다.


따라서 인간과 같이 능동적으로 문제를 해결할 수 있는 능력이 없다.


이를 해결하기 위해 인공지능 컴퓨터가 연구되고 있다.


④ 전자기적인 작동을 기본으로 하는 현재의 컴퓨터는 전자기파의 유도 장애를 받는 등, 환경에 의해 영향을 받아 시스템이 불안정하다.


이와 같은 불안정 요인은 광컴퓨터가 개발되면 해소될 것으로 예상된다.


⑤ 현재의 컴퓨터는 생물이나 인간과 같이 환경의 변화에 적응하는 환경적응력, 즉 유연성의 여지가 없다.


이와 같은 문제를 해결하기 위해 생물체의 정교한 적응기능을 오방하려는 연구가 진행중인데, 이를 생물 컴퓨터라 한다.


80년대의 생물공학의 눈부신 발전으로 전자공학·생물공학의 2대 기술의 융합이 진행됨에 따라 첫째 기존의 무기소재를 이용해 생물기능만을 모방하는 방법. 둘째 유기소재를 이용하는 방법, 셋째 생물의 두뇌세포를 직접 이용하는 방법 등이 단계적으로 연구될 전망이다.


























관련콘텐츠