[ 혼자 공부하는 컴퓨터구조 + 운영체제 ] Chapter 01. 컴퓨터 구조 시작하기
01-1. 컴퓨터 구조를 알아야 하는 이유
(1) 문제 해결
같은 코드를 작성했는데도 어떤 컴퓨터에서는 코드가 제대로 작동하고, 어떤 컴퓨터에서는 제대로 작동하지 않는 상황이 빈번하게 발생한다.
컴퓨터 구조를 이해하고 있다면 문제 상황을 빠르게 진단할 수 있고, 문제 해결의 실마리를 다양하게 찾을 수 있다.
(2) 성능, 용량, 비용
개발한 프로그램이 어떤 환경에서 어떻게 작동하는지 잘 이해하고 있어야 하며, 프로그램을 위한 최적의 컴퓨터 환경을 스스로 판단할 수 있어야 한다.
컴퓨터 구조를 이해하면 입력과 출력에만 집중하는 개발을 넘어, 문법만으로는 알기 어려운 성능, 용량, 비용까지 고려하며 개발할 수 있다.
01-2. 컴퓨터 구조의 큰 그림
컴퓨터 구조 지식은 크게 두 가지로, '컴퓨터가 이해하는 정보'와 '컴퓨터의 네 가지 핵심 부품'이다.
(1) 컴퓨터가 이해하는 정보
컴퓨터는 0과 1로 표현된 정보만을 이해하는데, 크게 데이터와 명령어 두 종류가 있다.
데이터(data): 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보
명령어(instruction): 데이터를 움직이고 컴퓨터를 작동시키는 정보
Ex ) '1', '2' → 데이터 / '더하라, 1과 2를' → 명령어
컴퓨터를 실질적으로 작동시키는 것은 명령어이기 때문에, 컴퓨터 구조를 학습하는 데 있어 명령어가 데이터보다 더 중요한 개념이라고 할 수 있다.
(2) 컴퓨터의 4가지 핵심 부품
컴퓨터를 이루고 있는 핵심 부품은 중앙처리장치(CPU), 주기억장치(메모리), 보조기억장치, 입출력장치이다.
※ 주기억장치는 크게 RAM(Random Access Memory)와 ROM(Read Only Memory)가 있는데, 메모리라는 용어는 보통 RAM을 지칭한다.
메모리
: 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품
- 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 한다.
- 메모리에는 저장된 값에 빠르고 효율적으로 접근하기 위해 주소(address)라는 개념이 사용되고, 주소로 메모리 내 원하는 위치에 접근할 수 있다.
CPU
: 메모리에 저장된 명령어를 읽어들이고, 읽어 들인 명령어를 해석하고, 실행하는 부품
CPU 내부에는 ALU(산술논리연산장치), 레지스터와 여러 제어장치가 있다.
ALU
- 컴퓨터 내부에서의 대부분의 계산을 수행한다.
레지스터
- CPU 내부의 작은 임시 저장장치로, 프로그램을 실행하는 데 필요한 값들을 임시로 저장한다.
- CPU 안에는 여러 개의 레지스터가 존재하며, 각기 다른 이름과 역할을 가지고 있다.
제어장치
- 제어 신호라는 전기 신호를 내보내고 명령어를 해석하는 장치
제어 신호: 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호
- CPU가 메모리에 저장된 값을 읽고 싶을 땐 메모리를 향해 '메모리 읽기'라는 제어 신호를 보낸다.
- CPU가 메모리에 어떤 값을 저장하고 싶을 땐 메모리를 향해 '메모리 쓰기'라는 제어 신호를 보낸다.
보조기억장치
: 전원이 꺼져도 보관될 프로그램을 저장하는 부품
Ex ) 하드 디스크, SSD, USB, 메모리, DVD, CD-ROM
메모리의 단점
- 가격이 비싸 저장 용량이 적다.
- 전원이 꺼지면 저장된 내용을 잃는다.
→ 메모리보다 크기가 크고 전원이 꺼져도 저장된 내용을 잃지 않는 메모리를 보조할 저장 장치가 필요
쉽게 말해, 메모리가 현재 '실행되는' 프로그램을 저장한다면, 보조기억장치는 '보관할' 프로그램을 저장한다.
입출력장치
: 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치
Ex ) 마이크, 스피커, 프린터, 마우스, 키보드
※ 보조기억장치와 입출력장치를 '컴퓨터 주변에 붙어있는 장치'라는 의미에서 주변 장치라 통칭하기도 하지만, 보조기억장치는 일반적인 입출력장치에 비해 메모리를 보조한다는 특별한 기능을 수행하는 입출력장치이다.
메인보드(마더보드)
: 여러 컴퓨터 부품을 연결
메인보드에는 여러 컴퓨터 부품을 부착할 수 있는 슬롯과 여러 단자가 있다.
시스템 버스
: 컴퓨터의 네 가지 핵심 부품이 서로 정보를 주고받는 통로
버스: 메인보드에 연결된 부품들이 서로 정보를 주고받을 수 있게 하는 통로
시스템 버스는 주소 버스, 데이터 버스, 제어 버스로 구성되어 있다.
주소 버스: 주소를 주고받는 통로
데이터 버스: 명령과 데이터를 주고받는 통로
제어 버스: 제어 신호를 주고받는 통로
- CPU가 메모리를 읽을 때
→ 제어 버스로 '메모리 읽기' 제어 신호를 내보내고, 주소 버스로 읽고자 하는 주소를 내보내면, 메모리는 데이터 버스로 CPU가 요청한 주소에 있는 내용을 보낸다.
- 메모리에 값을 저장할 때
→ CPU가 데이터 버스를 통해 메모리에 저장할 값을, 주소 버스를 통해 저장할 주소를, 제어 버스를 통해 '메모리 쓰기' 제어 신호를 보낸다.