OS - Introduction to Computer Hardware Architecture
1. 컴퓨터 하드웨어의 구성
컴퓨터 시스템은 데이터를 처리하는 물리적인 장치(하드웨어, Hardware)와 컴퓨터에게 작업을 수행하도록 명령하는 프로그램(소프트웨어, Software)로 구성됩니다.
1.1 컴퓨터 시스템의 개요
컴퓨터 시스템은 다음과 같은 두 가지 주요 요소로 나뉩니다.
- 하드웨어(Hardware)
- 데이터를 처리하는 물리적인 기계 장치
- 중앙처리장치(CPU), 메모리(RAM, 저장장치), 입력 및 출력 장치 등으로 구성
- 소프트웨어(Software)
- 하드웨어가 수행할 작업을 지시하는 명령어 집합
- 운영체제(OS) 및 응용 프로그램으로 구분됨
이 두 요소가 서로 협력하여 사용자가 원하는 작업을 수행합니다.
1.2 컴퓨터 하드웨어의 주요 구성 요소
컴퓨터 하드웨어는 프로세서(CPU), 메모리(기억장치), 주변 장치의 세 가지 주요 요소로 구성되며, 이들은 시스템 버스(System Bus)를 통해 서로 연결됩니다.
이미지)
1) 프로세서 (CPU, 중앙처리장치)
- 컴퓨터의 두뇌 역할을 하며, 연산 및 명령어 처리를 담당
- 주요 구성 요소:
- 산술논리연산장치(ALU): 연산 및 논리 연산 수행
- 제어장치(CU): 명령어를 해석하고 실행 흐름을 제어
- 레지스터(Register): 빠른 데이터 저장을 위한 임시 메모리
2) 메모리 (기억장치)
- 데이터를 저장하는 역할을 담당
- 주요 유형:
- 주기억장치(RAM, Random Access Memory): 실행 중인 프로그램과 데이터를 임시 저장
- 보조기억장치(SSD, HDD 등): 데이터를 영구적으로 저장
- 캐시 메모리(Cache Memory): CPU가 자주 사용하는 데이터를 빠르게 접근하기 위한 고속 메모리
3) 주변 장치
- 사용자와 컴퓨터 간의 입력 및 출력을 담당하는 장치
- 주요 유형:
- 입력 장치(Input Devices): 키보드, 마우스, 터치패드 등
- 출력 장치(Output Devices): 모니터, 프린터, 스피커 등
- 입출력 장치(I/O Devices): USB 저장 장치, 네트워크 카드 등
1.3 시스템 버스 (System Bus)
하드웨어 구성 요소 간의 데이터 전송을 담당하는 통로로, 컴퓨터 내 모든 장치를 연결하는 역할을 합니다.
- 데이터 버스(Data Bus): CPU와 메모리 간의 데이터 이동
- 주소 버스(Address Bus): 메모리 주소 지정
- 제어 버스(Control Bus): 제어 신호 전달
2. 프로세스 (Process)
2.1 프로세서 (CPU, 중앙처리장치)
컴퓨터의 두뇌 역할을 하는 프로세서(CPU, Central Processing Unit)는 컴퓨터의 모든 장치의 동작을 제어하고, 연산을 수행하는 핵심적인 하드웨어 구성 요소입니다.
운영체제(OS)와 가장 밀접하게 관련된 부분으로, 프로그램을 실행하고, 메모리와 입출력 장치를 관리하며, 사용자와 시스템 간의 작업을 조율하는 역할을 합니다.
2.2 프로세서의 레지스터 (Registers)
레지스터(Register)는 CPU 내부에 존재하는 초고속 임시 저장 장치로, 프로그램 실행 속도를 높이기 위해 사용됩니다. CPU가 데이터를 저장하고, 처리하는 동안 필요한 정보를 빠르게 접근할 수 있도록 도와줍니다.
레지스터의 분류
레지스터는 크게 사용자 가시 레지스터(User-Visible Register)와 사용자 불가지 레지스터(User-Non-Visible Register)로 나눌 수 있습니다.
2.2.1 사용자 가시 레지스터 (User-Visible Register)
사용자가 직접 접근할 수 있는 레지스터로, 주로 데이터 처리와 주소 계산에 사용됩니다.
| 레지스터 종류 | 설명 |
|---|---|
| 데이터 레지스터 | 함수 연산에 필요한 데이터(숫자, 문자 등)를 저장 |
| 주소 레지스터 | 유효 주소 계산 및 메모리 접근에 필요한 주소 저장 |
| 기준 주소 레지스터 | 프로그램 실행에 필요한 기준 주소값을 저장 |
| 인덱스 레지스터 | 유효 주소 계산을 위한 주소 정보 저장 |
| 스택 포인터 레지스터 | 프로세서 스택을 관리하는 레지스터 |
| 상태 레지스터 | CPU의 현재 상태 정보를 저장 |
사용자 가시 레지스터 상세 설명
1) 데이터 레지스터 (Data Register)
- 프로그램이 수행하는 산술 연산이나 논리 연산을 수행하기 위해 데이터를 저장하는 레지스터입니다.
- 덧셈, 곱셈, 비교 연산 등의 연산 수행에 필요한 데이터를 임시 저장합니다.
- 연산 결과에 따라 플래그 값이 저장됩니다.
✔ 플래그 값(Flag Value)
CPU가 연산을 수행한 후 결과를 나타내는 값입니다. 예를 들어, 연산 결과가 0인지, 음수인지, 오버플로우가 발생했는지 등의 정보를 포함합니다.
2) 주소 레지스터 (Address Register)
- 메모리의 특정 위치(주소)를 저장하는 레지스터입니다.
- 프로세서가 특정 데이터를 불러오거나 저장할 위치를 결정하는 역할을 합니다.
- 주소 레지스터에 저장된 값을 이용하여 산술 연산도 수행할 수 있습니다.
3) 기준 주소 레지스터 (Base Register)
- 하나의 프로그램이나 특정 정보 그룹을 실행할 때 기준 주소를 저장하는 레지스터입니다.
- 일반적으로 페이지(Page)나 세그먼트(Segment)와 같은 블록화된 메모리 구조를 참조할 때 사용됩니다.
✔ 페이지(Page)와 세그먼트(Segment)
- 페이지(Page): 운영체제가 메모리를 관리하기 위해 일정한 크기의 블록으로 나누는 방식
- 세그먼트(Segment): 크기가 가변적인 논리적 블록으로, 프로그램의 실행 단위를 나타냄
4) 인덱스 레지스터 (Index Register)
- 메모리에서 특정 데이터를 참조할 때 유효 주소(Effective Address, EA)를 계산하는 데 사용됩니다.
- 배열(Array)과 같은 구조적인 데이터 접근을 위해 자주 사용됩니다.
5) 스택 포인터 레지스터 (Stack Pointer, SP)
- 프로세서 스택(Stack)을 관리하는 레지스터입니다.
- 함수 호출과 반환 시, 반환 주소(Return Address)와 프로세서 상태 정보를 저장합니다.
✔ 데이터 스택 포인터 (Data Stack Pointer) & 큐 포인터 (Queue Pointer)
- 데이터 스택 포인터: 후입선출(LIFO, Last In First Out) 방식으로 데이터 저장
- 큐 포인터: 선입선출(FIFO, First In First Out) 방식으로 데이터 저장
✔ 반환 주소 (Return Address)
- 함수(서브루틴) 실행 후 돌아올 원래의 명령어 주소를 저장하는 값입니다.
✔ 프로세서 상태 정보 (Processor Status Information)
- 현재 실행 중인 프로그램의 상태(Context) 정보를 저장하여, 프로세스가 다른 작업으로 전환될 때 원래 상태로 복구할 수 있도록 도와줍니다.
✔ 서브루틴 (Subroutine)
- 프로그램 내에서 특정 기능을 수행하는 작은 프로그램 단위로, 필요할 때마다 호출하여 실행할 수 있습니다.
2.2.2 사용자 불가지 레지스터 (User-Non-Visible Register)
사용자가 직접 접근할 수 없으며, CPU 내부에서 명령어 실행 및 데이터 흐름을 관리하는 역할을 수행합니다.
| 레지스터 종류 | 설명 |
|---|---|
| 프로그램 카운터 | 다음에 실행할 명령어의 주소를 보관 |
| 명령어 레지스터 | 현재 실행 중인 명령어를 저장 |
| 누산기(ACC) | 연산 결과를 저장하는 레지스터 |
| 메모리 주소 레지스터 | 메모리에서 데이터를 가져올 주소 저장 |
| 메모리 버퍼 레지스터 | 실제 메모리에서 읽거나 쓸 데이터를 저장 |
사용자 불가지 레지스터 상세 설명
1) 프로그램 카운터 (Program Counter, PC)
- 다음 실행할 명령어의 메모리 주소를 보관하는 레지스터입니다.
- 프로그램 실행 중 자동으로 증가(Increment)하며 다음 명령어를 가리킵니다.
- 분기 명령어(Branch Instruction)가 실행되면 목적 주소로 업데이트됩니다.
✔ 계수기 (Counter)
- 프로그램 카운터는 계수기처럼 동작하여 실행할 명령어의 위치를 자동으로 변경합니다.
✔ 분기 명령어 (Branch Instruction)
- 특정 조건에 따라 프로그램 흐름을 변경하는 명령어입니다.
✔ 목적 주소 (Target Address)
- 분기 명령어가 실행될 때 이동할 새로운 명령어의 메모리 주소입니다.
2) 명령어 레지스터 (Instruction Register, IR)
- 현재 실행 중인 명령어를 저장하는 레지스터입니다.
- CPU가 명령어를 해석하고 실행할 때 필요합니다.
3) 누산기 (Accumulator, ACC)
- 데이터를 일시적으로 저장하는 연산 전용 레지스터입니다.
- 연산 결과를 저장하며, 다음 연산에 사용할 수도 있습니다.
4) 메모리 주소 레지스터 (Memory Address Register, MAR)
- CPU가 접근하려는 데이터의 주소를 보관하는 레지스터입니다.
- 메모리에서 특정 데이터를 읽거나 저장할 때 사용됩니다.
5) 메모리 버퍼 레지스터 (Memory Buffer Register, MBR)
- CPU가 메모리에서 가져온 데이터 또는 메모리에 저장할 데이터를 임시로 보관하는 레지스터입니다.
- 메모리 데이터 레지스터(MDR, Memory Data Register)라고도 합니다.
2.3 요약
프로세서 내부에는 다양한 레지스터가 존재하며, 각각의 역할이 다릅니다.
- 사용자 가시 레지스터: 데이터 저장 및 주소 계산에 사용됨
- 사용자 불가지 레지스터: CPU 내부에서 명령어 실행 및 데이터 흐름 제어
레지스터는 프로그램 실행 속도를 높이는 핵심 요소이며, CPU의 성능을 결정하는 중요한 하드웨어 구성 요소 중 하나입니다.
2.4 예시: 프로그램 실행 과정에서 프로세스의 동작
컴퓨터에서 프로그램을 실행할 때, CPU는 여러 단계를 거쳐 명령어를 처리합니다. 이를 쉽게 이해하기 위해, 우리가 텍스트 편집기(예: 메모장)을 실행한다고 가정해보겠습니다.
이 과정에서 CPU 내부 레지스터(Register)가 어떻게 활용되는지 자세히 살펴보겠습니다.
1) 프로그램 실행 요청 & 프로세스 생성
사용자가 메모장(Notepad)을 실행하면, 운영체제(OS)는 실행 파일을 보조 기억 장치(HDD/SSD)에서 RAM으로 로드하고, 프로그램 실행을 위한 프로세스를 생성합니다.
✅ 사용되는 레지스터
- 기준 주소 레지스터: 실행할 프로그램이 저장된 기준 주소를 저장
- 프로그램 카운터(PC): 첫 번째 명령어의 주소를 설정하여 CPU가 실행 준비
2) 명령어 인출 (Fetch)
CPU는 프로그램의 첫 번째 명령어를 메모리에서 가져옵니다.
✅ 사용되는 레지스터
- 프로그램 카운터(PC): 현재 실행할 명령어의 주소를 저장
- 메모리 주소 레지스터(MAR): PC에서 가져온 주소를 사용해 메모리에 접근
- 메모리 버퍼 레지스터(MBR): 메모리에서 가져온 명령어를 임시 저장
- 명령어 레지스터(IR): MBR에서 가져온 명령어를 저장하여 실행 준비
💡 예시:
CPU는 메모장에서 “새 파일 만들기” 명령어를 실행하기 위해 해당 명령어를 메모리에서 읽어옴.
3) 명령어 해석 (Decode)
CPU는 가져온 명령어를 해석하여 어떤 연산을 수행할지 결정합니다.
✅ 사용되는 레지스터
- 명령어 레지스터(IR): 현재 실행할 명령어 저장
- 제어 유닛(CU): 명령어를 해석하고, 필요한 레지스터를 활성화
- 상태 레지스터(Flags): 명령어의 상태(연산 결과의 상태)를 표시
💡 예시:
“새 파일 만들기” 명령어를 해석하여 새 문서를 생성하는 동작을 준비.
4) 주소 연산 & 데이터 연산 (Execute)
CPU는 명령어 실행을 위해 필요한 주소 연산과 데이터 연산을 수행합니다.
✅ 사용되는 레지스터
- 데이터 레지스터(DR): 연산에 필요한 데이터를 저장
- 주소 레지스터(AR): 필요한 메모리 주소를 계산
- 기준 주소 레지스터: 특정 프로그램 내에서 참조하는 데이터의 기준 주소 보관
- 인덱스 레지스터: 유효 주소 계산을 보조
- 스택 포인터 레지스터(SP): 현재 스택의 최상위 주소를 저장
💡 예시:
CPU는 “새 파일 만들기” 명령을 실행하기 위해 새 문서를 저장할 메모리 주소를 계산하고, 주소 레지스터를 사용하여 적절한 메모리 위치를 찾음.
5) 데이터 저장 & 결과 반환 (Write Back)
CPU는 명령어 실행 결과를 저장하거나 출력 장치(모니터 등)로 보냅니다.
✅ 사용되는 레지스터
- 메모리 주소 레지스터(MAR): 결과를 저장할 메모리 위치 보관
- 메모리 버퍼 레지스터(MBR): 연산 결과를 임시 저장
- 누산기(ACC): 연산 결과 저장
💡 예시:
새 문서를 만들고, 사용자가 입력한 내용을 RAM에 임시 저장.
6) 다음 명령어로 이동
CPU는 다음 명령어의 주소를 설정하고 실행을 계속합니다.
✅ 사용되는 레지스터
- 프로그램 카운터(PC): 다음 명령어의 주소를 가리키도록 증가
- 플래그 레지스터: 연산 결과에 따라 상태 갱신
💡 예시:
사용자가 문서에 내용을 입력하면, CPU는 다음 명령어(키 입력 처리)를 실행하도록 PC를 갱신.
7) 프로그램 종료 및 리소스 반환
사용자가 메모장을 닫으면, 운영체제는 프로세스를 종료하고, 사용하던 메모리 및 리소스를 반환합니다.
✅ 사용되는 레지스터
- 스택 포인터 레지스터(SP): 프로세서 스택을 초기화
- 프로세서 상태 정보 레지스터: 프로그램의 종료 상태를 기록
💡 예시:
사용자가 “저장 안 함”을 선택하고 메모장을 닫으면, CPU는 사용하던 모든 레지스터를 초기화하고 프로세스를 종료.
2.5 요약: 프로그램 실행 시 레지스터의 역할
| 단계 | 사용 레지스터 | 역할 |
|---|---|---|
| 1) Fetch (명령어 인출) | PC, MAR, MBR, IR | 메모리에서 명령어 가져오기 |
| 2) Decode (명령어 해석) | IR, CU, 상태 레지스터(Flags) | 명령어를 분석하여 실행 준비 |
| 3) Execute (주소/데이터 연산) | DR, AR, 기준 주소 레지스터, 인덱스 레지스터, SP | 필요한 데이터 연산 수행 |
| 4) Write Back (결과 저장) | MAR, MBR, ACC | 연산 결과를 메모리에 저장 |
| 5) Next (다음 명령어 실행) | PC, 플래그 레지스터 | 다음 명령어를 실행할 준비 |
| 6) Terminate (프로세스 종료) | SP, 프로세서 상태 정보 레지스터 | 프로그램 종료 및 리소스 반환 |
2.6 결론
이제 우리는 CPU가 프로그램을 실행할 때 모든 레지스터가 어떻게 활용되는지를 살펴보았습니다.
CPU는 프로그램 실행을 위해 명령어를 가져오고(Fetch), 해석하고(Decode), 실행하고(Execute), 결과를 저장(Write Back)하는 과정을 반복합니다.
3. 메모리 (Memory)
컴퓨터 시스템에서 메모리는 데이터를 저장하고 처리하는 데 중요한 역할을 합니다.
메모리는 계층적으로 구성되어 있으며, 각 계층은 속도, 비용, 용량, 접근 시간 등의 특성을 고려하여 설계됩니다.
3.1 메모리 계층 구조
배경
1950~1960년대에는 메인 메모리(Main Memory)의 가격이 매우 비쌌기 때문에, 보다 효율적인 메모리 사용 방법이 필요했습니다.
이에 따라, 메모리를 여러 계층으로 나누어 속도와 비용을 상호 보완하는 메모리 계층 구조(memory hierarchy)가 등장했습니다.
메모리 계층 구조의 특징
- 속도가 빠를수록 용량이 작고 가격이 비쌈
- 속도가 느릴수록 용량이 크고 가격이 저렴함
- 프로세서와 메인 메모리의 속도 차이를 줄이기 위해 캐시(Cache)를 사용
- 보조기억장치는 속도가 느리지만 데이터를 장기적으로 저장할 수 있음
3.2 레지스터 (Register)
- 프로세서 내부에 있는 가장 빠른 메모리
- CPU가 직접 접근하여 연산을 수행할 데이터를 저장
- 용량이 작지만, 연산 속도를 극대화하기 위해 사용
3.3 메인 메모리 (Main Memory)
- 프로세서 외부에 있는 기억 장치로, 프로그램 실행 중 필요한 데이터 저장
- 주기억장치(Primary Storage), 1차 기억장치(Primary Memory)라고도 함
- 저장 밀도가 높고 가격이 저렴한 DRAM(Dynamic RAM)을 주로 사용
- 다수의 메모리 셀로 구성되며, 각 셀은 비트(Bit) 단위로 데이터를 저장
메모리 셀의 구조
- 각 셀은 K비트 크기를 가짐
- K비트일 때, 해당 셀에는 $2^K$ 개의 값을 저장 가능
- 메모리의 각 셀은 주소(Address)를 통해 참조됨
메모리 주소와 주소 범위
- 셀의 주소는 n비트로 표현되며, 0 ~ $2^{(n-1)}$까지 주소 지정 가능
- 메인 메모리는 프로세서와 보조기억장치 사이에 위치하여 데이터 입출력을 담당
- 디스크 I/O 병목 현상을 줄이는 역할 수행
메모리 속도
- 메모리 접근 시간 (Memory Access Time): 데이터를 읽거나 쓰기 위해 필요한 시간
- 메모리 사이클 시간 (Memory Cycle Time): 연속된 두 개의 명령을 수행할 때 필요한 시간
- 메모리 접근 시간 vs. 메모리 사이클 시간
- 메모리 접근 시간은 메모리 사이클 시간의 일부를 차지합니다.
- 전통적인 DRAM의 경우, 메모리 접근 시간은 전체 메모리 사이클 시간의 약 70~90%를 차지합니다.
- 최신 SDRAM 및 DDR 메모리에서는 병렬 처리 기술이 발전하면서 메모리 접근 시간이 차지하는 비율이 낮아지는 경향이 있습니다.
DRAM과 SRAM의 차이
메모리 종류 메모리 접근 시간 메모리 사이클 시간 비율 DRAM (Dynamic RAM) 70~90ns 100ns 70~90% SDRAM (Synchronous DRAM) 20~30ns 40~50ns 50~70% SRAM (Static RAM) 1~5ns 5~10ns 10~50%
3.4 캐시 메모리 (Cache Memory)
- 프로세서 내부 또는 외부에 존재하는 고속 버퍼
- 메인 메모리와 프로세서의 속도 차이를 보완하기 위해 사용
- 자주 사용되는 데이터를 미리 저장하여 속도 향상
캐시의 동작 방식
- 프로세서가 데이터를 요청하면, 캐시에서 먼저 데이터를 찾음
- 데이터가 캐시에 있으면 (Cache Hit): 바로 사용
- 데이터가 없으면 (Cache Miss): 메인 메모리에서 데이터를 가져와 캐시에 저장
캐시 블록 (Cache Block)
- 메모리의 데이터를 블록 단위로 캐시에 저장
- 일반적으로 8~64바이트 크기의 블록으로 구성
캐시의 성능
- 캐시 적중(Cache Hit): 프로세서가 찾는 데이터가 캐시에 있는 경우
- 캐시 실패(Cache Miss): 프로세서가 찾는 데이터가 캐시에 없는 경우
캐시가 효과적인 이유
캐시는 프로그램이 메모리를 참조하는 방식 때문에 성능이 향상됨
- 공간적 지역성 (Spatial Locality): 인접한 메모리를 다시 참조하는 특성
- 시간적 지역성 (Temporal Locality): 최근에 참조한 메모리를 다시 참조하는 특성
3.5 보조기억장치 (Secondary Storage)
- 프로세서와 메인 메모리 외부에 위치한 저장 장치
- 장기적인 데이터 저장을 위한 하드웨어
- 주기억장치보다 속도는 느리지만, 저장 용량이 크고 데이터 보존 가능
- 2차 기억장치(Secondary Memory), 외부 기억장치(External Storage)라고도 함
보조기억장치의 종류
- 자기 디스크 (Magnetic Disk): HDD (Hard Disk Drive)
- 광디스크 (Optical Disk): CD, DVD
- 자기테이프 (Magnetic Tape): 대용량 데이터 백업
3.6 요약: 메모리 계층과 속성 비교
| 메모리 계층 | 속도 | 용량 | 가격 | 주요 역할 |
|---|---|---|---|---|
| 레지스터 | 가장 빠름 | 매우 작음 | 가장 비쌈 | CPU 연산에 필요한 데이터 저장 |
| 캐시 메모리 | 매우 빠름 | 작음 | 비쌈 | 프로세서와 메인 메모리의 속도 차이 보완 |
| 메인 메모리 | 빠름 | 중간 | 보통 | 실행 중인 프로그램과 데이터 저장 |
| 보조기억장치 | 느림 | 큼 | 저렴 | 프로그램과 데이터를 장기 저장 |
3.7 결론
- 컴퓨터의 메모리는 속도와 비용을 고려하여 계층적으로 구성
- 프로세서에서 사용하는 레지스터 → 캐시 → 메인 메모리 → 보조기억장치 순으로 속도가 느려짐
- 캐시는 메인 메모리와 프로세서의 속도 차이를 줄이는 중요한 역할 수행
- 메모리의 효율적인 관리가 컴퓨터의 전체 성능에 큰 영향을 미침
4. 시스템 버스 (System Bus)
시스템 버스는 컴퓨터 하드웨어를 물리적으로 연결하여 서로 데이터를 주고받을 수 있는 통로입니다.
컴퓨터 내부에서 다양한 신호를 전달하는 역할을 하며, 대표적으로 다음과 같은 신호가 시스템 버스를 통해 이동합니다.
- 데이터 입출력 신호
- 프로세서 상태 신호
- 인터럽트 요구와 허가 신호
- 클록(clock) 신호
기능에 따라 시스템 버스는 데이터 버스, 주소 버스, 제어 버스로 구분됩니다.
4.1 데이터 버스 (Data Bus)
데이터 버스는 프로세서, 메인 메모리, 주변장치 사이에서 데이터를 전송하는 역할을 합니다.
- 데이터 버스를 구성하는 배선 수는 프로세서가 한 번에 전송할 수 있는 비트 수를 결정합니다.
- 이 한 번에 전송할 수 있는 데이터의 크기를 “워드(Word)”라고 합니다.
관련 용어 설명
- 배선 수 (Bus Width):
시스템 버스의 물리적 크기를 나타내며, 클럭 사이클마다 전송할 수 있는 비트 수를 의미합니다. 예를 들어, 32비트 데이터 버스는 한 번에 32비트 데이터 전송이 가능합니다. - 워드 (Word):
프로세서가 한 번에 처리할 수 있는 데이터 단위를 의미합니다. 32비트 프로세서는 32비트(4바이트) 크기의 데이터를 한 번에 처리할 수 있습니다.
4.2 주소 버스 (Address Bus)
주소 버스는 프로세서가 시스템의 구성 요소를 식별하는 주소 정보를 전송하는 역할을 합니다.
- 주소 버스를 구성하는 배선 수는 프로세서가 접근할 수 있는 메모리의 최대 용량을 결정합니다.
- 예를 들어, 32비트 주소 버스를 사용하면 최대 (2^{32})개의 메모리 주소에 접근할 수 있습니다.
- (2^{32} = 4,294,967,296) (약 4GB)
- 64비트 주소 버스를 사용하면 최대 (2^{64})개의 메모리에 접근 가능하여 이론적으로 16EB(엑사바이트)의 메모리 사용 가능
4.3 제어 버스 (Control Bus)
제어 버스는 프로세서가 시스템의 구성 요소를 제어하는 데 사용되는 신호를 전송합니다.
- 제어 신호를 통해 연산 장치의 연산 종류와 메모리의 읽기/쓰기 동작을 결정합니다.
- 예를 들어, 프로세서가 메모리에서 데이터를 읽을지 또는 메모리에 데이터를 쓸지를 결정하는 제어 신호가 포함됩니다.
4.4 시스템 버스 정리 (표)
| 버스 종류 | 설명 | 관련 정보 |
|---|---|---|
| 데이터 버스 | 프로세서, 메모리, 주변장치 간의 데이터 전송 | 한 번에 전송 가능한 데이터 크기 = 워드(Word) |
| 주소 버스 | 프로세서가 접근할 수 있는 메모리 주소 전송 | 주소 버스 크기(비트 수) = 최대 메모리 크기 결정 |
| 제어 버스 | 시스템의 구성 요소를 제어하는 신호 전송 | 메모리 읽기/쓰기, 연산 동작 결정 |
4.5 시스템 버스의 동작 예시
프로세서가 메모리에서 데이터를 읽는 과정
- 프로세서는 주소 버스를 통해 읽어야 할 데이터의 메모리 주소를 전송합니다.
- 프로세서는 제어 버스를 통해 “읽기(Read) 신호”를 보냅니다.
- 메모리는 해당 주소의 데이터를 데이터 버스를 통해 프로세서로 전송합니다.
- 프로세서는 받은 데이터를 레지스터에 저장한 후, 이후 연산에 활용합니다.
프로세서가 메모리에 데이터를 쓰는 과정
- 프로세서는 주소 버스를 통해 데이터를 저장할 메모리 주소를 전송합니다.
- 프로세서는 제어 버스를 통해 “쓰기(Write) 신호”를 보냅니다.
- 프로세서는 저장할 데이터를 데이터 버스를 통해 메모리로 전송합니다.
- 메모리는 데이터를 해당 주소에 저장합니다.
5. 주변장치 (Peripheral Devices)
주변장치란 프로세서와 메인 메모리를 제외한 나머지 하드웨어 구성 요소를 의미합니다.
컴퓨터 내부에서 필수적으로 동작하는 프로세서와 메모리를 보조하며, 외부와 데이터를 주고받거나 저장하는 역할을 합니다.
📌 주변장치는 크게 세 가지 종류로 나뉩니다.
- 입력장치 (Input Devices)
- 출력장치 (Output Devices)
- 저장장치 (Storage Devices)
5.1 입력장치 (Input Devices)
📌 입력장치란?
컴퓨터에서 처리할 데이터를 외부에서 입력받는 장치입니다.
사용자의 명령을 받아들이거나, 외부 환경으로부터 정보를 받아 컴퓨터 내부로 전달합니다.
📌 대표적인 입력장치 예시
| 입력장치 | 설명 |
|---|---|
| 키보드 | 사용자가 문자를 입력할 수 있는 대표적인 입력장치 |
| 마우스 | 포인터를 이동시키고 클릭하여 명령을 입력 |
| 터치스크린 | 화면을 직접 터치하여 입력할 수 있는 장치 |
| 스캐너 | 문서나 이미지를 디지털 데이터로 변환 |
| 마이크 | 소리를 입력받아 디지털 신호로 변환 |
| 웹캠 | 영상을 입력받아 컴퓨터로 전송 |
| 조이스틱 | 게임에서 사용되는 입력 컨트롤러 |
5.2 출력장치 (Output Devices)
📌 출력장치란?
입력장치와 반대로, 컴퓨터에서 처리한 데이터를 외부로 보내는 장치입니다.
출력장치는 사용자가 결과를 확인할 수 있도록 정보를 화면, 소리, 인쇄물 등으로 출력합니다.
📌 대표적인 출력장치 예시
| 출력장치 | 설명 |
|---|---|
| 모니터 | 컴퓨터가 처리한 데이터를 화면에 출력 |
| 프린터 | 디지털 데이터를 종이에 출력 |
| 스피커 | 소리 정보를 출력 |
| 프로젝터 | 화면을 확대하여 벽이나 스크린에 출력 |
| 헤드폰 | 개인용 음성 출력을 위한 장치 |
5.3 저장장치 (Storage Devices)
📌 저장장치란?
데이터를 저장하고 필요할 때 불러올 수 있는 장치입니다.
저장장치는 데이터를 영구적으로 보존할 수 있으며, 입출력 장치의 역할도 수행할 수 있습니다.
📌 저장장치는 크게 두 가지로 나뉩니다.
- 내부 저장장치 (Primary Storage)
- 컴퓨터 내부에 장착되어 기본적인 데이터 저장을 담당하는 장치
- 예: HDD(하드 디스크), SSD(솔리드 스테이트 드라이브)
- 외부 저장장치 (Secondary Storage)
- 데이터를 장기적으로 저장하거나, 이동 가능한 저장장치
- 예: USB 메모리, 외장 HDD, SD 카드, CD/DVD
📌 대표적인 저장장치 예시
| 저장장치 | 설명 |
|---|---|
| HDD (Hard Disk Drive) | 회전하는 자기 디스크에 데이터를 저장 |
| SSD (Solid State Drive) | 플래시 메모리를 이용한 빠른 저장장치 |
| USB 메모리 | 휴대가 간편한 외장 저장장치 |
| SD 카드 | 카메라, 스마트폰 등에서 사용되는 저장 매체 |
| CD/DVD | 광학 디스크로 데이터를 저장 |
| 클라우드 스토리지 | 인터넷을 통해 데이터를 저장하는 가상 저장공간 |
5.4 주변장치의 역할 정리 (표)
| 장치 종류 | 설명 | 예시 |
|---|---|---|
| 입력장치 | 외부 데이터를 컴퓨터로 전달 | 키보드, 마우스, 스캐너, 마이크 |
| 출력장치 | 컴퓨터에서 처리한 데이터를 외부로 출력 | 모니터, 프린터, 스피커 |
| 저장장치 | 데이터를 저장하고 필요 시 불러옴 | HDD, SSD, USB, 클라우드 |
5.5 주변장치의 역할 예시
예를 들어, 사용자가 문서를 작성하고 출력하는 과정은 다음과 같이 진행됩니다.
1️⃣ 사용자가 키보드(입력장치)를 통해 문서를 작성합니다.
2️⃣ 작성한 문서는 SSD(저장장치)에 저장됩니다.
3️⃣ 저장된 문서를 모니터(출력장치)로 확인합니다.
4️⃣ 완성된 문서를 프린터(출력장치)를 사용하여 종이에 인쇄합니다.
5.6 결론
- 주변장치는 컴퓨터와 사용자가 상호작용할 수 있도록 돕는 핵심적인 하드웨어 구성 요소입니다.
- 입력장치는 데이터를 받아들이고, 출력장치는 결과를 전달하며, 저장장치는 데이터를 보존하는 역할을 합니다.
- 효율적인 컴퓨터 시스템을 구성하기 위해서는 각 주변장치의 역할을 잘 이해하고 활용해야 합니다.