
컴퓨터 시스템은 크게 하드웨어와 소프트웨어로 나누어진다.
🌟 RAM, ROM
컴퓨터의 핵심 기억장치인 RAM과 ROM에 대해 자세히 알아보자.
두 장치는 모두 주기억장치에 해당하지만, 성격과 역할은 완전히 다르다.
- RAM (Random Access Memory)
- 비유: "컴퓨터의 작업대"라고 생각하면 쉽다.
- 개념: CPU가 현재 실행 중인 프로그램이나 데이터를 일시적으로 저장하는 공간
- 특징: 전원이 꺼지면 저장된 내용이 모두 사라진다. 그래서 '휘발성 메모리'라고 부른다. (휘발성)
- 역할: 우리가 게임을 하거나 인터넷 창을 띄울 때, 그 데이터들은 모두 RAM에 올라와 있다. RAM 용량이 클수록 한 번에 여러 작업을 매끄럽게 할 수 있다.
- ROM (Read Only Memory)
- 비유: "지워지지 않는 기록판"과 같다.
- 개념: 컴퓨터를 켜는 데 필요한 아주 기본적인 정보(BIOS 등)를 영구적으로 저장하는 공간
- 특징: 전원이 꺼져도 내용이 지워지지 않는다. 이름 그대로 주로 '읽기만 가능'하고 수정이 어렵다. (비휘발성)
- 역할: 컴퓨터 전원을 눌렀을 때 하드웨어를 점검하고 운영체제를 불러오는 초기 지침서 역할을 한다.
- RAM vs. ROM
구분 RAM ROM 저장 성격 일시적 저장 (작업 중인 데이터) 영구적 저장 (필수 지침서) 휘발 여부 휘발성 (전원 OFF 시 삭제) 비휘발성 (전원 OFF 시 유지) 쓰기 가능 여부 자유롭게 읽고 쓰기 가능 주로 읽기만 가능 (수정 어려움) 비유 언제든 치우고 다시 쓰는 책상 내용을 바꿀 수 없는 인쇄된 책 주요 용도 실행 중인 앱, OS 구동 데이터 부팅 관련 시스템 정보(BIOS)
- RAM, ROM 둘 다 필요한 이유
컴퓨터가 켜지려면 ROM에 저장된 부팅 방법을 읽어야 하고,
일단 켜진 뒤에 우리가 작업을 하려면 데이터를 빠르게 주고받을 수 있는 RAM이라는 공간이 필요하기 때문이다.
🌟 HDD, SSD
- HDD (Hard Disk Drive)
- 개념: "회전하는 자기 디스크"를 사용하는 전통적인 저장장치
- 작동 원리: LP판 플레이어처럼, 자성을 띤 자기 디스크(플래터)를 빠르게 회전시키고 그 위를 헤드가 움직이며 데이터를 읽고 쓴다.
- 장점: 같은 가격 대비 저장 용량이 매우 커서, 대용량 데이터를 보관하기에 경제적이다.
- 단점: 물리적으로 디스크를 돌려야 하므로 속도에 한계가 있고, 소음이 발생하며 충격에 약하다.
- SSD (Solid State Drive)
- 개념: "반도체 메모리"를 사용하는 현대적인 저장장치
- 작동 원리: HDD처럼 움직이는 부품 없이, 전기적 신호로 반도체(플래시 메모리)에 데이터를 저장한다. USB 메모리의 아주 빠르고 거대한 버전이라고 생각하면 쉽다.
- 장점: HDD보다 압도적으로 빠르다. 부팅 속도나 프로그램 실행 속도가 눈에 띄게 빨라지며, 소음이 없고 충격에도 강하다.
- 단점: HDD에 비해 가격이 비싸고, 같은 가격일 때 저장할 수 있는 용량이 적다.
- HDD vs. SSD
구분 HDD SSD 핵심 부품 자기 디스크 (물리적 회전) 반도체 (전기적 신호) 속도 느림 (물리적 한계) 매우 빠름 내구성 충격에 약함 (고장 위험) 충격에 강함 소음/발열 소음과 진동, 발열 있음 소음 없음, 발열 적음 가격/용량 저렴함 (대용량 유리) 비쌈 (소용량 위주) 비유 책상에서 직접 책을 찾는 사서 머릿속에 내용을 다 외운 천재
- 데이터 처리 구조에서의 위치
컴퓨터는 보통 다음과 같은 구조로 데이터를 주고받는다.HDD와 SSD는 가장 아래 단계에서 데이터를 안전하게 지키는 역할을 한다.
최근에는 속도가 중요한 운영체제(OS)나 게임은 SSD에 설치하고, 사진이나 영상 같은 대용량 파일은 HDD에 보관하는 식으로 두 장치를 함께 사용하는 경우가 많다.
🌟 시스템 버스 (System Bus)
시스템 버스는 컴퓨터의 주요 구성 요소인 CPU, 기억장치, 입출력 장치를 물리적으로 연결하여 데이터와 신호가 오갈 수 있게 해주는 '공통 통로'이다.
쉽게 비유하자면, 도시의 각 건물(장치) 사이를 연결하는 '고속도로'와 같다. 이 고속도로는 용도에 따라 크게 세 가지 차선으로 나뉜다.
- 시스템 버스의 3가지 종류
- 데이터 버스(Data Bus)
- 역할: 실제 데이터나 명령어를 실어 나르는 통로이다.
- 특징: CPU가 메모리에서 데이터를 읽어오기도 하고, 연산 결과를 다시 메모리에 저장하기도 해야 하므로 양방향↔️으로 흐른다.
- 주소 버스(Address Bus)
- 역할: 데이터를 어디로 보낼지, 혹은 어디서 가져올지 '주소'를 지정하는 통로이다.
- 특징: 주소는 보통 CPU가 "이 주소에 있는 데이터를 줘!"라고 명령하며 지정하기 때문에, CPU에서 다른 장치로만 향하는 단방향➡️이다.
- 제어 버스(Control Bus)
- 역할: "지금 읽기 작업을 할 거야", "쓰기 작업을 할 거야" 같은 제어 신호를 전달한다.
- 특징: 읽기/쓰기 신호뿐만 아니라 장치들의 상태 보고(인터럽트 등)도 주고받아야 하므로 양방향↔️으로 작동한다.
- 시스템 버스의 작동 원리 (예시)
컴퓨터가 데이터를 처리하는 과정(READ → PROCESS → WRITE)에서 버스는 다음과 같이 움직인다.
① 주소 지정: CPU가 주소 버스를 통해 "메모리 100번지"를 지목한다.
② 제어 신호: 제어 버스를 통해 "거기 있는 데이터를 읽겠다(READ)"는 신호를 보낸다.
③ 데이터 이동: 메모리 100번지에 있던 데이터가 데이터 버스를 타고 CPU로 들어온다.- "64비트 컴퓨터"의 의미
우리가 흔히 말하는 "64비트 컴퓨터"는 이 시스템 버스의 폭과 관련이 있다.
운영체제가 64비트라면, CPU가 한 번에 RAM으로부터 데이터를 64비트씩 읽어올 수 있다는 뜻이다.
도로가 넓을수록 한 번에 많은 차가 지나갈 수 있는 것과 같은 원리이다.
🌟 보조기억장치의 느린 속도?
- 얼마나 느린걸까?
- 주기억장치(RAM): 데이터를 찾는 데 약 수십 나노초(ns)가 걸린다. (우리가 눈을 한 번 깜빡이는 것보다 수백만 배 빠르다.)
- 보조기억장치(HDD/SDD)
• SSD: 약 수십수백 마이크로초(μs) (RAM보다 수백수천 배 느림)
• HDD: 약 수 밀리초(ms) (RAM보다 수십만 배 느림)- 비유: RAM에서 데이터를 가져오는 게 '내 책상 위에서 펜을 집는 것'이라면, HDD에서 가져오는 건 '옆 동네 도서관에 가서 책을 빌려오는 것'만큼의 차이가 난다.
- 그런데 사용자는 왜 느리다는 걸 체감을 못할까?
- RAM이 방패 역할을 해주기 때문이다.
컴퓨터는 보조기억장치에서 데이터를 직접 읽어 처리하지 않는다. 반드시 보조기억장치에 있는 데이터를 RAM으로 먼저 옮겨놓고, CPU는 오직 RAM하고만 대화한다.
우리가 프로그램을 사용하는 동안에는 이미 필요한 데이터가 RAM에 다 올라와 있기 때문에, 보조기억장치의 느린 속도를 느낄 기회가 없는 것이다.- 64비트 전송 등 효율적인 통로 설계
운영체제와 시스템 버스가 데이터를 한 번에 대량으로(예: 64비트씩) 빠르게 실어 나르기 때문에, 장치 간의 속도 차이에서 오는 병목 현상을 최대한 줄여준다.- SSD의 보급
과거 HDD 시절에는 컴퓨터를 켤 때(부팅) 1~2분씩 걸리는 걸 누구나 체감했다.
하지만 최근에는 RAM과의 속도 차이를 획기적으로 줄인 SSD를 쓰기 때문에, 사용자가 "느리다"고 느낄 틈도 없이 데이터가 RAM으로 옮겨진다.- 느리다는 걸 체감하게 되는 상황
- 로딩 화면: 게임을 실행할 때 나오는 'Loading...' 화면이 바로 보조기억장치(느림)에 있는 데이터를 주기억장치(빠름)로 옮기는 시간이다. 이 시간이 길수록 보조기억장치가 느린 것이다.
- 부팅 속도: 전원을 켜고 윈도우 바탕화면이 나올 때까지의 시간도 보조기억장치의 성능에 좌우된다.
- 대용량 복사: 10GB짜리 영화 파일을 옮길 때 걸리는 시간도 보조기억장치의 속도 한계 때문이다.
용도에 따라 데이터 버스, 주소 버스, 제어 버스로 나누어진다.
기억장치 주소(Memory Address): 컴퓨터의 기억장치(주로 RAM) 내부에 있는 수많은 저장 칸들에 붙여진 고유한 번호
🌟 제어 버스가 양방향인 이유
제어 버스가 양방향인 이유는 단순히 '읽기'와 '쓰기'라는 두 가지 일을 하기 때문이 아니라, "명령을 내리는 쪽(CPU)"과 "상태를 보고하는 쪽(기억장치/입출력장치)" 사이의 대화가 필요하기 때문이다.
이해하기 쉽게 '무전기 대화'에 비유해서 설명해 본다.
- 왜 양방향 대화가 필요할까?
제어 버스는 단순히 "해라!"라고 명령만 내리는 통로가 아니다. 명령을 받은 장치가 "알겠다"거나 "잠시만 기다려달라"고 대답을 해야 한다.
이렇게 신호가 양쪽으로↔️ 오가야 하기 때문에 제어 버스는 양방향이 될 수밖에 없다.
- CPU ➡️ 장치 (명령): "지금부터 데이터를 읽을(Read) 테니 준비해!" 혹은 "데이터를 쓸(Write) 테니 저장해!"
- CPU ⬅️ 장치 (응답/상태): "준비됐어요!", "지금 다른 일을 하느라 바빠요(Wait)", "작업이 끝났어요!(Interrupt)"
- '읽기'와 '쓰기' 동작에서의 양방향성
- 읽기(Read) 동작 시
- CPU가 제어 버스로 "읽기 신호"를 보낸다. (CPU ➡️ 메모리)
- 메모리가 데이터를 준비한 뒤 "준비 완료" 신호를 보낸다. (CPU ⬅️ 메모리)
- 쓰기(Write) 동작 시
- CPU가 제어 버스로 "쓰기 신호"를 보낸다. (CPU ➡️ 메모리)
- 메모리가 저장을 마친 후 "저장 완료" 신호를 보낸다. (CPU ⬅️ 메모리)
- 제어 버스의 주요 신호들
- 인터럽트 요청 및 승인: 입출력 장치가 "저 다 했어요!"라고 요청(CPU ⬅️ 장치)하면, CPU가 "그래, 확인했어"라고 승인(CPU ➡️ 장치)한다.
- 버스 요청 및 승인: 다른 장치가 "저도 이 통로 좀 써도 될까요?"라고 요청(CPU ⬅️ 장치)하면, CPU가 "지금은 안 돼" 혹은 "그래 써라"라고 답(CPU ➡️ 장치)해준다.