[컴퓨터 구조론 이론] 컴퓨터 구조 시작하기

#cs
Written by Sungbin2026년 2월 20일 · 3 min read

시리즈의 글 (8개)

  1. [컴퓨터 구조론 이론] 컴퓨터 구조 시작하기
  2. [컴퓨터 구조론 이론] 데이터
  3. [컴퓨터 구조론 이론] 명령어
  4. [컴퓨터 구조론 이론] CPU의 작동 원리
  5. [컴퓨터 구조론 이론] CPU의 성능 향상 기법
  6. [컴퓨터 구조론 이론] 메모리와 캐시 메모리
  7. [컴퓨터 구조론 이론] 보조기억장치
  8. [컴퓨터 구조론 이론] 입출력 장치

banner

본 포스팅은 인프런의 개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제를 참조하여 작성한 글입니다.

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

우리는 처음 프로그래밍 언어를 공부를 진행할 때 프로그래밍 언어 문법부터 공부를 하기 시작한다. 하지만 이것은 잘못된 방향성일 수도 있다. 사실 프로그래밍 언어 문법과 더불어서 컴퓨터의 근간을 알아야 한다.

여기서 컴퓨터의 근간은 컴퓨터 구조론과 운영체제를 일컫는다.

그런데 독자들은 이런 생각을 들을 수 있을 것이다. 개발자면 그냥 단순히 코드만 잘 짜면 되지 않을까? 일단 결론부터 말씀드리면 아니다. 그러면 왜 컴퓨터 구조론에 대해서 학습해야 하는지 말해보겠다.

문제 해결 능력

컴퓨터 구조론을 학습해야 하는 이유로는 문제 해결 능력을 향상시킬 수 있다. 예를 들어 우리가 같은 코드들을 작성하는데 어느 컴퓨터에서는 잘 작동하고 어느 컴퓨터에서는 잘 동작하지 않는 현상을 가끔 마주치곤 한다. 여기서 어떤 분은 왜 동작하지 않을까하고 의구심만 품은채 포기하지만 어느 분들은 컴퓨터를 파헤쳐보는 생각을 하신다. 이것은 컴퓨터를 미지의 대상으로 보기 때문이다. 즉, 컴퓨터를 두려움의 대상으로 보고 포기하시는 분들이 많다. 하지만 정말 개발을 잘하려면 컴퓨터를 미지의 대상이 아닌 분석의 대상으로 봐야 할 것이다. 그리고 컴퓨터 내부를 거리낌 없이 들여다 보면 더 좋은 해결책도 찾을 수 있다.

즉, 컴퓨터 구조론을 학습한다는 것은 컴퓨터를 관조할 수 있는 능력을 배양할 수 있다라는 것이다.

문법에 맞는 소스 코드를 컴퓨터에 단순히 입력만 하는 개발자는 성장할 수 없다. 요즘 AI 시대가 다가온 만큼 이런 작업들은 우리보다 AI가 더 잘한다. 그러면 AI와 차별점을 주려면 우리는 컴퓨터를 내려다보면서 문제를 해결할 수 있는 개발자가 되어야 한다.

성능, 용량, 비용

두번째 이유로는 성능, 용량, 비용때문이다. 우리가 웹 어플리케이션을 만들어서 사용자에게 선보이려고 한다. 그러면 우리는 해당 어플리케이션이 동작할 만한 환경의 서버 컴퓨터나 클라우드를 신청해야 한다. 여기서 우리는 성능과 비용, 용량을 신경 안 쓸 수 없다. 단순히 무조건 저렴한 컴퓨터나 최신식 컴퓨터를 살 수도 없을 것이다. 이렇게 생각하면 실제 100만원만 나갈 비용이 1000만원이 나갈 수도 있기 때문이다. 이런 소양을 컴퓨터 구조론을 학습하면서 상기가 될 수 있을 것이다. 결국 컴퓨터 구조론은 성능, 용량, 비용 이야기를 하기 때문이다.

컴퓨터 구조의 큰 그림

이제 컴퓨터 구조론에 대해 상세히 나가기 전에 컴퓨터 구조에 대한 큰 그림부터 살펴보고 넘어가보도록 하겠다. 우리가 알아야 할 컴퓨터 구조 지식은 크게 2가지로 나눠진다. 하나는 컴퓨터가 이해하는 정보이고, 또 하나는 컴퓨터의 4가지 핵심 부품이다. 그럼 하나씩 살펴보자.

컴퓨터가 이해하는 정보

컴퓨터가 이해하는 정보로는 크게 2가지가 있다. 바로 데이터명령어이다. 데이터부터 먼저 살펴보자. 데이터의 특징은 다음과 같다.

  • 숫자, 이미지, 문자, 동영상과 같은 정적인 정보들
  • 컴퓨터와 주고받는 내부에 저장된 정보를 데이터라고 통칭한다.
  • 0과 1로 숫자로 표현
  • 0과 1로 문자로 표현

다음은 명령어를 살펴보자. 컴퓨터는 명령어를 처리하는 기계이다. 그래서 명령어는 다음과 같은 특징을 가진다.

  • 컴퓨터는 결국 명령어를 처리하는 기계이다.
  • 명령어
    • 컴퓨터를 실질적으로 움직이는 정보
    • 데이터는 명령어를 위한 일종의 재료

예를 한번 들어보자. 1+2를 하라는 것이 있다고 해보자. 여기서 1과 2는 데이터고 더하라는 것이 명령어이다.

컴퓨터의 4가지 핵심 부품

세상에는 다양한 종류의 컴퓨터가 존재한다. 아두이노, 라즈베리파이와 같은 작은 컴퓨터부터 스마트폰, 노트북, 데스크톱, 서버 컴퓨터에 이르기까지 그 크기와 용도가 제각각이다. 하지만 컴퓨터의 핵심 부품은 크게 다르지가 않다. 컴퓨터의 핵심 부품으로는 중앙처리장치, 주기억장치, 보조기억장치, 입출력장치가 존재한다. 중앙처리장치를 흔히 CPU라고 표현하고 주기억장치를 보통 RAM이라고 한다.

주기억장치 종류

주기억장치에는 사실 크게 RAM과 ROM으로 나눠진다. 매모리라는 용어는 보통 RAM을 지칭한다.

컴퓨터가 동작하기 위해서는 위의 4가지 핵심부품이 반드시 존재해야 한다. 그리고 해당 핵삼 부품들을 연결해주는 장치가 존재한다. 그것이 바로 메인보드이다. 메인보드 안에 컴퓨터 4가지 핵심 부품들을 부착이 가능하다. 그렇게 되면 해당 핵심 부품들끼리 정보 공유가 가능하게 되는데 정보를 받기 위한 핵심 통로를 시스템 버스라고 말한다. 그러면 핵심 부품을 하나씩 살펴보자.

메모리

컴퓨터가 이해하는 정보는 명령어와 데이터이다. 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다. 그리고 메모리에는 저장된 값에 빠르고 효율적으로 접근하기 위해 메모리 주소라는 개념을 사용한다. 메모리 주소를 통해 내가 원하는 명령어 혹은 데이터가 어디에 저장되는지 알 수 있다. 요약을 하면 다음과 같다.

  • 프로그램이 실행되기 위해서는 반드시 메모리에 저장되어 있어야 한다.
  • 메모리는 현재 실행되는 프로그램의 명렁어와 데이터를 저장한다.
  • 메모리에 저장된 값의 위치는 주소로 알 수 있다.

CPU

CPU는 컴퓨터의 두뇌이다. CPU는 굉장히 복잡한 장치이고 여러 내부 장치들로 구성이 되는데 가장 중요한 3가지가 바로 산술논리연산장치(ALU), 레지스터, 제어장치이다.

  • ALU: 쉽게 말하여 계산기이다.
  • 레지스터: CPU 내부의 작은 저장장치
  • 제어장치: 제어신호라는 전기신호를 내보내고 명령어를 해석하는 장치
    • 메모리 읽기: CPU가 메모리에 저장된 값을 읽고 싶을 땐 메모리를 향해 메모리 읽기 제어신호를 보낸다.
    • 메모리 쓰기: CPU가 메모리에 어떤 값을 저장하고 싶을 땐 메모리를 향해 메로리 쓰기 제어신호를 보낸다.

제어신호: 컴퓨터 부품들을 관리하고 작동시키기 위한 전기신호

요약을 하면 다음과 같다.

  • CPU는 메모리에 저장된 값을 읽어 들이고, 해석하고, 실행하는 장치이다.
  • CPU 내부에는 ALU, 레지스터, 제어장치가 있다.
  • ALU는 계산하는 장치, 레지스터는 임시 저장 장치, 제어장치는 제어신호를 발생시키고 명령어를 해석하는 장치

보조기억장치

RAM은 비싸고 전원이 꺼지면 저장된 내용이 소실되는 휘발성 메모리이다. 이런 점을 위해 메모리를 보조하고 전원이 꺼져도 데이터가 남아있는 비휘발성 메모리가 필요했는데 그것이 보조기억장치이다. 보조기억장치는 메모리를 보조하는 특별한 입출력 장치로, 실행되지 않는 프로그램의 명렁어와 데이터가 저장되어 있다.

입출력장치

입출력장치는 마이크, 스피커, 키보드등 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치이다. 그러면 아래와 같은 의문이 들 것이다.

보조기억장치랑 입출력장치랑 뭐가 다른거야?

사실 개념은 다르지만 딱 잘라 구분되는 개념은 아니다. 쉽게 생각해 보조기억장치도 입출력장치로 볼 수 있는데 보조기억장치는 메모리를 보조한다는 특별한 기능을 수행하는 입출력장치로 보면 좋을 것이다.

메인보드와 시스템 버스

컴퓨터의 핵심 부품들은 모두 메인보드라는 판에 연결된다. 메인보드에 연결된 부품들은 서로 정보를 주고 받을 수 있는데 이는 메인보드 내부에 버스라는 통로가 있기 때문이다. 컴푸터 내부에는 다양한 종류의 버스가 존재하는데 4가지 핵심부품을 연결하는 가장 중요한 버스가 시스템 버스이다. 요약을 한번 해보자.

  • 메인보드에 연결된 부품은 버스를 통해 정보를 주고 받음
  • 버스는 컴퓨터의 부품끼리 정보를 주고 받는 일종의 통로
  • 댜앙한 종류의 버스가 있음
  • 컴퓨터의 핵심 부품을 연결하는 버스는 시스템 버스

또한 시스템 버스는 3가지 버스로 나뉜다.

  • 주소 버스: 주소를 주고 받는 통로
  • 데이터 버스: 명령어와 데이터를 주고 받는 통로
  • 제어 버스: 제어신호를 주고 받는 통로