02. 컴퓨터의 구조와 성능 향상
1. 컴퓨터의 기본 구성
1-1. 하드웨어 구성
- CPU & Memory
- CPU - 명령어 해석하여 실행하는 장치
- 메모리 - 작업에 필요한 프로그램과 데이터를 저장하는 장소
- 입출력장치
- 입력장치 - 외부의 데이터를 컴퓨터로 입력하는 장치
- 출력장치 - 컴퓨터에서 처리한 결과를 사용자가 원하는 형태로 출력하는 장치
- 저장장치 - 메모리에 비해서 느리지만 가격이 저렴하고 전원과 상관 없이 반영구 저장이 가능
- 메인보드 - 다양한 부품을 연결하고 전원을 공급해 주는 커다란 판
- 버스 - 메인보드에서 각 장치를 연결하여 데이터가 지나다니는 통로
1-2. 폰노이만 구조
- 폰노이만 구조 - CPU, 메모리, 입출력장치, 저장장치가 버스로 연결된 구조
모든 프로그램은 메모리에 올라와야 실행할 수 있다.
1-3. 요리사 모형
- 프로세스 관리 ↔ 요리 방법 결정
- 메모리 관리 ↔ 도마 정리
- 저장장치 관리 ↔ 보관 창고 정리
1-4. 기초 용어 정리
- 클록 - 컴퓨터에서 일정한 박자를 만들어 내는 것
- 펄스 & 클록 틱 - 클록에 의해 일정 간격으로 만들어지는 틱
- 헤르츠(Hz) - CPU의 성능을 나타낼 수 있는 단위
- 시스템 버스 - 메모리와 주변장치를 연결하는 버스 (메인보드의 동작 속도)
- 프로그램 - 컴퓨터에 알려줄 작업을 하나로 모은 것
- 기계어 - 컴퓨터가 이해할 수 있는 언어
- 어셈블리어 - 0과 1의 이진수를 문자 형태 (전문가만 사용 가능)
- 저급 언어 - 기계어에 가까운 프로그래밍 언어
- 고급 언어 - 일반인이 이해할 수 있는 프로그래밍 언어
- 소스 코드 → 기계어 (기계어 번역 과정)
- 컴파일
- 인터프리터
- 자료 구조
- 큐 - FIFO
- 스택 - FILO
- 배열 - 형태가 같은 자료가 연속적으로 저장되는 형태
- 연결 리스트 - 데이터를 포인터로 연결
2. CPU와 메모리
2-1. CPU의 구성과 동작
- CPU(중앙 처리 장치)는 컴퓨터의 두뇌 역할을 하며 연산과 제어를 담당
- ALU(Arimethtic Logic Unit) - 산술 및 논리 연산
- CU(Control Unit) - 명령어의 해석 및 실행을 제어
- 레지스터(Register) - CPU 내부의 작은 기억 장치로 데이터와 명령어, 연산 결과 등을 임시로 저장
2-2. 메모리 종류와 부팅
- 메모리는 데이터를 저장하는 장치로 주로 RAM(Random Access Memory)과 ROM(Read Only Memory)로 나뉨
- RAM은 일시적으로 데이터를 저장하며 전원이 꺼지면 데이터가 사라짐 (휘발성)
- ROM은 초기 부팅 정보나 시스템 기본 소프트웨어 등을 영구적으로 저장 함
- 컴퓨터가 부팅되면 ROM에 저장된 부트로더(= 부트스트랩)가 CPU에 의해 실행되어 OS를 RAM으로 불러 옴
3. 컴퓨터 성능 향상 기술
3-1. 버퍼(Buffer)
- 버퍼는 데이터를 임시로 저장하는 메모리 영역으로 두 장치 또는 프로세스 간의 데이터 전송 속도 차이를 조절하는 데 사용 됨
3-2. 저장장치의 계층 구조(Memory Hierarchy)
- 저장장치의 계층 구조는 속도와 용량, 비용을 고려하여 여러 수준으로 구성됨
- Register > Cache > RAM > SDD > HDD
3-3. 인터럽트(Interrupt)
- 인터럽트는 CPU가 현재 처리 중인 작업을 중단하고 긴급하게 처리해야 할 작업(예: 입출력 요청)을 처리한 후 원래 작업으로 돌아가게 하는 기능
- 쉽게 키보드, 마우스 등을 조작한다던지 작업 명령어 또는 강제 리부트 등
3-4. 직접 메모리 접근(DMA)
- DMA(Direct Memory Access)는 CPU의 개입 없이 주변장치가 메모리에 직접 접근하여 데이터를 전송할 수 있게 해 데이터 전송 효율이 향상 시키는 기술
→ 메모리 접근 권한은 CPU에게만 있어 입출력 관리자는 접근이 불가하기 때문
3-5. 메모리 맵 입출력(MMIO)
- 메모리 맵 입출력은 입출력 장치를 메모리 주소 공간에 매핑하여 메모리 접근 방식으로 입출력 장치를 제어하는 기술
→ CPU가 사용하는 메모리 공간과 입출력 관계자의 메모리 공간이 분리되어 있음
3-6. 사이클 훔치기
- 사이클 훔치기는 CPU와 입출력 관계자가 동시에 메모리에 접근하려 할 때 CPU가 양보해주는 것
→ 입출력 장치의 속도가 CPU보다 느리기 때문
4. 멀티 프로세싱
4-1. 멀티코어 시스템
- 단일 CPU 칩에 여러 개의 처리 코어를 포함하는 시스템
- 각 코어는 독립적인 연산 단위로서 작동 (자원 공유 X)
- 여러 작업을 동시에 처리할 수 있어 성능이 향상
4-2. CPU 멀 티스레드
- 단일 코어가 동시에 여러 스레드를 처리할 수 있게 하는 기술
- 자원 사용의 효율성을 높이고 처리 성능을 개선
- 같은 프로세스 안에서 자원 공유 (쓰레드의 Stack만 분리 됨)
- Multi Threading - 하나의 CPU에서 여러 스레드를 처리(Logical)
- Hyper Threading - 하나의 CPU에서 CPU가 두개인 것 처럼 사용해 스레드를 동시에 처리(Physical)