레이블이 Understanding Computer인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Understanding Computer인 게시물을 표시합니다. 모든 게시물 표시

2014년 4월 8일 화요일

아날로그와 디지털(Analog vs. Digital)

우리글이 많은 소리를 표현할 수 있지만 여전히 부족한 것이 있다. 영어에도 매우 미묘한 소리들이 있어서 우리글로 표현이 어려운 것들이 있다.

그 중에서 Digital에 대해서 우스게 이야기가 있다. 우리나라에서 Digital을 어떻게 표기할 것인가에 대해서 디지탈, 디지틀, 디지털이라는 세가지 용어표현에 대해서 전문가들이 다툼이 있었다. 디지탈과 디지틀을 주장하는 전문가들이 디지털이라는 주장에 밀리게되자 디지털을 주장하는 전문가에게 "디지털이 뭐냐? 돼지털이냐?" 라고 했다는...

그럼 아날로그와 디지털이란 무엇일까?

먼저 딱딱한 정의부터 적어보자.

아날로그: 연속적으로 변화하는 물리량(?).
디지털: 0과 1로 기록된 불연속적으로 변화하는 물리량(?).



이 말을 그대로 이해하는 사람도 있고, 그렇지 않은 사람도 있을 것이다. 이해하는 사람은 패스~ 그러나 이해하지 못하는 사람을 위해서 좀 더 쉽게 살펴보자. 먼저 물리량이라고 했는데 물리량이 뭐야? 물리량이란 그냥 값이다. 온도나 시간이 하나의 물리량이며, 따라서 26.7도, 35초와 같은 것이 물리량이다.

아날로그와 디지털은 숫자의 개념으로 이해하면 보다 쉽게 이해할 수 있다. 우리가 일반적으로 수는 정수와 실수로 구분할 수 있다.
이때 두개의 실수값 사이에는 또다른 실수값이 존재한다. 실수(實數, real number)를 모르는 실수( 失手, mistake)는 없기 바란다. 따라서 실수값은 연속적인 값이다. 아날로그란 이와 같이 시간이나 진폭과 같은 값이 끊임없이 존재하는 물리량, 즉 어떠한 값을 가진 것을 의미한다. 그리고 실수값은 무한히 존재하는 값이기 때문에 어떠한 범위를 정하더라도 아날로그 물리량은 무한히 존재한다.

반면에 정수는 어떠한가? 정수는 1과 2사이에 정수값이 존재할 수 없다. 정수가 뭔지 모르겠다고? 이 자료를 읽기전에 초등학교 산수책을 먼저 볼 것을 권한다. 이와 같이 정수는 값이 연속적으로 존재하지 않고 띄엄띄엄(불연속) 존재한다. 이러한 값을 이진수(binary, 0과 1만을 갖는 수체계)로 표시한 것이 디지털이다. 따라서 디지털 물리량은 범위를 정하면 유한한 수가 존재한다.

"아날로그와 디지털이 이렇게 다른 것이라면 우리가 스마트폰에서 즐겨듣는 음악, 촬영한 사진, 재미있게 보는 동영상은 다 뭐야?"라고 궁금함이 생긴다면 둘 사이의 관계를 살펴봐야 한다. 슈퍼스타케이에서 많은 도전자들이 노래를 부른다면 이는 아날로그 물리량으로 존재한다. 그런데 이러한 아날로그 음악을 우리가 스마트폰에 저장할 때는 디지털 음악으로 저장하고 있다. 동일한 정보(또는 음악이나 신호)가 아날로그로도 존재하고 디지털로도 존재한다는 것이다.

그러면 아날로그와 디지털 사이를 이어주는 다리가 있어야 하는 것 아닐까? 그리고 아날로그는 무한히 존재하지만 디지털은 유한 존재이니까 둘 사이에 연결되지 않는 것도 있는 것이 아닐까? 오~ 예! 정답.. 여러분이 이런 생각을 했다면 아주 날카롭게 위에 설명한 것을 이해한 것이다.

무한한 아날로그 물리량에서 이를 대표할 수 있는 값들만을 추려서 0과 1로 표현하면 디지털로 나타내는 것이다. 여기서 아날로그를 대표할 수 있는 값을 추리는 과정을 우리는 표본화 또는 샘플링이라고 한다. 표본화나 샘플링이라는 이야기는 많이 들어보지 않았는가? 선거철만 되면 출구조사나 여론조사를 많이하는데, 모든 유권자에 대해서 조사를 하기에는 비용과 시간이 많이들기 때문에 유권자의 분포(나이, 성별, 지역 등에 따른)에 따라서 일부 유권자에 대해서만 조사를 한 뒤에 그 결과를 예측하면서 나오는 용어가 바로 샘플링이다. 즉, 전체를 사용하기 곤란할 때, 일부 만을 추려내는 과정이다.

여러분이 가지고 있는 스마트폰이 얼마만큼의 저장장치를 갖고 있는가? 32GB? 64GB? 좋다. 여러분이 좋은 스마트폰에 64GB의 저장장치를 갖고 있다고 하자. 그런데, 아날로그를 불연속적인 디지털 데이터가 아닌 연속적인 디지털(? 말에 모순이 있지만 그렇다고 하자) 데이터로 전환한다면 아날로그에는 무한개의 물리량이 존재하기 때문에 디지털로도 무한개의 데이터가 나오게 된다. 그러면 "아" 소리 하나를 저장하기에도 64GB는 턱도 없이 부족한 용량이 된다. 그렇지만 여러분은 64GB의 저장용량이면 고화질 영화도 30편이상, 고음질 음악은 수천에서 수만곡을 넣어가지고 다닐 수 있다.아니? 어찌 이런일이? 바로 샘플링의 마술이다. 어차피 인간의 감각기관은 아날로그로 표현되어 있는 모든 값을 인지할 수 없다. 따라서 적당히(?) 몇개만 전달해줘도 차이를 감지하지 못하므로 제한된 수량의 데이터만으로 아날로그 음악이나 사진, 동영상을 표현할 수 있고, 제한된 용량의 저장장치를 충분히 효과적으로 활용할 수 있는 것이다.

이와 같이 아날로그 물리량을 디지털 물리량으로 전환하는 장치를 아날로그-디지털 변환기(Analog to Digital Converter: ADC)라고하며, 디지털 물리량을 아날로그로 전환하는 장치를 디지털-아날로그 변환기(Digital to Analog Converter: DAC)라고 한다. 샘플링을 포함하여 이들 구조는 하드웨어 관련 내용이므로 다음 기회에 한번 더 다루어 보자.


2014년 3월 27일 목요일

컴퓨터의 저장장치(Computer Storage)

우리는 기억력이 감퇴되거나 기억할 수 있는 한계를 넘어서는 것을 잃어버리지 않기위해서 메모장이나 수첩을 사용한다. 컴퓨터 메모리는 용량에 한계가 있으며, 이를 극복하기 위해서 보조기억장치인 저장장치를 이용한다. 마치 우리가 기억의 한계를 극복하기 위해서 수첩을 사용하는 것처럼 컴퓨터에는 보조기억장치인 저장창치가 있다.

메모리(여기서는 주 메모리인 RAM)와 보조기억장치는 둘다 기억장치(메모리)이지만 가격대비 용량과 속도의 차이로 인하여 RAM은 주 기억장치(주 메모리)로 사용되며, 대용량으로 데이터를 저장해 놓기위해서는 보조기억장치(저장장치)를 사용한다.

보조기억장치로 사용되는 저장장치는 많은 프로그램이나 데이터, 멀티미디어 등을 저장해야 하므로 대용량이며, 주기억장치인 RAM에는 현재 실행되고 있는 프로그램이 보조기억장치로부터 로딩되어 있다.

그렇다면 보조기억장치로 사용하는 저장장치에는 무엇이 있는가?

오늘날 가장 많이 사용하는 대용량 저장장치로는 하드디스크드라이브(HDD)가 있으며, 가격은 비싸지만 저전력에 속도도 빠른 반도체드라이브(SSD: Solid State Drive), 플래시 메모리를 이용한 기타 저장장치(USB 메모리, SD카드 메모리 등)가 있다. 지금은 잘 사용되지 않는 광학매체(CD, DVD, Blueray Disk), 플로피디스크, 마그네틱 테잎 등도 대용량(?) 저장매체에 속한다. 오늘날 대용량의 개념이 TB 단위로 되어있어서, 대용량이라는 용어가 무색하지만 해당 저장장치들이 등장하였을 당시에는 분명히 대용량이라는 용어를 사용함에 어려움이 없었으리라.

1. HDD(Hard Disk Drive)

2.5" SATA HDD (wikipedia)

하드디스크는 이름에서 나온 것 처럼 단단한 원판(디스크, platter)에 자성체를 도포하여 저장장치로 이용하는 것으로써, 가격대비 저장용량 면에서 가장 효율적이기 때문에 많이 사용하고 있다. 하드디스크는 구동장치까지 함께 내장되어 사용하기 때문에 하드디스크드라이브라고 부르고 있으며, 디스크를 회전하기 위한 모터(스핀들 모터)와 디스크에 데이터를 기록하고 읽어내기 위한 헤드가 달린 팔(arm)과 같은 구동계가 있어서 충격에 약하다.

HDD의 모습(wikipedia)

하드디스크의 디스크는 단단한 형태를 갖는 금속으로 만들어져 있기 때문에 기록밀도를 높이는 장점을 갖고 있어서 대용량 저장장치를 만드는데 용이하다. 디스크는 기록을 위해서 트랙, 섹터, 세그먼트로 구분되어있다. 이전에는 하드디스크의 용량을 늘리기 위해서 디스크(플래터)를 여러장 쌓는 경우가 있었는데, 2장 이상의 디스크가 놓여있으면 원통형으로 구성되기 때문에 이는 실린더라고 구분하였다.



2. SSD(Solid State Drive)
SSD는 반도체 플래시 메모리를 이용하여 대용량 저장장치인 하드디스크를 대체하는 저장장치로 각광을 받고 있다. 하드디스크와 달리 기계적인 장치가 없기 때문에 물리적인 충격에 강하고 저전력이면서 데이터 전송속도가 빠른 장점이 있지만, 가격이 하드디스크드라이브의 7~10배에 달하는 것이 걸림돌이다. 하지만 지속적인 반도체 기술의 성장과 플래시 메모리 가격의 하락으로 그 차이는 점차 줄어들게 될 것이다.
SSD는 플래시메모리를 사용하지만, 외부 인터페이스는 하드디스크드라이브와 동일하게 구성되어있어서 기존에 사용하던 하드디스크와 쉽게 대체가 가능한 구조로 되어있다.

3. 메모리카드와 USB 메모리
우리가 많이 사용하는 이동식 저장장치로써 USB메모리와 카메라나 스마트폰에 많이 사용되는 SD(Secure Digital) 카드 등은 SSD와 마찬가지로 플래시 메모리를 이용하여 제작한다. 외부 인터페이스나 외형은 다르지만 기본 소자가 플래시 메모리를 이용한다는 측면에서는 거의 유사한 형태라고 볼 수 있다.
아래 사진은 플래시메모리를 이용한 다양한 메모리카드와 USB 메모리를 보여주고 있다. 사진에서 보는 것 처럼 다양한 외형과 인터페이스를 갖고 있는 것을 알 수 있다.


4. 기타
이외에도 광학 매체나 기존에 사용되던 저장장치도 많이 있으나 과거의 역사이야기 이므로 다음 기회에 다뤄보기로 하자.

2014년 3월 25일 화요일

컴퓨터 메모리(Computer memory)

CPU는 인간의 두뇌에서 연산을 담당하는 부분이다. 물론 CPU 내부에도 일부 고속의 메모리가 들어있지만 요즘 같이 커다란 프로그램을 실행시키려면 두뇌의 기억과 같은 역할을 해줄 대용량 메모리가 필요하다.

컴퓨터의 기본 구성 요소인 주메모리가 우리가 컴퓨터나 스마트 기기에서 실행하는 프로그램을 담아두고 순서에 따라서 프로그램이 지시하는 동작을 수행한다. 우리가 컴퓨터에서 "메모리"라고 이야기하는 것은 바로 이 "주메모리"를 의미한다. 메모리는 비휘발성 메모리와 휘발성 메모리로 구분할 수 있으며, 비휘발성 메모리는 전원이 공급되지 않더라도 한번 기록된 데이터는 지워지지않고 남아있다. 우리가 일상적으로 많이 사용하는 플래시메모리(usb 메모리)가 대표적인 비휘발성 메모리이다. 반면에 휘발성 메모리는 전원이 공급되지 않으면 기록된 데이터가 사라지기 때문에 휘발성이라고 불리며, 컴퓨터 주메모리로 사용되는 RAM(Random Access Memory)가 대부분 휘발성 메모리이다.

지금의 컴퓨터는 주메모리는 모두가 반도체로 만들어진 메모리이며, 그 용량도 매우 크다. 주메모리로 사용되는 메모리는 DRAM(Dynamic Random Access Memory)이 사용된다. 반도체 메모리는 크게보면 SRAM(Static Random Access Memory)와 DRAM으로 나눌 수 있는데, SRAM은 전원이 공급되어 있는 상태만 유지하면 데이터가 유지되며, 속도가 빠르지만 제작비용이 많이들고 공간을 줄이는데 제약사항이 있어서 CPU안에 들어가는 레지스터나 캐시 메모리와 같이 고속의 메모리에 사용된다.

1bit 저장을 위한 SRAM 구조(wikipedia)


반면에 DRAM은 전원이 공급되어있어도 시간이 지나면 데이터가 사라지기때문에 주기적으로 데이터를 복구(refresh)해주어야한다. SRAM에 비해서 속도는 느리지만 작은 공간에 고 집적이 가능하고 비용이 적게 들기 때문에 고용량 메모리를 만드는데 적합하다.

16bits 저장이 가능한 DRAM 구조(wikipedia)

DRAM은 개발 이후로 Read/Write 속도를 높이기 위해서 다양한 구조가 등장하였으며, 현재 사용되고 있는 DRAM은 클록을 추가하여 DRAM의 동작을 동기화시키는 SDRAM(Synchronous DRAM)이다. 이 SDRAM에 DDR(Double Data Rate)이 붙은 것은 DRAM의 동작 속도를 더욱 높이기 위한 구조이며, 번호가 높게 붙을 수록 데이터 Read/Write 속도가 높은 것이다. DDR에 비해서 DDR2와 DDR3는 2배와 4배의 속도 개선이 있다.

SDRAM의 외양(홈의 위치가 다름) - wikipedia

2014년 3월 21일 금요일

CPU는 어떻게 동작하는가?(How does the CPU work?)

CPU가 어떻게 생겼는지 좀 이해들이 되었는지 모르겠다. 단순하게 설명하기엔 너무 복잡하고, 복잡하게 설명하면 알아먹기 어려운 것이 CPU의 구성이 아닌가 싶다. 다양한 내부 구성요소를 갖고 있는 CPU는 어떻게 동작하는 것일까?

CPU가 동작한 다는 것은 우리가 지시한 명령어와 데이터의 집합, 즉, 프로그램을 실행시킨다는 것을의미한다. 그렇다면 CPU가 동작을 하기위해서는 명령어나 데이터를 프로그램으로부터 가져와야한다. 프로그램은 컴퓨터에서 실행될 때 주메모리에 적재되어 실행되므로, CPU는 주메모리에 적재되어있는 프로그램에서 명령어나 데이터를 가져와서 CPU가 이해할 수 있는 형태로 해석하고, 해당 동작을 실행하여 생성된 결과를 저장함으로써 하나의  명령어에 대한 동작 사이클(머신사이클: machine cycle)을 마무리 한다. 이러한 동작을 반복적으로 수행함으로서 프로그램에서 지정한 작업을 처리할 수 있다. 이러한 과정을 순서대로 정리하면 다음과 같다.

  1. Fetch: 메모리에서 명령어를 가져오는 단계
  2. Decode: 명령어를 ALU나 FPU가 이해할 수 있도록 해독하는 단계
  3. Execution: ALU나 FPU가 주어진 연산을 처리하는 단계
  4. Store: 연산처리 결과를 메모리에 저장하는 단계


이렇게 순차적으로 머신사이클이 반복된다면 하나의 명령을 처리하는데 기본적으로 4단계가 걸리는 것이며, 하나의 코어만 존재하는 CPU는 다음 명령을 수행하기 위해서는 4단계가 지나가길 기다려야 한다. 그렇지만 오늘날과 같이 멀티코어를 탑재하고 있는 CPU는 동시에 여러개의 명령어를 처리할 수 있기 때문에 메모리로부터 명령어를 가져오는 효과적인 방식이 필요한데, 대표적으로 파이프라이닝(Pipelining) 방식이 널리 사용된다.

아래 그림은 파이프라이닝이 없는 단일 코어 CPU의 명령어 실행동작과 파이프라이닝으로 동작하는 쿼드코어 CPU의 명령어 실행 동작을 나타내고 있다.

출처: Understanding Computer Today and Tomorrow
이렇게 파이프라이닝과 같은 방식으로 머신사이클을 처리하는 이유는 여러개의 코어가 동시에 동작하여 작업을 재빨리 처리하도록 만드는 것이다. 하지만 여러개의 코어에서 동시에 작업을 처리하기 위해서는 프로그램을 만들때 여러개의 작은단위의 작업으로 나눠서 동시에 처리할 수 있도록 만들어줘야 한다. 때로는 반드시 순차적으로 처리해야하는 작업이 있다면, 순차적인 작업이 처리될 동안 다른 코어들은 작업진행을 못하고 쉴 수 밖에 없을 것이다.
  • 파이프라인은 우리가 바다에서 파도타기를 하는 사람들이 파도가 말려서 마치 파이프처럼 생긴 곳을 멋지게 서핑하면서 빠져나오는 것처럼 명령어를 수행하는 머신사이클이 서로 말려서 처리되는 것과 같은 것이다. 




2014년 3월 20일 목요일

CPU가 알고싶어?(Do you want to know the CPU - Central Processing Unit ?)

컴퓨터에서 가장 중요한 역할을 수행하는 부품을 하나 뽑으라면 CPU라고 할 수 있다. 열손가락 깨물어 안 아픈 손가락이 없다고, 컴퓨터의 핵심부품들은 모두가 존재 이유가 있지만 가장 중요한 역할을 수행하는 것이 바로 CPU라는데는 이견이 없을 것이다. 사람으로 말하면 CPU는 우리의 두뇌역할을 하는 것이다. 단순히 두뇌역할을 한다고 말하기에는 두뇌의 기능이나 역할이 매우 다양한 반면에 CPU가 수행하는 역할은 그렇게 많지 않다는 차이가 있지만 우리 몸이 제대로 움직이게 해주는 것은 두뇌의 역할이며, 컴퓨터가 제대로 움직이도록 전체적인 운영관리를 책임지고 있는 것이 CPU이기 때문에 두뇌와 같은 역할을 수행한다고 말해도 무리가 없다. 일반적으로 좌뇌는 논리적 능력을, 우뇌는 감성적 능력을 담당한다고하니, CPU는 좌뇌에 가까운 기능을 수행한다고 할 수 있겠다.


컴퓨터 발전의 역사는 CPU 발전의 역사라고 할 수 있다. 오늘날 우리가 사용하는 CPU는 반도체 기술에 의해서 만들어진 것으로써 마이크로프로세서(Microprocessor)라고도 불린다.

그렇다면 이런 CPU는 어떻게 구성된 것일까? 일단 CPU 내부에는 몇가지 기능별로 구분되는 모듈이 있다. 다음 그림은 CPU의 내부 구성요소를 간단하게 보여주고 있다.


위 그림에서 가운데 녹색선으로 블록처리 되어있는 부분이 CPU로써 가장 기본적인 3가지 기능을 보여주고 있다. 각각의 기능을 요약하면 다음과 같다.
  • ALU(Arithmetic Logic Unit): CPU의 가장 기본적인 기능으로 산술논리 연산을 담당
  • CU(Control Unit): 데이터와 명령어의 흐름과 ALU의 처리를 제어하는 역할을 담당
  • Cache Memory: 컴퓨터의 주메모리와 CPU사이의 속도차이를 해결하기 위해서 CPU에 내장된 속도가 매우 빠른 메모리
우리가 저작권과 컴퓨터과학 교과목에서 사용하는 교재인 "Understanding Computers Today and Tomorrow"에서는 보다 세분화된 CPU 구성요소를 나타내고 있는데 아래 그림은 이러한 세분화된 CPU 구성을 보여주고 있다.

CPU의 세부 구성
추가적인 구성요소에 대해서 알아보자.

  • FPU(Floating Point Unit): 부동소수점(실수) 연산은 ALU만으로 처리하기에는 연산량이 소요되므실수연산만을 하는 기능
  • Prefetch Unit: 컴퓨터의 동작 속도를 높이기 위해서 현재 CU가 다음에 처리해야 할 명령어와 데이터를 미리 가져오는 기능
  • Decode Unit: Prefetch Unit이 가져온 명령어를 CU가 이해할 수 있는 형태로 해석하는 기능
  • Register: 연산에 필요한 데이터나 연산결과, 명령어, 명령어 처리순서등을 일시적으로 저장하는데 사용되는 고속의 메모리(CPU의 속도와 같이 동작하며, 일반적으로 캐시메모리보다 빠름)
  • BIU(Bus Interface Unit): CPU외부에 있는 메모리나 I/O와의 연결을 위한 인터페이스

Register와 관련해서는 아래 그림에 보다 자세한 내용이 있다. 아래 그림과 같이 CPU이외에도 주메모리와 플래시 메모리, 주변장치회로까지 하나의 칩으로 구성된 것을 마이크로콘트롤러(Microcontroller)라고 한다.

아래 그림에 나온 레지스터의 종류를 간단히 살펴보자.

  • Program Counter: 기계어로 변환된 명령어가 프로그램 메모리에 저장되어있는데, 현재 CPU가 수행하고 있는 명령어의 위치(주소)를 저장하고 있는 레지스터
  • Instruction Register: Prefetch Unit이 읽어들인 명령어를 Decode Unit이 해석할 수 있도록 저장하고 있는 레지스터
  • General Register: 범용레지스터라고하며, 연산과정이나 연산후의 데이터를 일시적으로 저장하는 레지스터


CPU의 동작속도는 동일한 CPU라면 당연히 클록속도가 높은 것이 빠르겠지만 몇년 전부터 CPU제조기술의 급속한 발전은 CPU안에 CPU 코어를 여러개 탑재하여 동시에 작업을 처리할 수 있는 멀티코어(Multi Core)방식이 도입되고 있다. 이러한 CPU는 내부에 2개, 4개, 8개의 코어가 들어있다고해서 듀얼코어, 쿼드코어, 옥타코어라고 불린다. 최근 등장한 스마트폰들이 쿼드코어나 옥타코어로 구성되어있으며, i5는 듀얼코어, i7은 쿼드코어로 구성되어있다.


AMD 8-Core CPU


2014년 3월 18일 화요일

그럼 컴퓨터 소프트웨어는 뭔데?(What is the computer software?)

앞선 포스트에서 컴퓨터 하드웨어 대하여 개략적으로 알아보았다. 컴퓨터 하드웨어는 사람으로 따지면 뼈와 근육으로 이루어진 몸에 비유할 수 있다. 운동선수나 몸이 좋은 사람에게 하드웨어가 좋다고 말하는 것과 같은 개념이다. 그렇다면 컴퓨터 소프트웨어는 컴퓨터 하드웨어가 제대로 동작하도록 만들어주는 것이며, 사람으로 친다면 두뇌활동 또는 정신(영혼)에 해당한다고 할 수 있다. 혼수상태에 빠진 사람을 식물인간이라고 말하는 것 처럼, 소프트웨어가 없는 하드웨어는 고철덩어리에 불과하다.

이렇게....


우리가 우리의 몸은 만질 수 있지만 정신이나 영혼은 만질 수 없는 것 처럼, 하드웨어는 우리가 보고 만질 수 있는 물리적인 유형의 부속품으로 이루어져 있으나 소프트웨어는 만지거나 볼 수 없는 무형의 부속(무형의 자산)이다.

무형의 자산 ? 우리학과가 다루고 있는 것이 바로 무형이 자산이 아닌가 !!

기본적으로 소프트웨어는 컴퓨터가 수행해야할 명령어를 순서대로 나열해놓은 것이다. 이들 명령어는 CPU가 읽어들여 코드를 해석하고 원하는 동작을 수행하도록 주변 하드웨어로 지시를 내리거나 연산한 결과를 메모리에 저장하도록 보내기도 한다.

우리들이 익숙하게 사용하는 소프트웨어 또는 프로그램 용어들을 몇가지 살펴보자. 안드로이드, 앱, 윈도우즈, iOS, 한글, 오피스, WoW, LoL, 스타크래프트 등등등... 많은 소프트웨어와 관련된 용어를 사용하고 있는데, 안드로이드, iOS, 윈도우즈는 컴퓨터의 기동에 필수적인 것으로 시스템 소프트웨어에 해당되며, 앱, 한글, 오피스는 응용 소프트웨어에 해당되는 것이다.

그렇다면 소프트웨어는 시스템 소프트웨어와 응용 소프트웨어로 구분할 수 있으며, 시스템 소프트웨어는 운영체제(안드로이드, iOS, 윈도우즈)와 디바이스 드라이버, 유틸리티 소프트웨어로 나뉘고, 응용 소프트웨어는 사용자들이 널리 사용하는 한글이나 오피스 프로그램, 게임용 소프트웨어, 스마트폰에서 사용하는 앱들이 포함된다.


  • 시스템 소프트웨어
  1. 운영체제는 일반 사용자가 하드웨어에 대한 지식이 없이도 손쉽게 컴퓨터를 활용할 수 있도록 하거나 앱을 실행시킬 수 있도록 하드웨어와 사용자 사이에서 중재하는 역할을 수행한다. 우리가 컴퓨터를 켜거나 스마트 기기들의 전원을 켰을 때 처음 기동되는 소프트웨어가 운영체제에 해당된다.  
  2. 디바이스 드라이버는 컴퓨터에 탑재되어있거나 연결되는 주변장치 또는 하드웨어를 소프트웨어에서 손쉽게 접근하여 사용할 수 있도록 운영체제에 설치되는 소프트웨어를 말한다. 우리가 USB메모리나 프린터를 USB포트에 처음 컴퓨터에 연결하면 우측 하단에 새 하드웨어가 발견되었다는 메시지와 드라이버 소프트웨어를 설치한다는 메시지가 나온다. 이 때 컴퓨터에 설치되는 하드웨어를 사용할 수 있도록 하는 소프트웨어가 디바이스 드라이버 또는 드라이버 소프트웨어이다.


  3. 유틸리티 소프트웨어는 사용자가 컴퓨터를 유지보수하거나 관리하는데 사용하는 소프트웨어로써 파일 매니저와 같은 것이 유틸리티의 예이다.

  • 응용 소프트웨어
    응용 소프트웨어는 사용자를 위해서 만들어진 대부분의 소프트웨어이다. 오늘날과 같은 스마트 기기 환경에서는 앱이라는 이름으로 널리 사용되고 있다. 인터넷을 브라우징하는 앱에서부터 게임, 일정관리, 문서편집기, 사진편집기, 동영상이나 음악을 재생하는 재생기 등 다양한 응용 소프트웨어가 존재한다.





컴퓨터 하드웨어가 뭐지?(What is the computer hardware?)

앞에서 컴퓨터에 대하여 소개를 하면서 컴퓨터를 구성하는 하드웨어와 소프트웨어가 있다고 했다. 그렇다면 컴퓨터 하드웨어란 무엇일까?

지금은 누구나 아이스크림이라고 부르지만 내가 어린시절에는 아이스께끼, 하드라고 불렀다. 지금처럼 크림처럼 부드럽게 만들어진 것이 아니라 물에 주스가루같은 것을 섞어서 얼린 것이기 때문에 아마도 단단해서 하드라고 불렀던 것 같다.

하드웨어(hardware)에서 하드는 단단하다는 의미이고 웨어는 제품이나 방식을 의미한다. 따라서 단단한제품 즉, 물리적으로 만질 수 있는 존재를 하드웨어라고 하겠다. 그래서 컴퓨터 하드웨어는 우리가 눈으로 보고 만질 수 있는 상태의 컴퓨터라고 할 수 있다. 일반적으로 우리가 가지고 있는 컴퓨터 하드웨어는 다음과 같은 형태로 많은 부속품들로 구성되어있다.


가정에서 사용하는 PC는 본체라고하는 박스가 있고, 그 박스를 열면 아래와 같이 여러가지 부속품들이 내장되어 있는 모습을 볼 수 있다. 물론 여러분이 처음에 컴퓨터를 구매하였을 때 내부 모습은 이렇게 깨끗한 모습을 보일 것이다.



그러나 기대와 달리 여러분의 가정에 있는 PC의 내부 모습은  얼마나 오래되었는지 알 수 도없는 먼지 투성이의 내부가 될 것이다. 이게 진정한 여러분 집에 있는 PC의 내부 모습이다. 아니라고? 한번 열어보시길..



어쨌든 컴퓨터 하드웨어에서 가장 중요한 부분은 본체이고, 본체 속에는 다양한 하드웨어 부속들이 들어가 있다. 이 가운데 CPU(Central Processing Unit)와 RAM(Random Access Memory) 모듈, 하드드라이브, 주기판(Motherboard)는 컴퓨터를 운영하는데 반드시 필요한 장치이며, Heat sink는 CPU에서 발생하는 열을 방출하는 역할을 수행한다. 물론 컴퓨터는 전기를 먹으면서 동작하니까 파워서플라이는 기본..

본체 속의 하드웨어들
세분화된 하드웨어들

이렇게 다양한 하드웨어 부속품들은 우리가 사용하는 컴퓨터를 다양하게 활용할 수 있도록 보조해주는 역할을 해주고 있으며, 아래 그림에 나타낸 것과 같이 다양한 컴퓨터 하드웨어의 형태를 볼 수 있다. 다양한 RAM 모듈의 종류와 하드디스크 종류, CPU를 탑재할 수 있는 소켓, 외부장치와 연결을 위한 포트와 슬롯의 종류 등 다양한 하드웨어가 있다. 그림을 상세히 보기 원하면 이곳을 누르면 원본을 볼 수 있다.


컴퓨터 하드웨어 도표

각 부속품 별로 상세한 내용은 나중의 포스트를 통해서 알아보자. ^^

2014년 3월 13일 목요일

컴퓨터가 뭐야?(What is the Computer?)

컴퓨터가 뭐지?

우리가 일상 생활 속에서 가장 많이 사용하는 것이 컴퓨터다. 그런데 우리가 매일 먹는 밥이 어떤 처리(과정)를 거쳐서 우리 밥상에 올라오는지를 모르고 살아가는 것처럼, 컴퓨터가 무엇인지 정확하게 모르고 살아가고 있다. 이것은 역설적으로 우리 생활 속에서 너무나 익숙하기 때문에 그 존재에 대해서 궁금해할 이유가 없어서일 수 도 있다.

우리 생활의 혁신을 가져온 컴퓨터의 역사는 그렇게 오래되지 않았다. 물론 길다면 길 수 있는 역사를 이야기할 수 있지만, 오늘날 우리가 사용하는 컴퓨터와 같은 구조를 가진 컴퓨터가 등장한 것은 이제 70~80년 밖에 되지 않았다. 더구나 우리가 개개인이 컴퓨터를 사용할 수 있는 환경을 갖춘 것은 20년도 채 되지 않는다.

일반적으로 컴퓨터의 출현시기는 19세기로 이야기를 하지만 오늘날 우리가 사용하는 프로그램이 가능한(programmable) 디지털 컴퓨터는 1940대에 등장하게 된다.

19세기에 등장한 컴퓨터는 디지털 컴퓨터가 아닌 기계식 컴퓨터나 차분기, 방직기를 위한 제어기와 같은 기능을 수행하는 것이었다.(위키피디아 참조) 이들 기계식 컴퓨터는 아날로그 컴퓨터로써 오늘날 사용하는 디지털 컴퓨터와는 다른 모습을 갖고 있다.
Difference Engine(wikipedia.org)

일반적으로 널리 알려진 현대 디지털 컴퓨터의 시초는 미국에서 1946년도에 만들어진 ENIAC (Electronic Numerical Integrator and Computer)으로 알려져 있다. 그러나 군사기밀로 알려지지 않거나 역사에서 주목 받지 못해서 사라진 컴퓨터들이 알려지기 시작하면서 ENIAC 이전에도 디지털 컴퓨터가 존재하고 있다는 사실이 밝혀졌다.(위키피디아 참조)

위키피디아의 컴퓨터 역사에 관한 자료에 의하면 1936년 독일의 Alan_Turing이 알고리즘과 계산의 수학적 기반을 다졌으며, 이를 적용한 기계를 Turing Machine 이라고 명명하였다. 이후에 보다 확장된 Universal Machine(Universal Turing Machine)의 개념을 제공하였고, 오늘날의 컴퓨터 처리 방식의 기반을 제공한 폰 노이만(John von Neumann)이 이 개념을 이어받았으며, 컴퓨터의 핵심 처리방식인 순차처리 방식이 등장하게 된다. 오늘날 우리가 사용하는 컴퓨터는 알고리즘을 완벽하게 수행하는 General Turing Machine 이라는 의미에서 Turing-complete라고 한다.

ENIAC의 등장 이전의 초기 방식 컴퓨터는 전기로 기계적 스위치를 움직이는 Electromechanical Computer 였다. 1939년 독일 엔지니어인 Konrad Zuse가 Z2를 만들었으며, 1941년에는 프로그램이 가능한 Z3를 만들었다. Z3는 2,000개의 릴레이(전자석을 이용한 스위치)를 가졌으며, 22비트, 5~10Hz의 클록 주파수를 가졌다. 초기의 Z3는 1943년 연합군의 베를린 폭격 때 파괴되었기 때문에 널리 알려지지 않았으나 1960년대에 Zuse의 회사에서 복원한 것이 뮌헨의 박물관에 전시되어있다.
Zuse Computer(복원판, 뮌헨 박물관, wikipedia.org)

순수한 전기회로로 동작하는 컴퓨터는 Tommy Flowers가수천개의 진공관으로 1934년에 만들어서 1939년에 동작하게된 전자식 전교환기가 있었으며, 1942년에는 미국 아이오와 주립대학교의John Vincent Atanasoff와 Clifford E. Berry가  300개의 진공관을 사용하여 만든 ABC(Atanasoff–Berry Computer) 컴퓨터가 최초의 자동 전자식 컴퓨터로 알려져있다. 
2차대전 중인 1943년, 독일의 암호화기인 Enigma를 해독하기 위해서 영국의 Bletchley Park이 Colossus 라는 컴퓨터를 만들어서 1944년도부터 암호해독에 사용되었다. Colossus는 최초의 프로그램 가능한 전자식 디지털 컴퓨터 이지만 Turing-complete는 아니었다.
Colossus(wikipedia.org)

1946년 미국에서는 펜실베니아 대학의 John Mauchly와 J. Presper Eckert에 의해서 ENIAC이 만들어졌는데, 이는 최초의 프로그램 가능한 전자식 디지털 컴퓨터이면서 Turing-complete 컴퓨터 였다. ENIAC은 약 18,000개의 진공관과 1,500개의 릴레이를 사용하였으며, 무게가 30톤에 200킬로와트의 전력을 소모하였고 초당 5,000회의 덧셈/뺄셈이 가능했다. 오늘날의 데스크탑 PC가 약 200와트의 전력을 소모하니까 1,000대의 PC 전력을 소모하면서 성능은 형편없었다. 물론 지금 상황에서 형편없는 것이지 1946년 당시에는 획기적인 컴퓨터이다. ENIAC은 프로그램을 변경하기 위해서 많은 케이블을 변경하여 연결함으로써 다른 프로그램으로 변경이 가능하였다.

ENIAC(wikipedia.org)

ENIAC은 제1세대 컴퓨터로 구분되며, 당시의 전자소자는 진공관이었기 때문에 진공관을 이용하여 만들어서 50만달러의 비용이 들었다. 진공관은 기본적으로 소자 하나의 크기가 크기 때문에 면적도 많이 차지하고 전력소모도 매우 크다.

1947년도에 반도체를 이용한 트랜지스터라는 전자소자가 발명되면서 진공관을 대체할 수 있게 되었다. 1955년에는 영국의 Harwell사의 원자력연구소의 전자부서에서  완전히 트랜지스터로 제작된 컴퓨터 CADET (Transistor Electronic Digital Automatic Computer – backwards)를 만들었으며, 125KHz로 동작하고 마그네틱 드럼 메모리(drum memory)를 채택하였다.

반도체를 이용한 트랜지스터의 발명은 본격적으로 디지털 컴퓨터의 혁신을 가져오게되는데, 트랜지스터는 진공관과 달리 반도체로 되어있어서 제작하는 과정에서 여러개의 트랜지스터를 한꺼번에 집적할 수 있게되었다. 이렇게 여러개의 트랜지스터가 들어가있는 것을 집적회로( integrated circuit: IC)라 불렀다. IC는 1958년 Texas Instruments사의 Jack Kilby에 의해서 처음으로 고안되었으며, 6개월 후에 Fairchild Semiconductor사의 Robert Noyce도 IC를 만들었다. Kilby는 IC를 만드는 소재로 게르마늄(Ge)을 이용하였으며, Noyce는 실리콘(Si)을 이용하였다. 실리콘은 모래(SiO2)에서 손쉽게 얻을 수 있는 원료이기 때문에 상용화가 쉽게 이루어질 수 있었다.

IC가 만들어지면서 오늘날 누구나 잘 알고있는 인텔사에서 4004라는 4비트 마이크로프로세서를 제작하면서 본격적으로 디지털컴퓨터 시대를 열어간다. 성능은 말할 것도 없고 가격도 비교할 수 없을 정도로 저렴한 컴퓨터가 등장하기 시작하는 것이다.

컴퓨터에서 연산을 담당하는 마이크로프로세서 또는 CPU(Central Processing Unit)의 발전과 함께 주변장치와 메모리 등의 발전하면서 오늘날의 컴퓨터의 모습을 갖춰가기 시작하였고, 따라서 컴퓨터는 4가지 요소로 구성된다.
  1. CPU
  2. Memory
  3. Input
  4. Output
위에서 언급된 4가지 요소는 하드웨어적인 요소이며, 하드웨어를 운영하기 위해서는 소프트웨어가 있어야 한다. 소프트웨어는  다음과 같이 2가지로 구분한다.

  1. System Software(Operating System, Utility)
  2. Application Software