1. 컴퓨터의 의미와 그것을 이용하는 방법

 

컴퓨터란 프로그래밍이 가능하며 고성능의 계산 능력을 가진 기계를 말하며 다음과 같은 부품으로 구성되어 있다.

(1) - 연산처리와 실행을 담당하는 CPU

(2) - 프로그램 전체 코드를 담고 있으며 계산 결과 값을 보관할 수 있는 주기억장치

(3) - 컴퓨터 전원이 꺼져도 유지되어야 할 데이터를 영구적으로 저장하도록 도와주는 보조기억장치-하드디스크 

(5) - 사용자와 상호작용을 도와주는 모니터와 키보드

(4) - 위의 모든 장치들을 하나로 연결해주는 메인 보드

 

컴퓨터는 이렇게 최소  5가지의 구성으로 이루어져 있다.

 

이 중에서 가장 중요한 역할을 하는 부품은 CPU(Central Processing Unit - 중앙처리장치)이며 연산 기능과 실행 기능을 담당한다. 

 

1-1 계산 능력을 가진 기계

CPU는 컴퓨터에서 가장 중요한 부품이며 대부분 다음과 같은 구조로 이루어져 있다.

 반도체 집적도가 높아지면서 과거에는 하나의 온전한 CPU가 지금은 코어(Core)라는 블록으로 CPU 안에 포함되어 있다.  따라서 요즘 CPU는 과거로 보면 여러 CPU가 합쳐진 CPU라고 할 수 있다.

 

코어 하나에는 ALU(Arithmetic Logic Unit-산술논리연산장치)와 CU(Control Unit-실행 흐름장치)를 가지고 있으며, ALU가 바로 계산을 담당하는 유닛이며 CU는 실행을 담당한다.

 

1-2 CPU를 이용해 계산하기

 

우리가 컴퓨터를 이용해서 3+4와 같은 계산을 하려면 어떻게 해야할까?

우리는 컴퓨터의 실행을 담당하는 CU(Controll Unit)에게 3+4를 계산해 달라고 해야 한다.

 

 

그런데 CU는 기계이기 때문에 3+4가 무슨 의미인지를 모른다. 다만 ALU를 조작하기 위한 스위치 정보를 알려주면 그 정보를 이용해 전기선에 전원은 넣어주는 정도는 수행할 수 있다.

따라서 컴퓨터를 이용해 3+4를 계산하려면 ALU를 조작하는 스위치 상태를  우리가 작성해서 알려주어야만 한다.

 

1-2 컴퓨터에게는 왜 0과 1로 된 기호로 알려주어야 하는가?

 

CPU의 ALU는 기계장치이다. 기계 장치를 이용하는 방법은 장난감 자동차를 이용하는 방법과 별반 다르지 않다.

위의 장난감에는 모터에 연결된 스위치가 2개 있다. 이 두개 선을 조작하면 탱크를 직진, 좌회전,우회전 할 수 있다. 이 것이 이 장난감이 가지는 기능집합이고 장치에 내장된 명령어(=어셈블리어)이다. 

 

어셈블리어는 문자로 되어 있어서 인간이 장치의 기능을 이해하기에는 편하지만 실제 실행하려면 스위치를 조작하는 방법을 알아야만 한다.

 

직진은 1 1,  좌회전은 0 1 이다. 이런 스위치 조작 방식으로 탱크를 위의 그림처럼 움직이게 하려면 스위치를 어떤 순서로 조작해야 할까?

위의 그림처럼 1과 0로 나열한 순서에 따라서 스위치를 조작하면 탱크는 예정된 경로대로 잘 움직일 것이다.

 

만약에 장난감 탱크에 위의 절차를 기억시킬 수 있는 메모리가 존재하고 그것을 수행시켜주는 CU(Control Unit)이 존재한다면 프로그래밍이 가능한 장난감이 되는 것이다.

 

 

1-3 컴퓨터를 이용해 3+4 계산하기

 

이해를 돕기 위해서 앞에서는 장난감을 예시로 들었지만 컴퓨터 또한 스위치를 조작하는 방식으로 동작시키기 때문에 1과 0로 실행 코드를 작성해야만 한다.

 

그렇다면 컴퓨터의 ALU는 어떤식으로 조작을 하면 될까? (꼭 알아야 되는 내용은 아니므로 상식선에서 호기심을 살짝 해결할 정도로만 보도록하자)

 

 

위의 그림처럼 ALU도 스위치를 가지고 있다. 이 스위치를 이용해서 ALU를 다음과 같은 순서로 ALU를 조작해야 3+4를 연산할 수 있다.

 

3+4를 계산하기 위한 ALU와 Register의 조작순서

 

1. 값 3을 왼쪽 레지스터에 옮기고

2. 값 4를 오른쪽 레지스터에 옮긴 후에 

3. 두 레지스터에 있는 값 더한다.

 

위의 같이 ALU를 조작하기 위해 다음처럼 스위치를 순차적으로 조작한다.

 

1. 값 3을 왼쪽 레지스터에 옮긴다.



2. 값 4를 오른쪽 레지스터에 옮긴다.

 

3. 두 레지스터에 있는 값 더한다



이런 스위치 조작 상태를 순차적으로 적으면 다음과 같다.

 

010 011

110 100

001

 

이 절차가 바로 3+4를 계산하기 위한 수행절차이다. 이 절차를 메모리에 옮겨 놓으면 CU가 알아서 하나씩 수행을 해준다.

2. 컴퓨터 프로그램을 만드는 방법

 

앞서 봤던 것처럼 컴퓨터 프로그램은 스위치 조작상태를 직접 우리가 작성하는 것을 말한다. 하지만 요즘에 그런 방식으로 컴퓨터 프로그램을 만드는 일은 거의 없다. 왜냐하면 번역기가 있기 때문이다.

 

2-1 1세대 번역기와 2세대 언어

0과 1로 코드를 작성해야만 CPU가 실행할 수 있지만 그렇다고 인간이 0과 1을 직접 사용해서 코드를 작성할 필요는 없다.

 

 

위의 그림에서 010 이 MOV와 동일한 의미라면 우리는 010보다 이해하기 쉬운 MOV를 이용해서 코드를 작성하면 된다. 대신에 그것을 010으로 변경해주는 번역기를 만들어 사용하면 되는 것이 아닌가?

 

 

그래서 번역기를 활용하는 프로그래밍 방식이 등장하게 되었다. 이 번역기는 어셈블리어(기계 내장 명령어)기계어(기계 실행코드)로 변경해주는 번역기로 어셈블러(Assembler)라고 한다.

 

2-2 2세대 번역기와 3세대 언어

2세대 언어인 어셈블리어는 CPU에 종속된 언어이다. 그래서 이기종의 CPU 두개가 있을 경우에는 각 CPU 별로 코드를 따로 작성해주어야만 한다. 

 

 

다행스럽게도 이런 문제를 단번에 해결해주는 컴파일러라는 번역기가 등장하였다.

 

 

이 번역기는 자신이 정해놓은 연산자를 이용해서 코드를 작성하고 번역기를 돌리면 현재 CPU용에 맞는 어셈블리어 코드를 만들어준다.

 

이렇게 또 다른 번역기가 등장하면서 우리가 컴퓨터 프로그램을 만드는 방법은 크게 3가지 방법이 생겼다.

 

 

1세대-기계어를 이용하거나 2세대-어셈블리어를 이용하거나 3세대-컴파일언어를 이용해서 코드를 작성할 수 있다.



3. 컴파일 언어와 인터프리터 언어

 

최근에 프로그램을 만들 때는 3세대 언어를 이용하여 프로그램을 만든다. 3세대 언어의 특징은CPU가 제공하는 명령어를 이용하는 것이 아니라 컴파일러(번역기)가 제공하는 명령어를 이용한다.

 

3-1 컴파일 언어

 

컴파일러를 만드는 회사는 여러 곳이 있으며 컴파일러마다 제공하는 키워드나 구문 규칙이 조금씩 다르다. 다음은 컴파일 언어의 3가지 예를 보이고 있다.

 

 

자바 언어도 자바 컴파일러가 제공하는 키워드와 구문규칙을 이용해서 코드를 작성하는데 위의 코드에서 오른쪽의 코드가 자바 언어로 작성된 코드이다.

 

+ Recent posts