웬스의 Log("일상", "공부", "관심사", "기타등")

[이론] 컴퓨터란


** * 이 포스팅은 개인적으로 공부했던 자료를 조사하고 정리한 자료 입니다. 최대한 정확하게 작성하려고 하였습니다. **

컴퓨터란?


수학자들이 빠른 연산을 위해 만든 장치 = 계산기

* 컴퓨터가 2진수를 쓰게 된 이유가 이때 당시 수학자들이 2진법을 사용 했기 때문이다.

2진법 이란?

  • 이진법(二進法, binary)은 두 개의 숫자만을 이용하는 수 체계이다.
    이진법 * 사람이 사용하는 0~9까지의 수를 십진법이라고 한다.

  • 왜 10진법 이냐고 물어본다면 찾아보니 사람 손가락 갯수가 10개라서 라고 한다…(생각보다 단순한 논리였다)

    1011(2) = 1 * (2^3) + 0 + 1 * (2) + 1 * (2^0) = 8 + 2 + 1 = 11(10) = B(16)
    0xF32 = F32(16)= F * (16^2) + 3 * (16^1) + 2 * (16^0) = 15 * 32 + 3*16 + 2 = 3890
    

    진법은 여기서 이정도로 다루고 다시 차후 따로 포스팅 하도록 하겠습니다.

컴퓨터의 역사

컴퓨터라는 개념을 처음 고안한 사람은?

엘런 매티슨 튜링(Alan Mathieson Turing) 이란 수학자 양반이 2진법을 이용하면 빠른 계산을 할수 있지 않을까 라는 생각에서 고안해낸것이 컴퓨터이다.

즉, 인간이 아닌 기계를 이용해서 빠른 연산을 위해서 만든것컴퓨터 라는 것입니다.

첨언을 조금 하자면 컴퓨터 = 계산기 라는 개념인데 최초의 계산하는 기계는 파스칼 이란 사람이 만든 계산기에서 출발한다고 이야기를 하고 있다.

그래서 이 컨셉으로 따지면 최초의 컴퓨터는 파스칼이 만들었다라는게 정론이다. (누가 만들 건 사실 0과 1만 안썼어도……)

세대별 컴퓨터

  • 1세대 컴퓨터
    특징 : 엄청엄청 거대하다, 진공관을 사용한다.
    대표적 1세대 컴퓨터 는 에니악(ENIAC) 이다.

    에니악(ENIAC)
    <에니악(ENIAC) / 자료출처 : 위키피디아>

    진공관 <진공관/자료출처:J Album>

    * 썰풀기! 코딩하면서 버그를 잡는다의 출발이 여기서 나왔다. 진공관을 사용하기 때문에 열기도 엄청났고 내구성이 좋지 않았기 때문에 이 진공관을 교체하는 사람이 별도로 있기도 했다. 이 열기 때문에 벌레들이 살기 좋은 환경이 되자 여기서 알을 까는 일들이 즐비 해서 이것또한 고장의 원인이었기에 여기서 버그를 잡는다의 시작은 여기서 출발이 되었다고 한다.


  • 2세대컴퓨터
    특징 : 트랜지스터, 1세대보다는 개선 되었지만 여전히 컴퓨터의 크기가 크다

    여러 종류의 트렌지스터
    <여러 종류의 트렌지스터 / 출처 : 위키피디아>


  • 3세대컴퓨터

    특징 : 직접회로(IC), 이떄 부터 컴퓨터의 소형화가 이루어지기 시작함, 직접회로는 실제 크기는 아주 작기 때문에 소형화가 가능했다.

    직접회로
    <직접회로 / 출처 : 위키피디아>


컴퓨터의 구성

컴퓨터는 크게 소프트웨어하드웨어로 나뉩니다

소프트웨어에는 응용소프트웨어 와 시스템소프트웨어 이렇게 두가지로 나뉘어 집니다.

응용소프트웨어는 OS(Operating System)위에서 실행 되는 모든 소프트웨어를 일컫고, 시스템소프트웨어로는 윈도우, OS X, Linux, Unix등 과 같은 운영체제, 로더, 장치드라이버, 컴파일러, 에셈블러, 링커, 유틸리티로 나눕니다.

시스템소프트웨어 응용소프트웨어
운영체제 게임
로더(Loader) 워드프로세스
장치드라이버 브라우저(사파리, 크롬, 파이어폭스 등)
컴파일러 OS 위에서 실행 되는 모든 프로그램들
에셈블러
링커
유틸리티

컴퓨터의 구조

컴퓨터를 알려면 대표적으로 사용하는 구조를 알아야 합니다. 그래야 어떻게 작동이 되는지 알고 이해하여 프로그래밍을 할 수 있습니다.

컴퓨터의 구조를 이야기를 하면 대표적 두가지 구조에 대해서 이야기 합니다. 하버드구조 와 폰노이만 구조를 이야기를 합니다. 두구조의 차이는 메모리를 어떻게 쓰냐에 따른 차이입니다.

하버드 구조

: 가장 큰 특징은 메모리를 명령어데이터를 나눠서 각각 사용한다는 것입니다.

하버드 구조
위에 보시는 그림과 같은 구조로 데이터메모리와 명령어메모리로 물리적으로 분리되어서 따로 사용이 되고 있는것이 특징입니다. 하버드 구조의 경우에는 속도가 빠릅니다. 그 이유는 특정한 처리만을 위해서 사용하기 때문입니다. 그로 인해서 발생하는 문제는 비용이 많이 들게 된다는 것입니다.

폰노이만 구조

: 명령어와 데이터 메모리를 같이 공유한다.

폰노이만 구조
위에 있는 그림은 폰노이만 구조의 특징적 구조입니다. 하버드 구조와 달리 메모리를 하나로 공유를 하는 것이 특징입니다. 그렇기때문에 발생하는 문제는 메모리가 병목현상이 발생하게 되어 속도가 하버드에 비하여 느리다는 것이 단점입니다. 하지만 특정한 기능을 사용하기 위해서 설계를 해야하는 하버드와 달리 메모리에 올라가는 프로그램만 바꾸면 되므로 비용절감이 되어서 오늘날 가장 많이 사용하는 구조중에 하나 입니다.

구분 하버드구조 폰노이만구조
장점 프로그램당하나의구조이므로속도가빠르다 하나의 구조로 여러가지 프로그램을 사용 할수 있다.
단점 프로그램이 변경이되면 회로도가 변경이되어야한다. 프로그램이 변경이되면 회로도가 변경이되어야한다.

* 오늘날의 컴퓨터는 이 방법들 적제적소에 맞도록 설계하여 사용 합니다.

* 당시에는 컴퓨터의 비용이 어마 했기에 폰노이만을 더 선호하였습니다.

데이터의 표현

컴퓨터는 2진법을 사용 하는 기계이다.

그렇기 때문에 우리는 컴퓨터가 어떻게 연산을 하는지 알아야 하고 어떻게 해야 하는지 알아야만 컴퓨터에 대해서 이해 할 수 있다.

정수

: 자연수(0 1 2 3 4 … ) 와 음수 ( -1 -2 -3…) 로 이루어진 숫자

일상 생활에서 접할수 있는 숫자는 10진법 이다 ( 손가락이 10개 이기 때문에 10진법을 사용한다 )

앞서 언급 했듯이 2진수는 0과 1을 사용해서 비트(bit)를 표현을 한다. 1개당 1비트씩 8bit면 8개의 자리가 있는 것이다.

8bit는 숫자를 표현 할수 있는 가장 큰 값은 256 ( = 8bit = 1111 1111(2) ) 이다.

  256(10)     => 2 x 10^2 +  5 x 10^1 +  6 x 10^0     [10진수] * ^ 는 제곱을 의미한다 

  1011(2)     => 1 x 2^3 + 0 x 2^2 + 1 x 2^1 + 1 x 2^0 = 11   [2진수] 

  0xBB(16)   => 1011 1011(2)  => 187(10)

대표적인 진법들은 16진법, 10진법 8진법 2진법이 있다.

실수

: 유리수와 무리수를 포함한 수의 집합


General floating point ko.svg
< IEEE 754 / 자료출러 : 위키피디아>

위의 그림은 실수의 표현 방식중 하나이다. (부동소수점 중 IEEE 754) 실수에는 부호,지수,가수로 표현을 하는데 가수 부분에는 2진수로 된 비트의 숫자가 표현이 된다. 지수에는 소수점의 위치를 표현 한다.

* 이러한 표기법을 사용하는 이유는 소수라는 것은 완전한 수가 아니기 때문에 표현하는데 분명 한계가 있기 마련이다. 그렇기 때문에 IEEE 754와 같은 표기 방법을 정의해서 이와 같이 쓰자라고 약속을 한것이다. 단점으로는 어느정도의 수를 잘라내고 사용하기 때문에 정확한 수가 아니게 된다라는 것이다.

문자

말그대로 사람이 사용하는 문자이다. 컴퓨터는 0과 1밖에 구분을 못하기 때문에 일정한 규칙을 만듬으로써 문자를 표현하도록 하엿다. 아스키코드( ASCII ), 유니코드, UTF-8등등의 방식이 있고 이러한 것들을 인코딩(Encoding) 이라 일컷는다. 인코딩은 문자 뿐만 아니라 영상, 음악 등 여러가지가 있다. 이러한 인코딩 방식을 만드는 이유는 나라 혹은 사람마다 쓰는 규격이 다르기 때문이다.

  • 실제로 외부망으로 통신을 할때 이 인코딩을 맞추는 작업이 상당히 고역이다. 전송되는 과정에서 손실되는 것은 감안하고 해도 인코딩이라는것이 시스템에 따라서 사용하는 언어에 따라서 달라지는 경우도 있다.

참고자료링크

참고링크는 보았던 사이트중 가장 괜찮은 사이트만 올렸습니다.


Similar Posts

Comments