영감을 (inspire) 주고픈 개발 블로그

[입문자 1차] 모니터 이면의 세계 본문

컴퓨터 이론/개념

[입문자 1차] 모니터 이면의 세계

inspire12 2017. 1. 4. 17:35

이 시간에는 기술적인 것들을 알려주기 전에 배경지식 같은 걸 알려드리려 해요.


할머니가 손주들한테 이야기하는 식으로 말이에요. 


컴퓨터는 어떻게 구성되어있고, 어떤 식으로 발전해 왔는지를 이해하는 게 목적입니다.


언어와 알고리즘을 통해 코딩을 하는 건 이후에 있을 테니까 일단 천천히 읽어보시면 될 것 같아요.


우선 앞으로 쓸 단어들에 대해 정확히 알고 갑시다. 


컴퓨터가 뭘까요?

프로그램이 뭘까요? 

코드(소스코드)가 뭘까요?

알고리즘은 뭘까요?

메모리가 뭘까요?

CPU가 뭘까요?

하드디스크가 뭘까요?

운영체제가 뭘까요?

커널이 뭘까요?

소프트웨어가 뭘까요?

하드웨어가 뭘까요?

네트워크가 뭘까요?

버스가 뭘까요?

진공관, 트랜지스터가 뭘까요?

천공카드, 기계어가 뭘까요?


혹시 당황 하셨나요?


당연하고 자연스럽게 쓰던 이런 단어들을 딱 정의하라고 하면 저도 막 당황하게되요. (알고 있다고 착각하고 있었던 거에요.)


사실 이걸 처음 들어보는 사람을 위해 쓴 강의니까 오히려 이게 뭐야 하는 느낌일 수도 있어요. 


그래서 쉽게 쓴 후 링크를 걸어놓을게요. 한번 읽어보세요


컴퓨터       : 명령을 수행 할 수 있는 기계                                https://en.wikipedia.org/wiki/Computer

프로그램    : 명령어들의 집합(순서대로 실행한다.)                     https://en.wikipedia.org/wiki/Computer_programming

코드          : 프로그래머가 컴퓨터에게 줄 설계서(명령어 집합들)   https://opentutorials.org/course/1750/9617

메모리       : 명령어들을 쓸 순서에 맞게 저장해놓은, 주기억장치)  https://en.wikipedia.org/wiki/Computer_memory

CPU          : 명령어를 처리하는 곳

운영체제    : 하드웨어와 소프트웨어를 관리 해주는 시스템 소프트 웨어    https://en.wikipedia.org/wiki/Operating_system

커널          : 운영체제 중 하드웨어와 소프트웨어를 연결 해주는 시스템 소프트 웨어

기계어       : 01010101010


이제 좀 이해가 가셨나요? 


우선 컴퓨터는 왜 특별한지에 대해 이야기를 해보겠습니다. 


앞에 정의에서 봤듯이 컴퓨터는 기계에요, 기계긴 한데 좀 특별한 무언가가 있어요.


컴퓨터의 어원이 계산기라는 건 아시나요? 


지금은 아무도 컴퓨터를 단순 계산기로 쓰죠? 그런 부르주아가 있나? 


그런데 컴퓨터와 계산기는 무슨 연관이 있을까요. 


기계의 속성을 좀 생각해볼게요. 기계는 정해진 하나의 행동을 하도록 만들어졌어요. 

그걸 고치려면 드라이버를 가지고 와서 내부를 뜯어 고쳐야 하죠. 버튼도 몇개 없고 누르면 실행되는 제한된 행동만 해요.


반면 계산기는 그런 페러다임이 확 바뀌어요. 수많은 입력이 있고, 

그 입력들을 어떻게 조합하느냐에 따라서 1도 되고, 2도 되고 17도 되고 2^32-1도 되는 다양한 결과를 만들어 내요. 처음엔 단순 숫자 1,2 였던 것이 1일 때는 이런 기능을 2일 때는 이런 기능을 같은 논리적 구성에 따라 발전하게 된거에요. 

그 조합을 어떻게 하느냐에 따라 다른 기능이 수행되요. 


기계는 이미 만들어진 대로만 움직이자만 컴퓨터는 순서(절차)를 만들어서 다양하게 구사할 수 있다. 


무한한 확장성이 기계와 컴퓨터의 차이입니다. 


이제 컴퓨터가 어떻게 이런 다양성을 만들어 내는지 내부를 한 번 보시죠. 


혹시 컴퓨터 조립해 보신 분 있나요? 없다면 좀 생소하실 거에요. 무서울 수도 있어요. 우리가 마주한 컴퓨터는 늘 모니터에서 나오는 화면이지 그 화면이 어떻게 완성되는 건지는 모르잖아요. 이건 컴퓨터 내부의 모습이에요. 이걸 하드웨어라고 하죠. 컴퓨터의 부품들이에요. 저기 보이는게 CPU 저기 보이는게 랩 저 끝에 있는게 하드디스크, 저건 그래픽카드. 저 포트를 통해 전원이 들어오면 각 장치들이 상호 작용을 하게 되죠.


우리가 주로 다룰 부품은 여기에  여기의 RAM이란 놈이에요. 이 RAM이 뭐하는 놈이냐, 앞서말한 Memory란 놈입니다. 컴퓨터의 주된 처리는 CPU에서 이루어져요. CPU는 그저 계산을 해주는 역할을 하죠. 어떤 걸 계산해 주냐면, RAM에 저장된 걸 차례로 읽으면서 그 순서대로 처리를 하게 되요. 그리고 RAM에 어떻게 값을 넣는지는 바로 프로그래머의 손에 달렸습니다. 프로그램이란 명령어의 집합이고, 그 명령어를 의미있는 순서대로 쌓아놓는 저장 공간이 바로 RAM이란 놈이에요. 프로그램이 실행되면 하드디스크에 저장되어있던 코드들이 이 메모리에 올라오게 되요. 그리고 올라온 것들이 순서(스텍)대로 쌓이게 되고 이걸 CPU가 처리하면서 기능을 수행하는 겁니다.


다음 시간엔 이 Memory가 어떻게 사용되는지를 이야기 할게요.


정리 

- 용어정리

- 컴퓨터와 기계가 다른 점은 무한한 확장성

- 프로그램은 명령어들을 순서대로 실행 적어놓고 메모리에 저장해놓으면 CPU는 그 순서대로 읽음(결국 메모리에 어떻게 쌓느냐가 핵심)


반응형