티스토리 뷰
1. 디지털
컴퓨터는 글자, 그림, 소리등 마치 서로 다른 여러가지 정보를 저장하고 있는 것 처럼 보인다.
하지만 실제로는 컴퓨터는 1과 0밖에 모른다. (디지털)
왜냐하면 컴퓨터가 그렇게 만들어졌기 때문이다.
(사실, 디지털인 컴퓨터와 대비하여 인간은 아날로그적 존재라고 생각되고 있지만, 인간의 뇌 구조를 보면 뉴런(신경세포)과 뉴런이 서로 연결되어있고, 그 사이의 신호는 전류와 신경전달물질의 유리로 이루어지는데, 이것 또한 완전한 아날로그라 보기는 어렵다.)
컴퓨터의 구조를 자세히보면, 컴퓨터는 정보를 저장할 수 있는 전기회로를 가지고 있는데, 이 회로의 최소단위는 비트이며, 하나의 비트는 0(꺼짐), 1(켜짐) 두 가지의 상태만을 구분함을 볼 수 있다.
따라서 글자, 그림, 소리등의 다른형태라고 생각되는 정보들은 컴퓨터에서는 0과 1로 디지털화되어 저장되고 처리되는 것이다.
하나의 비트는 겨우 2가지를 표현하지만, 2개의 비트는 2x2=4가지를 표현할 수 있고, 3개의 비트는 2x2x2=2^3=8가지를 표현할 수 있다. 만약 n개의 비트를 가지고 있다면 이는 2^n가지의 상태를 표현할 수 있다. 결국 많은 비트를 쌓을 수록, 컴퓨터는 더 많은 데이터를 구분하고 저장 할 수 있게 된다.
2. 컴퓨터의 구조
컴퓨터는 복잡한 기능을 하고, 복잡한 구조를 가지고 있는 것처럼 보이지만, 사실 컴퓨터는 계산기와 크게 차이가 없다. 구조상으로 입력장치, 연산장치, 저장장치, 출력장치를 가지고 있고, 이러한 기본구조는 계산기와 크게 다르지 않다. 그 역할도 이름 그대로를 수행한다.
1) 입력장치(키보드, 마우스등) - 데이터를 외부로 부터 입력받음.
2) 연산장치(cpu, gpu등) - 데이터를 연산함. (e.g. 1+1)
3) 저장장치(메모리, HDD등) - 데이터를 저장함.
4) 출력장치(모니터, 스피커 등) - 데이터를 출력함.
3. 컴퓨터의 데이터 처리 과정
위의 여러가지 장치는 서로 연결되어 있는데, 외부로부터 데이터를 입력(입력장치) 받거나, 내부에 저장된(저장장치) 데이터를 연산장치인 cpu를 통해서 열심히 계산을 하고, 그 결과를 출력장치로 내보낸다.
예를 들어, 텍스트박스안에 "안녕하세요"라고 키보드로 입력을 하고 그것을 눈으로 확인이 가능한 이유는...
1) 키보드로 "안녕하세요" 를 입력함.
2) 키보드에서 입력된 신호가 전기신호로 바뀌어 디지털화 되어(101000100101.. 처럼) 메모리로 전달됨.
3) cpu 가 메모리에 전달된 데이터를 가지고 연산함.
4) 연산한 데이터를 다시 메모리로 반환함.
5) 반환된 데이터가 출력장치(모니터)로 전달됨.
6) 모니터가 신호를 출력 : "안녕하세요"
위와같은 일련의 단계를 거치기 때문이다. (물론 실제로는 더 복잡한 단계로 이루어져 있지만..) 소프트웨어적으로는 이러한 외부에서 입력장치를 통해 들어오는 데이터와 내부의 데이터(메모리)를 cpu로 옮기고 연산하고, 출력을 지시해야 하는데, 이러한 여러 명령을 실행하는 것이 바로 '프로그램'이다.
4. 컴퓨터 프로그램
컴퓨터 내부의 전기회로의 신호를 제어하는 것은, 결국 그 장치와 그 회로에 명령을 실행함으로서 이루어지는데, 사람이 컴퓨터를 사용할 때마다, 매번 제어명령을 직접 하나씩 일일히 내려야 한다면 이는 매우 비효율적일 것이다. (밥을 매끼 먹을때마다 벼를 기르고, 추수하고, 도정하여 밥을 지을 수는 없는 노릇아닌가?) 따라서, 미리 명령을 만들어 두고 컴퓨터를 제어하게 되는데, 어떤 것은 회로 안에 내장되어 있는것도 있고, 어떤것은 회로안에 내장되어 있지는 않지만, 저장장치에 미리 저장해 놓았다가 컴퓨터를 시작할때 실행되는 것도 있다. 후자의 경우처럼, 하드웨어적으로 내장되어 있지는 않지만, 미리 저장장치에 저장시켜 두어 여러가지 장치들을 효율적으로 제어하고 여러가지 응용 프로그램을 실행할수 있게 하는 프로그램이 바로 운영체제(Operating system, OS) 이다. 개인 데스크톱에는 주로 윈도우즈를, 모바일에는 안드로이드 또는 iOS등을, 서버에는 리눅스나 유닉스 등을 설치하여 사용하게 된다. 이러한 운영체제를 통해서 사람은 직접 기계어나 어셈블리어 같은 명령을 직접 입력하지 않고도 컴퓨터 내부의 장치를 제어하고 실행할 수 있게 된다. (즉, 실제로는 운영체제가 인간 대신 명령을 실행하게 하여 복잡한 회로를 제어하고 있는 것이다.)