컴퓨터의 구성 (하드웨어 · 소프트웨어 · 시스템 버스)
컴퓨터 시스템은 크게 하드웨어와 소프트웨어로 나뉩니다. 하드웨어는 눈에 보이는 기계 장치이고, 소프트웨어는 그 기계에게 "무엇을, 어떤 순서로 하라"고 지시하는 명령어 묶음입니다.
한눈에 보기
- 비유: 컴퓨터를 식당이라고 생각해 보세요.
- 하드웨어는 주방 설비(가스레인지, 냉장고, 조리대)입니다.
- 소프트웨어는 레시피와 주방 운영 규칙입니다. 설비가 아무리 좋아도 레시피가 없으면 요리가 나오지 않고, 레시피만 있고 설비가 없어도 마찬가지입니다.
- 하드웨어 안에서는 CPU(요리사), 기억장치(냉장고와 조리대), 입출력장치(주문 받는 창구와 음식 내보내는 창구) 가 시스템 버스(주방 통로) 로 연결되어 서로 재료와 신호를 주고받습니다.
하드웨어와 소프트웨어
| 구분 | 뜻 | 예시 |
|---|---|---|
| 하드웨어 | 컴퓨터를 구성하는 기계적 장치 | CPU, 기억장치(RAM, HDD/SSD), 입출력장치(마우스, 프린터) |
| 소프트웨어 | 하드웨어의 동작을 지시하고 제어하는 명령어 집합 | 아래 두 종류 |
소프트웨어는 다시 두 가지로 나뉩니다.
- 시스템 소프트웨어: 하드웨어를 관리하고, 다른 프로그램이 돌아갈 바탕을 마련하는 소프트웨어입니다. 운영체제, 컴파일러가 여기에 속합니다. 운영체제는 운영체제란에서 자세히 다룹니다.
- 응용 소프트웨어: 사용자가 특정 일을 하려고 쓰는 프로그램입니다. 워드프로세서, 스프레드시트, 웹 브라우저가 여기에 속합니다.
하드웨어의 구성
하드웨어는 중앙처리장치(CPU), 기억장치, 입출력장치로 구성되고, 이들은 시스템 버스로 연결되어 있습니다. 시스템 버스는 데이터와 명령, 제어 신호를 각 장치로 실어 나르는 역할을 합니다.
[ CPU ] [ 기억장치 ] [ 입출력장치 ]
연산·제어 RAM, ROM 등 키보드, 모니터 등
│ │ │
════╪════════════════════╪═════════════════════╪════ 데이터 버스 : 데이터가 오감 (양방향)
════╪════════════════════╪═════════════════════╪════ 주소 버스 : CPU가 주소를 보냄 (단방향)
════╧════════════════════╧═════════════════════╧════ 제어 버스 : 읽기/쓰기/인터럽트 신호 (양방향)
세 버스를 합쳐서 "시스템 버스"라고 부름아래 그림은 각 장치 사이에서 데이터, 프로그램, 제어 신호가 어떻게 흐르는지 보여 줍니다. CPU 안의 제어장치와 연산장치가 주기억장치를 가운데 두고 입력장치, 출력장치, 보조기억장치와 주고받습니다.

그림 출처: gyoogle 기술 면접 정리, 컴퓨터의 구성
중앙처리장치 (CPU)
사람으로 치면 두뇌에 해당하는 부분입니다. 주기억장치에서 프로그램 명령어와 데이터를 읽어 와 처리하고, 명령어를 어떤 순서로 실행할지 제어합니다.
CPU는 세 부분으로 이루어져 있습니다.
| 구성 요소 | 하는 일 | 식당 비유 |
|---|---|---|
| 산술논리연산장치 (ALU) | 덧셈 같은 계산과 크기 비교 같은 논리 연산 | 칼질, 볶기 같은 실제 조리 |
| 제어장치 | 명령어를 해석하고, 실행에 필요한 신호를 각 장치에 보냄 | 레시피를 읽고 순서를 지휘하는 주방장 |
| 레지스터 | CPU 안에 있는 아주 빠르고 작은 저장 공간 | 요리사 손 바로 옆의 작은 접시 |
개인용 컴퓨터처럼 작은 컴퓨터에서는 CPU를 칩 하나로 만들기 때문에 마이크로프로세서라고도 부릅니다. CPU 내부 동작은 CPU 작동 원리에서 자세히 봅니다.
기억장치
프로그램, 데이터, 그리고 계산 도중에 나온 중간 결과를 저장하는 장치입니다. 주기억장치와 보조기억장치로 나뉩니다.
- 주기억장치: CPU가 바로 읽고 쓸 수 있는 기억장치입니다. RAM과 ROM이 여기에 속합니다.
- RAM: 지금 실행 중인 프로그램과 그 프로그램에 필요한 데이터를 일시적으로 저장합니다. 전원이 꺼지면 내용이 사라집니다(휘발성).
- ROM: 전원이 꺼져도 내용이 남는(비휘발성) 읽기 전용 메모리입니다. 컴퓨터를 켤 때 처음 실행되는 펌웨어(BIOS/UEFI)처럼 거의 바뀌지 않는 프로그램을 담습니다.
- 보조기억장치: 하드디스크(HDD), SSD 같은 장치입니다. 주기억장치보다 느리지만 훨씬 많은 자료를 영구적으로 보관할 수 있습니다.
비유하면 RAM은 조리대(넓지 않지만 바로 손이 닿고, 영업이 끝나면 치움), 보조기억장치는 창고(크고 오래 보관하지만 가지러 가는 데 시간이 걸림)입니다. 프로그램이 RAM을 어떻게 나눠 쓰는지는 메모리 구조, 운영체제가 메모리를 어떻게 관리하는지는 메모리 관리에서 다룹니다.
입출력장치
입력장치와 출력장치로 나뉩니다.
- 입력장치: 컴퓨터 내부로 자료를 넣는 장치입니다. 키보드, 마우스 등
- 출력장치: 컴퓨터 안의 결과를 바깥으로 표현하는 장치입니다. 프린터, 모니터, 스피커 등
시스템 버스
하드웨어 구성 요소를 물리적으로 연결하는 통로(선의 묶음)
각 구성 요소가 다른 구성 요소로 데이터를 보낼 수 있도록 길을 만들어 줍니다. 용도에 따라 데이터 버스, 주소 버스, 제어 버스 세 가지로 나뉩니다.
비유하면 택배 시스템과 비슷합니다. 데이터 버스는 물건이 오가는 도로, 주소 버스는 송장에 적힌 주소, 제어 버스는 "배송해 주세요 / 반품해 주세요" 같은 요청서입니다.

그림 출처: Wikimedia Commons (Public domain)
그림에서 노란 주소 버스는 CPU에서 나가는 한쪽 방향 화살표이고, 하늘색 데이터 버스와 분홍색 제어 버스는 양쪽 방향 화살표입니다.
데이터 버스
CPU와 다른 장치 사이에서 데이터를 전달하는 통로입니다.
기억장치와 입출력장치에 있는 명령어와 데이터를 CPU로 보내기도 하고, CPU의 연산 결과를 기억장치와 입출력장치로 보내기도 합니다. 양쪽으로 모두 오가기 때문에 양방향 버스입니다.
주소 버스
데이터를 정확한 곳에 실어 나르려면 기억장치의 주소를 먼저 정해 줘야 합니다.
주소 버스는 CPU가 주기억장치나 입출력장치에게 "몇 번지를 읽을지(쓸지)"라는 주소를 전달하는 통로입니다. 주소는 CPU가 정해서 보내기만 하므로 단방향 버스입니다.
- 주소 버스의 선 개수(폭)가 곧 가리킬 수 있는 주소의 개수를 정합니다. 예를 들어 주소 선이 32개면 2의 32제곱, 즉 약 43억 개의 주소(바이트 단위로 4GB)를 가리킬 수 있습니다.
- 참고로 CPU를 거치지 않고 장치가 메모리에 직접 데이터를 옮기는 DMA 같은 방식에서는 CPU가 아닌 장치(DMA 컨트롤러)가 주소를 내보내기도 합니다. 기본 개념으로는 "CPU가 주소를 내보낸다"고 이해하면 충분합니다.
제어 버스
주소 버스와 데이터 버스는 모든 장치가 함께 쓰기 때문에, 지금 누가 무엇을 할 차례인지 정해 주는 수단이 필요합니다.
제어 버스는 그런 제어 신호를 전달하는 통로입니다. 제어 신호의 종류는 다음과 같습니다.
- 기억장치 읽기 및 쓰기
- 버스 사용 요청 및 승인
- 인터럽트 요청 및 승인 (인터럽트 참고)
- 클럭(박자 신호), 리셋
제어 버스는 양방향으로 봅니다. 다만 이유는 "읽기와 쓰기를 모두 해서"라기보다, 신호가 오가는 방향이 둘 다 있기 때문입니다.
- CPU → 장치: "읽어라", "써라", "버스 사용을 승인한다" 같은 신호
- 장치 → CPU: "인터럽트를 걸고 싶다", "버스를 쓰고 싶다" 같은 요청 신호
선 하나하나는 대개 한쪽 방향으로만 신호가 흐르지만, 제어 버스 전체로 보면 양쪽으로 신호가 오갑니다.
컴퓨터가 일하는 기본 흐름
컴퓨터는 기본적으로 읽고, 처리한 뒤, 저장하는 과정을 반복합니다.
READ (읽기) → PROCESS (처리) → WRITE (저장)이 과정을 진행하면서 CPU는 끊임없이 주기억장치(RAM)와 데이터를 주고받습니다.
흔히 "64비트 컴퓨터라면 CPU가 RAM에서 한 번에 64비트씩 읽어 온다"고 설명합니다. 조금 더 정확히 말하면 이렇습니다.
- 64비트라는 숫자는 운영체제가 아니라 CPU가 한 번에 다루는 데이터 크기(워드 크기, 레지스터 크기) 를 뜻합니다. 64비트 운영체제는 이 64비트 CPU에 맞춰 만든 운영체제이고, 64비트 CPU에 32비트 운영체제를 설치해도 CPU 자체의 워드 크기는 그대로 64비트입니다.
- 실제 요즘 CPU는 RAM에서 데이터를 가져올 때 64비트(8바이트)씩이 아니라, 보통 64바이트 묶음(캐시 라인) 단위로 한꺼번에 가져와 캐시 메모리에 담아 둡니다. 근처 데이터를 곧 다시 쓸 가능성이 높기 때문입니다.
정리
| 개념 | 비전공자 버전 요약 |
|---|---|
| 하드웨어 | 눈에 보이는 기계 장치 (CPU, 메모리, 키보드 등) |
| 소프트웨어 | 기계에게 일을 시키는 명령어 묶음 (운영체제, 앱 등) |
| CPU | 계산하고 지휘하는 두뇌 (ALU + 제어장치 + 레지스터) |
| 주기억장치 | 지금 쓰는 것을 올려 두는 조리대 (RAM은 전원 끄면 사라짐, ROM은 남음) |
| 보조기억장치 | 크고 오래 보관하는 창고 (HDD, SSD) |
| 시스템 버스 | 장치끼리 연결하는 길. 데이터·주소·제어 버스 세 종류 |
| 데이터 버스 | 실제 데이터가 오가는 길 (양방향) |
| 주소 버스 | "몇 번지"를 알려 주는 길 (CPU에서 장치로, 단방향) |
| 제어 버스 | "읽어라/써라/인터럽트" 같은 신호가 오가는 길 (양방향) |
