[혼공컴운] Chapter 01. 컴퓨터 구조 시작하기

NCOOKIE·2023년 10월 15일
0

컴퓨터 구조를 알아야 하는 이유

문제 해결

개발할 때는 문제 없이 작동했던 코드가 실제 사용자들에게 선보이는 자리에서는 작동하지 않는 상황이 비일비재하다. 문제 해결의 실마리를 도저히 찾을 수 없는 사람은 발만 동동 구른다. 프로그래밍 언어의 문법만 알고 있는 사람에게 컴퓨터란 코드를 입력하면 어찌어찌 알아서 결과물을 툭 내놓는 미지의 대상이기 때문이다. 결국 이들은 컴퓨터라는 기계에 코드를 "입력"만 할 수 있을 뿐 그 이상을 하기는 어렵다.

컴퓨터 구조를 이해하고 있따면 문제 상황을 빠르게 진단할 수 있고, 문제 해결의 실마리를 다양하게 찾을 수 있다. 이런 사고가 가능한 이들에게 컴퓨터란 미지의 대상이 아닌 분석의 대상이기 때문이다.

컴퓨터 구조 지식은 문법에 맞는 코드만 작성할 줄 아는 개발자를 넘어 다양한 문제를 스스로 해결할 줄 아는 개발자로 만들어 준다.

성능, 용량, 비용

서버 컴퓨터를 구매할 때 CPU, 메모리 등 어떤 선택을 하는지에 따라 성능, 용량, 비용이 달라진다.

개발한 프로그램이 어떤 환경에서 어떻게 작동하는지는 본인이 가장 잘 이해하고 있어야 하고, 프로그램을 위한 최적의 컴퓨터 환경을 스스로 판단할 수 있어야 한다.

성능, 용량, 비용 문제는 프로그래밍 언어의 문법만 알아서는 해결하기 어렵다. 컴퓨터 구조를 이해하면 입력과 출력에만 집중하는 개발을 넘어 성능, 용량, 비용까지 고려하며 개발하는 개발자가 될 수 있다.

요약

  • 컴퓨터 구조를 이해하면 문제 해결 능력이 향상된다.
  • 컴퓨터 구조를 이해하면 문법만으로는 알기 어려운 성능/용량/비용을 고려하며 개발할 수 있다.

컴퓨터 구조의 큰 그림

컴퓨터가 이해하는 정보

컴퓨터는 0과 1로 표현된 정보만을 이해한다. 이렇게 0과 1로 표현되는 정보에는 크게 두 종류가 있는데, 데이터와 명령어다.

컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보를 가리켜 데이터(data)라고 한다. 이러한 데이터를 움직이고 컴퓨터를 작동시키는 정보는 명령어(instruction)이다. 이 둘 중 컴퓨터를 실질적으로 작동시키는 더 중요한 정보는 명령어이다. 데이터는 명령어 없이는 아무것도 할 수 없는 정보 덩어리일 뿐이기 때문이다.

컴퓨터의 4가지 핵심 부품

주기억장치(메모리, main memory)

현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다. 즉, 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 한다.

컴퓨터가 빠르게 동작하기 위해서는 저장된 명령어와 데이터의 위치가 정돈되어 있어야 한다. 그래서 메모리에 저장된 값에 빠르고 효율적으로 접근하기 위해 주소(address)라는 개념이 사용된다.

중앙처리장치(CPU; Central Processing Unit)

메모리에 저장된 명령어를 읽어 들이고, 읽어 들인 명령어를 해석하고, 실행하는 부품이다. CPU 내부 구성 요소 중 가장 중요한 세 가지는 산술논리연산장치(ALU; Arithmetic Logic Unit), 레지스터(register), 제어장치(CU; Control Unit)이다.

  • ALU : 계산만을 위해 존재하는 부품이다. 컴퓨터 내부에서 수행되는 대부분의 계산을 도맡아 수행한다.
  • 레지스터 : CPU 내부의 작은 임시 저장 장치이다. 프로그램을 실행하는데 필요한 값들을 임시로 저장한다. CPU 안에는 여러 개의 레지스터가 존재하고 각기 다른 이름과 역할을 가지고 있다.
  • 제어장치 : 제어 신호(control signal)라는 전기 신호를 내보내고 명령어를 해석하는 장치이다.

보조기억장치(Secondary storage)

메모리(주기억장치)는 치명적인 두 가지 약점이 있다. 첫째는 가격이 비싸 저장 용량이 적다는 점이고, 둘째는 전원이 꺼지면 저장된 내용을 잃는다는 것이다.

이러한 약점을 보완하기 위한, 메모리보다 크기가 크고 전원이 꺼져도 저장된 내용을 잃지 않는 메모리를 보조할 장치가 보조기억장치이다.

메모리가 현재 “실행되는” 프로그램을 저장한다면, 보조기억장치는 “보관할” 프로그램을 저장한다.

입출력장치(input/output (I/O) device)

마이크, 스피커, 프린터, 마우스, 키보드처럼 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치를 말한다.

보조기억장치도 입출력장치가 아닌가?

보조기억장치는 관점에 따라 입출력장치의 일종으로 볼 수 있다. 실제로 이 둘을 ‘컴퓨터 주변에 붙어있는 장치’라는 의미에서 주변장치(peripheral device)라고 통칭하기도 한다. 다만 보조기억장치는 다른 입출력장치와 다르게 메모리를 보조한다는 특별한 기능을 수행하는 입출력장치이다.

메인보드와 시스템 버스

앞에서 설명했던 컴퓨터 핵심 부품들은 모두 메인보드(main board)라는 판에 연결된다. 메인보드는 마더보드(mother board)라고 부르기도 한다.

메인보드에 연결된 부품들은 서로 정보를 주고받을 수 있는데, 이는 메인보드 내부에 버스(bus)라는 통로가 있기 때문이다. 컴퓨터 내부에는 다양한 종류의 통로, 즉 버스가 있으며 여러 버스 가운데 컴퓨터의 네 가지 핵심 부품을 연결하는 가장 중요한 버스는 시스템 버스(system bus)이다.

시스템 버스 구성

  • 주소 버스(address bus) : 주소를 주고받는 통로
  • 데이터 버스(data bus) : 명령어와 데이터를 주고받는 통로
  • 제어 버스(control bus) : 제어 신호를 주고받는 통로

위 그림은 시스템 버스와 CPU의 작동 예시이다. 제어 버스로 ‘메모리 읽기’ 제어 신호를 내보내고, 주소 버스로 읽고자 하는 주소를 내보낸다. 그러면 메모리는 데이터 버스로 CPU가 요청한 주소에 있는 내용을 내보낸다.

요약

  • 컴퓨터가 이해하는 정보에는 데이터명령어가 있다.
  • 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다.
  • CPU는 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 부품이다.
  • 보조기억장치는 전원이 꺼져도 보관할 프로그램을 저장하는 부품이다.
  • 입출력장치는 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품이다.
  • 시스템 버스는 컴퓨터의 네 가지 핵심 부품들이 서로 정보를 주고받는 통로이다.

Q&A

컴퓨터 구조를 이해하면 문제 해결 능력이 향상된다. 이에 대한 예시 또는 사례는? (Ch01-1)

효율적인 알고리즘 개발

컴퓨터 구조를 이해하면 컴퓨터가 데이터를 처리하는 방식을 이해할 수 있다. 이를 통해 데이터를 효율적으로 다루는 알고리즘을 개발할 수 있다. 예를 들어, 정렬 알고리즘을 개발할 때 어떤 알고리즘이 CPU나 메모리 등의 자원을 더 효율적으로 사용할 수 있는지를 이해하고 선택할 수 있다.

메모리 관리

메모리를 효율적으로 활용하는 방법을 배울 수 있다. 이는 곧 프로그램 성능의 최적화와 이어진다.

디버깅

프로그램에서 발생하는 에러 또는 버그는 개발자의 실수(휴먼에러) 등으로 발생할 수도 있지만, 구동 환경이나 메모리 상태 등에 따라 영향을 받을 때가 많다. 이러한 경우는 컴퓨터 구조적인 지식을 가지고 있지 않으면 이해하기 힘들고 문제로서 접근하기도 어렵다.

새로운 지식 습득

프로그램이라 함은 기본적으로 컴퓨터 위에서 돌아간다. 그리고 프로그램에서 사용되는 새로운 기술 등은 이 컴퓨터 구조를 베이스로 구성되기 때문에 이를 알고 있으면 이해하고 배우기 비교적 쉽다.

참고

profile
일단 해보자

0개의 댓글