2026년 03월 07일

🖥️ 컴퓨터 구조 — 개발자가 알아야 할 핵심 지식

Java Spring Boot
Cover Image

🖥️ 컴퓨터 구조 — 개발자가 알아야 할 핵심 지식

💡 왜 개발자가 컴퓨터 구조를 알아야 할까요? Java 코드 한 줄이 실행되기까지, 그 뒤에서는 수많은 하드웨어 부품들이 협력합니다. 내부 동작을 이해하면 더 빠르고, 더 안정적인 코드를 작성할 수 있습니다.


1. 컴퓨터가 이해하는 정보

컴퓨터는 Java, Python 같은 프로그래밍 언어를 직접 이해하지 못합니다. 우리가 작성한 소스 코드는 내부적으로 컴퓨터가 이해할 수 있는 형태로 변환되어 실행됩니다.

컴퓨터가 이해하는 정보는 단 두 가지입니다.

종류설명예시
데이터정적인 정보. 있는 그대로의 값숫자 1, 2, 문자열 "hello", 파일 cat.jpg
명령어데이터를 활용하는 정보. 수행할 동작 + 대상더하라 1과 2를, 출력하라 "hello world"를
더하라.  1과 2를          ← 명령어(동작) + 데이터(대상)
출력하라. "hello world"를  ← 명령어(동작) + 데이터(대상)

🔑 핵심 관계: 데이터는 명령어에 종속적입니다. 명령어의 재료이자 명령의 대상이죠. 컴퓨터는 0과 1만으로 이 모든 것을 표현합니다.

Java 관점에서 보면?

int a = 1;  // 데이터: 정수 1
int b = 2;  // 데이터: 정수 2
int c = a + b;  // 명령어: 더하라 a와 b를 → CPU의 ALU가 실제로 연산

2. 컴퓨터의 핵심 부품

노트북이든, 서버든, 스마트폰이든 — 컴퓨터를 이루는 핵심 부품은 크게 다르지 않습니다.

부품역할특징
CPU명령어 읽기·해석·실행컴퓨터의 두뇌
메모리 (RAM)실행 중인 프로그램 저장휘발성 (전원 OFF → 삭제)
캐시 메모리CPU ↔ 메모리 속도 차이 완충CPU 내부/외부에 위치
보조기억장치프로그램·데이터 영구 저장비휘발성 (HDD, SSD)
입출력장치컴퓨터 외부와 정보 교환키보드(입력), 모니터(출력)

3. CPU — 컴퓨터의 두뇌

CPU는 명령어를 읽고(Fetch) → 해석하고(Decode) → 실행하는(Execute) 핵심 장치입니다.

CPU의 내부 구조

핵심 구성요소 3가지

① ALU (산술논리연산장치)

② 제어장치 (Control Unit)

③ 레지스터 (Register)

💡 CPU 종류가 다르면? CPU 종류(Intel x86, ARM 등)에 따라 실행 가능한 명령어 집합(ISA)이 달라집니다. Java가 JVM을 통해 어느 CPU에서든 동일하게 동작할 수 있는 이유가 바로 여기 있습니다. JVM이 각 CPU에 맞는 명령어로 변환해주기 때문입니다.


4. 메모리와 캐시 메모리

메모리 (RAM)

현재 실행 중인 프로그램을 저장하는 부품입니다.

메모리의 2가지 핵심 개념

개념설명
주소 (Address)CPU가 원하는 데이터에 접근하기 위한 위치 정보. 실생활의 도로명 주소와 같음
휘발성 (Volatile)전원이 꺼지면 저장된 모든 정보가 삭제됨

Java 관점: JVM이 실행되면, .class 파일(바이트코드)이 메모리(RAM)에 로드됩니다. new 로 생성된 객체들은 Heap 영역(메모리의 일부)에 올라갑니다. 프로그램 종료 시 메모리에서 모두 사라지는 이유가 바로 휘발성 때문입니다.

캐시 메모리

CPU와 메모리 사이의 속도 차이를 해결하기 위한 고속 임시 저장장치입니다.

처리 속도: CPU >> 캐시 메모리 >> 메모리 (RAM) >> 보조기억장치
저장 용량: CPU << 캐시 메모리 << 메모리 (RAM) << 보조기억장치

💡 개발자 시선으로: Java의 HashMap, 스프링의 @Cacheable, Redis 같은 소프트웨어 캐시도 이 개념과 완전히 동일한 원리입니다. 느린 저장소 대신 빠른 임시 저장소를 활용해 성능을 높이는 것이죠.


5. 보조기억장치 — 영구 저장소

메모리(RAM)는 휘발성이기 때문에 전원이 꺼지면 데이터가 사라집니다. 이를 보완하는 것이 비휘발성(non-volatile) 보조기억장치입니다.

구분메모리 (RAM)보조기억장치 (HDD/SSD)
역할실행 중인 프로그램 저장보관할 프로그램·데이터 저장
속도빠름느림
용량작음 (수 GB)큼 (수백 GB ~ 수 TB)
휘발성✅ (전원 OFF → 삭제)❌ (전원 OFF → 유지)
종류DDR SDRAM 등HDD, SSD, USB 메모리

⚠️ 중요한 포인트: CPU는 보조기억장치에 저장된 프로그램을 직접 실행할 수 없습니다. 반드시 보조기억장치 → 메모리(RAM) 으로 복사한 뒤 실행합니다.

Java 애플리케이션을 실행할 때 java -jar app.jar 를 입력하면, SSD에 저장된 .jar 파일이 RAM으로 올라온 뒤 JVM이 실행하는 것입니다.


6. 입출력장치 & 메인보드 & 버스

입출력장치

컴퓨터 외부와 정보를 교환하는 장치입니다.

종류예시
입력장치키보드, 마우스, 마이크, 스캐너
출력장치모니터, 스피커, 프린터

💡 보조기억장치도 넓은 의미에서 입출력장치의 일종입니다. 둘을 합쳐 주변장치(peripheral device) 라고 부르기도 합니다.

메인보드와 시스템 버스

모든 핵심 부품들은 메인보드(마더보드) 위에 연결됩니다. 부품들이 서로 데이터를 주고받는 통로가 바로 버스(Bus) 입니다.

시스템 버스의 3가지 구성요소:

버스 종류방향역할
데이터 버스양방향실제 데이터 전송
주소 버스단방향 (CPU → 장치)어느 주소의 데이터인지 전달
제어 버스양방향읽기/쓰기 등 제어 신호 전달

🎯 핵심 요약

소스코드 (.java)
    ↓ 컴파일 (javac)
바이트코드 (.class) — 보조기억장치(SSD)에 저장
    ↓ 실행 (java)
메모리(RAM)에 로드 — JVM, 클래스 파일 올라옴
    ↓
CPU가 명령어 읽기(Fetch) → 해석(Decode) → 실행(Execute)
    ↓
ALU가 연산 수행 / 레지스터에 중간값 저장
    ↓
결과를 메모리 또는 출력장치로 전달
부품한 줄 요약
CPU명령어를 실행하는 두뇌 (ALU + 제어장치 + 레지스터)
RAM지금 실행 중인 것들의 공간 (빠르지만 휘발성)
캐시 메모리CPU와 RAM 사이의 속도 완충제
보조기억장치전원이 꺼져도 남아있는 영구 저장소
시스템 버스부품들이 서로 소통하는 고속도로

📚 다음 학습 주제

  • 명령어의 종류와 구조
  • 명령어 사이클 (Fetch → Decode → Execute → Writeback)
  • CPU 성능 향상 기술 (파이프라이닝, 슈퍼스칼라)
  • 메모리 계층 구조와 지역성(Locality) 원리
← 목록으로 돌아가기