본문 바로가기
디지털포렌식

디지털포렌식 2급 필기 준비 - 1과목

by todayisfriday 2025. 4. 11.

지피티가 만들어준 이미지 (그래서 글자가 많이 이상하다...)

 

컴퓨터 구조란?

컴퓨터가 데이터를 저장하고 처리하는 전체적인 설계 방식
= 하드웨어 구성 + 명령어 실행 구조

 

기본 구성 요소 (폰 노이만 구조 기반)

구성 요소 세부 구성 주요 역할 및 기능
입력 장치 키보드, 마우스 등 사용자로부터 데이터를 입력받음
중앙처리장치 (CPU) 제어장치 (CU)
연산장치 (ALU)
레지스터
명령어를 해석하고 연산 수행
장치 간 제어
임시 데이터 고속 저장
기억 장치 RAM
ROM
캐시
레지스터
데이터를 저장 및 불러오기
RAM은 휘발성, ROM은 비휘발성
캐시는 CPU와 RAM 사이 속도 보완
출력 장치 모니터, 프린터 등 처리 결과를 사용자에게 출력
보조기억장치 HDD, SSD, USB 등 프로그램과 데이터를 영구 저장
버스(Bus) 데이터 버스
주소 버스
제어 버스
장치 간 데이터, 주소, 제어 신호 전송

 

기타 주요 장치

장치 설명 포인트
GPU
(Graphics Processing Unit)
그래픽 처리 전용 프로세서
→ 병렬 연산에 특화됨 (영상, 딥러닝 등)
CPU보다병렬 연산 성능 우수
RAM Disk 메모리(RAM)의 일부를 디스크처럼 사용하는 가상 저장공간 매우 빠르지만 전원 차단 시 데이터 사라짐 (휘발성)
SSD
(Solid State Drive)
반도체 기반 비휘발성 저장장치
→ 속도 빠름, 기계적 소음 없음
TRIM 명령, 셀 종류(SLC, MLC, TLC) 등 
캐시 메모리
(Cache)
CPU와 RAM 사이에 위치, 속도 차이 보완 / L1, L2, L3 단계 존재 용량 작지만 속도 매우 빠름,
지역성(Locality) 원리 기반
레지스터
(Register)
CPU 내부에 있는 초고속 기억장치 /
계산 중인 값 저장
가장 빠르지만 용량 매우 작음
BIOS
(Basic Input Output System)
부팅 시 하드웨어 초기화
+ OS 로딩 전까지 필요한 설정 수행
ROM에 저장, POST 수행, CMOS와 함께 시험에 나옴
POST
(Power-On Self Test)
BIOS가 부팅 시 수행하는
하드웨어 진단 과정
부팅 중 "삐" 소리 = POST 에러 발생 신호
CMOS 시스템 설정 값 저장 공간 /
시계, 날짜, 부팅 순서 등 포함
배터리(BIOS 배터리)로 유지됨, 초기화 가능
DMA
(Direct Memory Access)
CPU 거치지 않고
장치 간 메모리 직접 전송 가능
고속 전송 구조, CPU 부하 감소
북마크
(Bookmark)
시스템이 자주 사용하는 주소나 위치를 기억 → 시험보단 실무에서 더 자주 등장

 

헷갈리는 장치 비교

구분 RAM RAM Disk SSD HDD Cache Register GPU CPU
기능 주기억장치 가상 디스크 보조기억장치 보조기억장치 CPU-메모리 중간 버퍼 CPU 내부 연산 임시 저장 그래픽 연산 특화 일반 연산 처리
속도 빠름 매우 빠름 중간 느림 매우 빠름 최고속도 중간 빠름
휘발성 ✅ 예 ✅ 예 ❌ 아니오 ❌ 아니오 ✅ 예 ✅ 예 ❌ 아니오 ❌ 아니오
사용 목적 프로그램 실행 빠른 임시 저장소 데이터 저장 대용량 저장 속도 보완 계산 중 데이터 보관 병렬 그래픽 연산 일반 논리·산술 연산
특징 휘발성
메모리
RAM을 디스크처럼 사용 반도체 기반 저장 기계식 저장장치 CPU 근접 위치 CPU 가장 가까움 병렬 연산 구조 연산 핵심 장치

 

명령어 실행 사이클

① 인출(Fetch) → 명령어를 메모리에서 CPU로
② 해독(Decode) → 명령어 분석
③ 실행(Execute) → 실제 연산 수행
④ 저장(Store) → 결과를 메모리에 저장

 

버스 구조

버스 종류 역할
데이터 버스 데이터 전달
주소 버스 기억장치 주소 전달
제어 버스 제어 신호 전달 (읽기/쓰기 등)

 

저장장치 계층 구조

레지스터 > 캐시 > RAM > SSD > HDD
  • 빠를수록 작고 비쌈
  • 느릴수록 크고 쌈
  • 계층 구조 설계는 성능과 비용의 균형을 맞추기 위함

컴퓨터 구조의 발전 과정

세대 기술 기반 구조 설계 대표 언어 운영 방식 주요 특징 대표 시스템
1세대
(1940~1950년대)
진공관 (Vacuum Tube) 폰 노이만 구조 최초 적용
명령어와 데이터 동일한 기억장소 사용
기계어 단일 작업 방식 (Batch) 속도 느림, 발열 심함
하드웨어 크기 큼, 고장 빈번
ENIAC, EDVAC, UNIVAC
2세대
(1950년대 후반~1960년대)
트랜지스터 폰 노이만 구조 유지
하드웨어 신뢰성 향상
어셈블리어 배치 처리 향상
초기 운영체제 등장
작고 안정적, 소비전력 감소
컴퓨터 대중화 시작
IBM 1401, CDC 1604
3세대
(1960년대 후반~1970년대)
집적회로 (IC) 다중 프로그래밍 가능
기억장치 고도화
C언어 (초기 고급언어) 시분할(Time-sharing), 다중 사용자 속도 향상, 효율적 자원 분배
중앙 집중식 컴퓨팅
IBM System/360, UNIVAC 1108
4세대
(1970년대 후반~현재)
VLSI
(초대형 집적회로)
병렬처리, 파이프라이닝 구조
마이크로프로세서 기반
고급언어 (C, Pascal 등) 다중 작업(OS), 멀티태스킹
GUI 운영체제 등장
PC 보급, 개인화
컴퓨터 가격 하락, 상용화 급진전
인텔 4004, IBM PC, Apple II
5세대
(현재~미래)
AI, 양자컴퓨팅
뉴로모픽 기술
비폰노이만 구조 시도
병렬·분산·지능형 구조
Python, R, AI 언어
(딥러닝 프레임워크 등)
자율처리, 딥러닝 중심
네트워크 기반 서비스 확대
인간 사고방식 모방
빅데이터·AI 융합
딥러닝 서버, NPU, 클라우드 AI, 양자컴퓨터

 

논리게이트

논리게이트 기호 동작 원리 대표 진리표 요약 설명
AND A • B 1 • 1 = 1 모두 참일 때만 참 입력값 모두 1일 때만 출력이 1
OR A + B 0 + 0 = 0 둘 중 하나라도 참이면 참 입력값 중 하나라도 1이면 출력이 1
NOT 1 → 0
0 → 1
참/거짓 반전 입력값을 반전시킴 (1이면 0, 0이면 1)
NAND (A • B)̅ AND의 반대 AND 결과의 부정 AND 연산 후 결과를 반전
NOR (A + B)̅ OR의 반대 OR 결과의 부정 OR 연산 후 결과를 반전
XOR A ⊕ B 같으면 0, 다르면 1 배타적 논리합 입력값이 다르면 1, 같으면 0
XNOR (A ⊕ B)̅ 같으면 1, 다르면 0 동등 비교 XOR의 반대, 입력값이 같을 때 1

대표진리표

 

3 상태 버퍼

상태 설명
0 출력으로 0
1 출력으로 1
Z (High Impedance) 출력 없음 상태 / 회로에서 연결이 끊긴 것처럼 동작함

 

 

멀티플렉서

구성 설명
입력 4개 (I₀, I₁, I₂, I₃)
선택선 2개 (S₀, S₁) → 2ⁿ 개 입력 선택 가능
출력 1개 (Y) → 선택된 입력만 출력됨
  • 작동 예시
S1 S0 출력(Y)
0 0 I₀ 출력
0 1 I₁ 출력
1 0 I₂ 출력
1 1 I₃ 출력

 

프로세스란?

운영체제에서 실행 중인 프로그램
= 코드 + 실행 상태 + 자원의 집합

 

프로세스 구성요소

구성 요소 설명
프로그램 코드 (Text) 실행할 명령어 집합 (코드 영역)
데이터 (Data) 전역변수, 정적 변수 등
힙 (Heap) 동적 메모리 할당 영역 (malloc 등)
스택 (Stack) 함수 호출, 지역 변수 저장
PCB (Process Control Block) 프로세스 상태, PID, 레지스터 등 관리

 

프로세스 전이 상태

상태 설명
New 새로 생성되고 있는 중 (아직 실행 전)
Ready CPU 할당을 기다리는 상태
Running CPU를 받아 실행 중인 상태
Waiting / Blocked 입출력 등 외부 이벤트를 기다리는 상태
Terminated / Exit 실행이 끝나 종료된 상태
전이 설명
New → Ready 프로세스 생성 완료 → 준비 완료 상태
Ready → Running CPU가 할당됨 → 실행 시작
Running → Waiting 입출력 요청 등으로 대기 상태로 전환
Running → Ready CPU 선점(문맥 교환) → 다시 준비 상태로
Waiting → Ready 입출력 완료 → 다시 준비 상태
Running → Terminated 실행 종료
[New]
  ↓
[Ready] ←────────────┐
  ↓                  │
[Running] ──→ [Waiting]  
  ↓        ↑         ↓
[Terminated] ←───────┘

 

인터럽트란?

  • 정의:
    → 실행 중인 프로그램을 강제로 멈추고, 외부 또는 내부에서 발생한 긴급한 이벤트를 처리하도록 하는 신호
  • 주요 역할:
    → CPU가 느린 장치(I/O 등)를 기다리지 않고 필요한 때에만 처리하도록 해 효율 향상
  • 일상 비유:
    → 누군가 말을 하고 있을 때, 급한 일이 생겨 “잠깐만요!” 하고 중단시키는 것

인터럽트의 종류

분류 하위 분류 설명 대표 예시
외부 인터럽트
(하드웨어 기반)
입출력 인터럽트 I/O 장치에서 CPU로 요청 키보드 입력, 프린터 완료
타이머 인터럽트 내부 타이머에 의해 발생 시간 분할 스케줄링
전원 이상 인터럽트 전압 강하, 정전 등 이상 감지 UPS 작동 요청
외부 신호 인터럽트 외부 장치에서 신호 발생 외부 컨트롤러 요청
내부 인터럽트
(예외/트랩)
잘못된 명령어 CPU가 해석 불가능한 명령어 불법 명령 실행
산술 오류 0으로 나누기 등 계산 오류 Divide by zero, overflow
메모리 접근 오류 허용되지 않은 영역 접근 커널 영역 접근 시도
주소 지정 오류 존재하지 않는 주소 접근 NULL 포인터 참조
소프트웨어 인터럽트
(의도적 호출)
시스템 콜 OS 기능 요청 인터럽트 read(), exec(), write() 등
Supervisor Call (SVC) 운영체제 특권 명령 요청 UNIX에서 커널 호출
프로그램 요청 인터럽트 사용자 코드에 명시된 인터럽트 INT 21h (x86 인터럽트)
  • 외부 인터럽트: "밖에서 불러서 방해"
  • 내부 인터럽트: "내가 문제 생김"
  • 소프트웨어 인터럽트: "내가 OS한테 도와달라고 요청"

 

입출력 시스템의 구성요소

구성 요소 설명
디바이스 드라이버
(Device Driver)
운영체제가 각 하드웨어 장치를 제어할 수 있도록
제공하는 소프트웨어 모듈

OS ↔ 장치 제어기 간의 통신 중개 역할
I/O 장치 제어기
(Device Controller)
입출력 장치를 실제로 제어하는 하드웨어

장치 내부에 존재하며, CPU의 명령을 받아 동작
버퍼
(Buffer)
CPU와 입출력 장치 간 속도 차이를 완화하기 위한
임시 데이터 저장소

데이터 손실 방지 및 효율적 처리에 사용
I/O 명령어 CPU가 입출력 장치에 명령을 내리기 위해 사용하는 명령어

예: READ, WRITE 등

 

입출력장치 접근 방식

방식 설명 특징 장점 단점
Programmed I/O CPU가 직접 입출력 장치를 제어
작업 완료 시까지 CPU가 대기
CPU가 모든 입출력 처리 주체 구현이 간단 CPU 자원 낭비 심함
Interrupt-driven I/O I/O 장치가 준비되면 인터럽트를 발생시켜 CPU가 처리 인터럽트 기반 처리 CPU 자원 절약 복잡한 인터럽트 처리 필요
DMA
(Direct Memory Access)
I/O 장치가 메모리에
직접 접근하여 데이터 전송
CPU의 개입 없이 대량 전송 가능
DMA 컨트롤러 사용 CPU 부하 감소, 고속 전송 구현 복잡, 하드웨어 추가 필요
Channel I/O 별도의 채널 프로세서가
입출력 전담
CPU와 독립적으로 처리
고급 시스템(메인프레임) 사용 입출력 완전
분리, 병렬 처리 가능
고비용, 복잡한 구조
  • Cycle Stealing : DMA 장치가 CPU의 버스 사용 사이클을 잠깐 ‘훔쳐’서 메모리에 직접 접근하는 방식

CISC와 RISC

항목 설명
CISC
(Complex Instruction Set Computer)
복잡한 명령어 집합을 가진 CPU 설계 방식
→ 1개의 명령어로 여러 동작 수행 가능  
RISC
(Reduced Instruction Set Computer)
간단하고 빠른 명령어만 사용하도록 단순화된 설계
→ 명령어 실행 속도와 효율성 중시  
비교 항목 CISC
(Complex Instruction Set Computer)
RISC
(Reduced Instruction Set Computer)
명령어 수 많고 복잡함 적고 단순함
명령어 길이 가변 길이 (1~15바이트 등) 고정 길이 (일반적으로 4바이트)
처리 속도 명령어 자체는 강력하지만 느림 단순 명령어를 빠르게 처리 (파이프라이닝 효율 ↑)
전력 소모 비교적 많음 낮음 (모바일·임베디드 친화적)
하드웨어 복잡도 높음 (복잡한 디코더 필요) 낮음 (제어회로 간단)
호환성 높음 (x86 계열의 레거시 지원) 낮음 (호환성보단 속도에 중점)
컴파일러 의존성 낮음 (복잡한 명령이 하드웨어에 있음) 높음 (컴파일러가 명령어 최적화 책임)
사용 예시 Intel x86, AMD 계열 데스크탑 CPU ARM, MIPS, SPARC, RISC-V 등 모바일/임베디드/IoT
대표 특징 명령어 1개로 다양한 동작 수행 명령어는 단순하지만 실행 빠름

 

주소지정방식

주소지정방식 개념 설명 특징 이해하기 쉬운 예시
즉시주소지정
(Immediate)
명령어 자체에 데이터가 포함됨 가장 빠름, 메모리 접근 없음 MOV A, #5
→ A에 숫자 5를 직접 넣음
직접주소지정
(Direct)
명령어에 실제 메모리 주소가 포함됨 명령어가 메모리 위치를 직접 지정 MOV A, 1000
→ A에 메모리 주소 1000에 있는 값 저장
간접주소지정
(Indirect)
명령어가 가리키는 주소에
진짜 데이터 주소가 있음
메모리 접근 2번 필요 MOV A, (1000)
→ 주소 1000에 적힌 주소로 가서 값을 가져옴
레지스터주소지정
(Register)
데이터가 레지스터에 있음 속도 매우 빠름 MOV A, R1
→ R1에 저장된 값을 A에 저장
레지스터간접주소지정
(Register Indirect)
레지스터가 가리키는 메모리 주소에서 데이터 읽음 레지스터를 포인터처럼 사용 MOV A, @R1
→ R1이 가리키는 주소의 값 가져옴
상대주소지정
(Relative)
현재 명령어 주소(PC) + 오프셋 분기(Branch) 명령어에서 사용 JMP +5
→ 현재 위치에서 5칸 뒤로 점프
기준주소지정
(Base / Indexed)
기준 주소(레지스터) + 오프셋으로 실제 주소 계산 배열/구조체 등 반복 데이터 처리에 유용 LOAD A, BASE+4
→ BASE 레지스터 기준 4칸 떨어진 주소의 값
암시적주소지정
(Implicit)
명령어에 피연산자 없음, CPU가 자동 인식 명령어 자체로 의미 완결 CLR
→ 누산기(ACC)를 자동으로 지움
  • CISC가 복잡하고 다양한 주소지정방식을 사용하고, RISC가 단순하고 다양하지 않은 주소지정방식을 사용함

데이터의 구성 단위

  • 물리적 단위
단위 크기 설명
비트 (Bit) 1비트 가장 작은 단위, 0 또는 1의 이진값
니블 (Nibble) 4비트 16진수 1자리 표현 가능 (0~F)
바이트 (Byte) 8비트 영문자 1개 저장 가능, 메모리 최소 주소 단위
워드 (Word) CPU 구조에 따라 보통 2~8바이트 CPU가 한 번에 처리할 수 있는 데이터 크기
더블워드 (Double Word) 2워드 (일반적으로 4~8바이트) 워드보다 2배 큰 데이터 단위
쿼드워드 (Quad Word) 4워드 (일반적으로 8~16바이트) 64비트 이상의 CPU에서 사용되는 단위
킬로바이트 (KB) 1,024 바이트 작은 텍스트 파일 크기 정도
메가바이트 (MB) 1,024 KB 이미지, 음악 파일 수준
기가바이트 (GB) 1,024 MB 일반적인 RAM, 영화 파일 크기
테라바이트 (TB) 1,024 GB SSD, HDD 등 저장장치 용량 단위
페타바이트 (PB) 1,024 TB 데이터 센터, 클라우드 스토리지
엑사바이트 (EB) 1,024 PB 국가·글로벌 단위 대용량 데이터
제타바이트 (ZB) 1,024 EB 인터넷 전체 트래픽 규모 등 초대형 단위
  • 논리적 단위
단위 정의 상세 설명 / 예시
필드 (Field) 의미 있는 데이터 항목 하나 예: 이름, 전화번호, 주소
데이터베이스에서 "열(Column)"에 해당
레코드 (Record) 필드들의 집합 예: 한 명의 학생 정보(이름+학번+전화번호 등)
데이터베이스에서 "행(Row)"에 해당
파일 (File) 레코드들의 모음 예: 학생정보.txt, 회원목록.csv 등
하나의 주제에 대한 정보 저장
테이블 (Table) 레코드들이 모인 2차원 형태의 구조 데이터베이스 내부 구조의 기본 단위
필드 = 열, 레코드 = 행
데이터베이스 (Database) 논리적으로 연결된 파일/테이블들의 모음 예: 학사관리 DB, 고객관리 DB
DBMS로 관리되는 데이터 집합체
  • 블록 : 디스크 입출력의 최소 단위, HDD/SSD 등에서 데이터를 실제로 읽고 쓰는 기본 단위
분류 이유
물리적 단위로 분류 디스크에서 실제로 I/O 작업이 블록 단위로 처리됨 (512B, 4KB 등)
논리적 개념으로도 등장 파일시스템/DBMS에서 "논리적 블록 주소(LBA)", "할당 블록" 등으로 사용됨

 

숫자

수 체계 기수(진수) 사용 숫자 예시
2진수 2 0, 1 1101 (13 in decimal)
8진수 8 0~7 0751 (== 489)
10진수 10 0~9 123, 456
16진수 16 09, AF 0x1F (== 31 in decimal)
  • 숫자 내부 표현 방식
구분 설명 비고
정수 부호 + 값 (보통 2의 보수로 표현) 8/16/32/64비트
실수 부동소수점(Floating Point) IEEE 754 표준 사용
고정소수점 정수처럼 처리하되, 소수점 위치 고정 임베디드 등에서 사용
  • 변환 방식
변환 방향 변환 방법 설명 예시
10진수
→ 2진수
2로 나눈 나머지를 역순으로 정렬 2로 계속 나누고, 나머지를 아래서 위로 읽음 13 → 1101
2진수
→ 10진수
각 자리수에 2의 제곱을 곱해 모두 더함 LSB(오른쪽)부터 차례대로 2⁰, 2¹, 2²... 1101 → 1×8 + 1×4 + 0×2 + 1×1 = 13
2진수
→ 16진수
4자리씩 끊어서 16진수 한 자리로 변환 왼쪽부터 4비트 단위로 끊어서 대응 11011011→ 1101(D), 1011(B) → DB
16진수
→ 2진수
각 자리 숫자를 4자리 이진수로 변환 예: A = 1010, F = 1111 3F → 0011 1111
10진수
→ 16진수
16으로 나눈 나머지를 역순으로 정렬 2진수 변환과 원리 같음 (단위만 다름) 255 → 0xFF
16진수
→ 10진수
각 자리수 × 16ⁿ 해서 모두 더함 16진수의 각 자리 곱해서 합산 1F → 1×16 + 15 = 31

 

  • 변환 문제 예시
더보기

10진수 157을 2진수로 바르게 변환한 것은?

① 10011111
② 10011001
③ 10100011
④ 10011101

 

정답: 

157 ÷ 2 = 78 ... 1
78 ÷ 2 = 39 ... 0
39 ÷ 2 = 19 ... 1
19 ÷ 2 = 9 ... 1
9 ÷ 2 = 4 ... 1
4 ÷ 2 = 2 ... 0
2 ÷ 2 = 1 ... 0
1 ÷ 2 = 0 ... 1
→ 역순으로 읽으면: 10011111 (정답)

 

더보기

다음 2진수 10101111을 16진수로 바르게 변환한 것은?

 

① 0xAF

② 0xB2

③ 0xA7

④ 0xBE

 

정답: ① 0xAF

해설:
2진수 10101111을 4자리씩 끊어서 변환하면:
1010 = A, 1111 = F → 0xAF

 

 

더보기

8비트 기준으로 10진수 -23을 2의 보수로 표현한 것은?

 

① 11101001

② 11100111

③ 11101000

④ 11101101

 

정답: ① 11101001

 해설:
1. +23 → 00010111
2. 1의 보수 → 11101000
3. +1 → 11101001
따라서 정답은 11101001

 

  • 빅엔디안과 리틀엔디안 : 메모리를 저장할 때 어떤 바이트를 먼저 저장하느냐에 관한 개념
비교 항목 Big Endian Little Endian
바이트 저장 순서 상위 바이트부터 저장 (왼쪽 → 오른쪽) 하위 바이트부터 저장 (오른쪽 → 왼쪽)
사람 눈에 직관적인가? 예 (큰 값이 먼저 보여서 이해 쉬움) 아니오 (숫자가 뒤집혀 보여 헷갈릴 수 있음)
실제 저장 예시
(0x12345678)
12 34 56 78 78 56 34 12
실제 저장 예시
(0xABCD)
AB CD CD AB
사용 시스템 네트워크 표준, 일부 RISC 시스템 (SPARC 등) 대부분의 PC(x86/Intel), ARM, Windows 등
활용 분야 TCP/IP, 네트워크 전송 시 사용 메모리 저장, 파일 시스템 내부 구조
비유 “큰 것이 먼저” → 제목을 앞에서부터 씀 “작은 것이 먼저” → 제목을 거꾸로 씀
  • 네트워크 = 항상 빅엔디안
  • PC 메모리 = 대부분 리틀엔디안
  • 저장된 값이 이상하게 보이면 엔디안 순서 확인

 

문자

인코딩 방식 설명 비고
ASCII 영문자, 숫자, 특수기호 표현
(7비트 → 128문자)
'A' = 65, 'a' = 97, '0' = 48
EUC-KR 한글 완성형 표현 (2바이트) 옛 한글 미지원
UTF-8 유니코드 기반, 전 세계 문자 지원
(1~4바이트 가변 길이)
웹 표준
UTF-16 고정 2바이트 or 4바이트 Windows 내부 많이 사용
Unicode 전 세계 문자에 고유한 번호 부여 U+AC00 = '가'
  • Base64 : 8비트 바이너리 데이터를 ASCII 문자로 표현하는 방식 → 텍스트만 허용되는 환경에서 바이너리 데이터를 안전하게 전달하기 위해 사용
항목 내용
정의 바이너리 데이터를 ASCII 문자로 변환하는 인코딩 방식
사용 목적 이진 데이터를 텍스트 환경에서도 안전하게 전송
입력 단위 3바이트(24비트)
출력 단위 4문자 (6비트 × 4)
사용 문자 A~Z, a~z, 0~9, +, / (총 64문자) + = (패딩)
패딩 입력 데이터가 3바이트 미만일 경우, = 또는 == 사용
크기 변화 원본보다 약 33% 증가 (3바이트 → 4문자)
사용 예시 이메일 MIME, 이미지 base64(data URI), JWT 토큰 등
예제 "Man" → TWFu
"M" → TQ==

 

반도체 저장매체

저장매체 설명 특징 휘발성
DRAM 컴퓨터의 주기억장치로 사용되는 동적 램 속도 빠름, 재충전 필요, 저렴 휘발성
SRAM CPU 캐시에 사용되는 정적 램 매우 빠름, 고가, 재충전 불필요 휘발성
플래시 메모리 EEPROM을 발전시킨
비휘발성 반도체 메모리
SSD, USB, SD 카드 등 저장장치의 핵심 비휘발성
NAND Flash 저장 속도가 빠르고 대용량 저장이 가능함 SSD, USB, 스마트폰 등에 사용, 블록 단위 삭제 비휘발성
NOR Flash 빠른 읽기 속도, 코드 실행 가능 BIOS, 펌웨어 등에 사용, 랜덤 접근 지원 비휘발성
EEPROM 전기적으로 삭제 및 재기록 가능한 ROM 플래시 메모리의 전신, 느리지만 안정성 높음 비휘발성
SSD
(Solid State Drive)
NAND 플래시 기반 저장장치 빠른 속도, 무소음, 기계 부품 없음, 수명 제한 있음 비휘발성
USB
(Flash Drive)
플래시 메모리 기반의 휴대용 저장장치 작고 휴대성 좋음, 다양한 기기에서 사용 가능 비휘발성
SD 카드 플래시 메모리 기반의 소형 저장장치 카메라, 스마트폰, 드론 등에 사용 비휘발성
MRAM / PRAM 자기저항/상변화 재료 기반
차세대 비휘발성 메모리
빠르고 전력 적음, 높은 내구성, 상용화 진행 중 비휘발성
  • 반도체 아닌것
저장매체 저장 방식 설명 주요 특징
HDD (Hard Disk Drive) 자기 디스크 회전 + 자기헤드 회전하는 금속 디스크에 데이터를
자기적으로 저장
대용량, 저렴, 느림,
기계적 손상 우려
FDD (Floppy Disk Drive) 자기 디스크 자성 플라스틱 원판 사용한 소형 디스크 용량 작고 속도 느림,
현재는 거의 사용 안함
Optical Disc
(CD/DVD/Blu-ray)
레이저로 표면 읽기 빛 반사를 이용해 데이터를 읽고 쓰는
저장매체
읽기 전용 또는 다회 기록 가능,
내구성은 보통
자기 테이프
(Magnetic Tape)
자기 입자 코팅된
리본 테이프
순차 접근 방식, 백업용으로 사용됨 저렴, 대용량, 매우 느림, 순차 읽기
ZIP Disk 자기 디스크 플로피디스크 대체용으로 개발된 중간급 저장장치 소형, 휴대 가능, 현재는 거의 단종

 

USB 메모리

더보기

플래시 메모리를 사용하여 데이터를 저장하고, USB 인터페이스(포트)를 통해 컴퓨터나 장치에 연결해 사용하는 휴대용 저장장치

  • 비휘발성이라 전원 꺼져도 데이터 유지
  • 플러그 앤 플레이 지원 → 드라이버 없이 자동 인식
  • 다양한 운영체제/기기에서 넓은 호환성
  • FAT32 / exFAT / NTFS 등 다양한 파일시스템 지원
  • 핫 스와이핑 : 컴퓨터 전원이 켜진 상태에서도 USB 장치를 연결/분리/교환이 가능한 기능
  • 주 컨트롤러는 허브를 통해 최대 127개까지의 포트의 확장이 가능
  • 장치가 늘어날수록 대역폭을 나눠쓰게 되어 속도는 현저하게 떨어짐
버전 출시 연도 이론 최대 속도 커넥터 종류 특징
USB 1.1 1998 12 Mbps Type-A 초기 표준, 느림
USB 2.0 2000 480 Mbps Type-A, Micro-B 대중화 시작, 여전히 많이 사용됨
USB 3.0 2008 5 Gbps Type-A (파란색) 고속 전송, 대용량 지원
USB 3.1 2013 10 Gbps Type-A, Type-C 양방향 데이터, 고속 충전
USB 3.2 2017 20 Gbps Type-C 듀얼 레인 전송, 고성능 장치
USB 4.0 2019 40 Gbps Type-C 전용 Thunderbolt 3 호환, 고속 멀티 디바이스

 

더보기

[USB 메모리]
  ├── [컨트롤러]
  │     ├─ USB 통신 인터페이스
  │     └─ FTL (주소 매핑, 수명 관리 등)
  └── [NAND 플래시]
        ├─ Die
        │   └─ Block
        │       └─ Page
        │           └─ Cell

 

  • 읽기는 페이지 단위
  • 삭제는 블록 단위
  • 컨트롤러가 이 모든 걸 자동으로 관리함
구성 요소 설명 단위 특징
Cell (셀) 플래시 메모리의 가장 작은 저장 단위 1비트 or 멀티비트 SLC, MLC, TLC, QLC 등으로 구분
Page (페이지) 여러 셀로 구성된 데이터 읽기 단위 4KB~16KB 읽기/쓰기 단위
Block (블록) 여러 페이지로 구성된 삭제 단위 128~512 페이지 삭제는 반드시 블록 단위
Die (다이) 하나의 독립적인 메모리 칩 내부 구성 여러 블록 포함 병렬 처리 가능
컨트롤러 전체 데이터 흐름 관리 + 주소 변환 USB 인터페이스 + FTL 포함 속도, 수명, 안정성에 큰 영향

 

플래시 메모리

  • 전원을 꺼도 데이터가 사라지지 않은 비휘발성 저장장치
  • EEPROM(전기적으로 지우고 다시 쓰는 메모리)을 발전시킨 형태로 블록 단위로 데이터를 지우고 페이지 단위를 저장
  • NAND = 저장 / NOR = 실행
  • Page = 읽기/쓰기 / Block = 삭제
  • FTL = 주소 변환 + 수명 관리
  • SLC > MLC > TLC > QLC (내구성 순)
  • Wear Leveling, Trim, OP → 성능/수명 유지 기술
항목 NAND Flash NOR FLASH
기능 중심 저장(대용량) 중심 실행(코드) 중심
구조 직렬 연결 (저장용 최적화) 병렬 연결 (빠른 접근)
읽기 속도 상대적으로 느림 빠름 (바로 실행 가능)
쓰기/삭제 속도 빠름 느림
접근 방식 블록 단위 주소 기반 랜덤 접근
용도 SSD, USB, SD카드 등 BIOS, 펌웨어 등

 

구분 설명
Page 플래시 메모리의 읽기/쓰기 단위 (보통 4KB)
Block 삭제 단위, 여러 Page로 구성 (보통 128~256개 페이지)

 

구분 셀 당 저장 비트 내구성 속도 용도
SLC 1비트 최고 (10만회↑) 매우 빠름 산업용, 서버
MLC 2비트 보통 보통 일반 SSD
TLC 3비트 낮음 느림 소비자용 SSD
QLC 4비트 매우 낮음 느림 대용량 저장 전용

 

  • FFS(Flash File System)
더보기

FFS = 플래시 메모리 특화 파일 시스템

웨어 레벨링, GC, FTL 협력 필수 기술

종류: JFFS2 / YAFFS / F2FS / UBIFS

일반 FS(FAT, NTFS)는 덮어쓰기 전제 → 플래시에 부적합

 

인터페이스

  • 두 시스템(또는 장치, 프로그램)이 서로 데이터를 주고받고 상호작용할 수 있도록 해주는 연결 지점 또는 통신 규약
구분 인터페이스 종류 설명 예시
하드웨어
인터페이스
USB 범용 직렬 버스, 주변기기 연결 키보드, 마우스, USB 메모리
SATA 저장장치(HDD, SSD) 연결용 인터페이스 SATA SSD, 하드디스크
PCIe 내부 고속 장치 연결을 위한 슬롯형 인터페이스 그래픽카드, NVMe SSD
HDMI 디지털 영상 및 음성 전송 인터페이스 모니터, TV, 프로젝터 연결
Ethernet 유선 네트워크 통신용 인터페이스 LAN 케이블, 공유기, NAS
소프트웨어
인터페이스
API 프로그램과 OS/라이브러리 간 통신을 위한 명령어 집합 Windows API, OpenAI API
CLI 텍스트 기반 명령어 입력 방식 터미널, CMD, Bash
GUI 아이콘, 버튼 등 그래픽 기반 사용자 인터페이스 Windows, macOS, Android
Driver Interface OS와 하드웨어 장치 간의 소프트웨어 연결 프린터 드라이버, 그래픽카드 드라이버
System Call 사용자 프로그램이 커널 기능을 사용할 수 있게 하는
인터페이스
fork(), read(), open() 등 (Linux/UNIX)

 

  • SATA: 내부용 저장장치 기본 인터페이스 (SSD/HDD 연결)
  • eSATA: 외장용 SATA, 빠르지만 전원은 따로
  • SCSI/SAS: 서버급 고속, 다중 연결 저장장치용 고성능 인터페이스

RAID

  • RAID(Redundant Array of Independent Disks) = 여러 개의 하드디스크를 하나처럼 묶어성능 향상 or 데이터 안전성을 확보하는 기술
  • 여러 디스크에 동시에 읽고 쓰기 → 병렬 처리
  • 일부 디스크 고장에도 복구 가능 (중복 저장)
  • 다수의 디스크를 하나처럼 사용 가능
RAID 레벨 구성 방식 속도 안정성 용량 효율 최소 디스크 수 설명
RAID 0 스트라이핑 ★★★
★★
100% 2개 속도 ↑, 백업 없음
RAID 1 미러링 ★★ ★★★
★★
50% 2개 복제 저장, 안정성↑
RAID 3 바이트 단위 스트라이핑 + 전용 패리티 디스크 ★★★ ★★★★ 전체 - 1개 3개 패리티는 전용 디스크 하나에만
저장
연속적 데이터 처리에 유리
(예: 동영상)
RAID 5 블록 단위 스트라이핑
+ 분산 패리티
★★★ ★★★★ 전체 - 1개 3개 패리티를 모든 디스크에 분산 저장, 성능+안정성 균형
RAID 6 블록 스트라이핑
+ 이중 패리티
★★ ★★★
★★
전체 - 2개 4개 2개까지 디스크 고장 허용,
매우 안정적
RAID 10 RAID 1 + RAID 0 ★★★★ ★★★★ 50% 4개 미러링 + 스트라이핑 혼합, 속도+안정성 모두 우수
  • 패리티 = 단순 오류 감지를 위한 1비트 체크. 복구는 안 됨

 

하드디스크 구조

구분 구성 요소 설명 주요 역할
물리적 구조 플래터 (Platter) 자기 물질이 코팅된 회전 디스크 데이터 저장 공간 제공
스핀들 (Spindle) 플래터를 고속으로 회전시키는 축 읽기/쓰기 시 플래터 회전
헤드 (Head) 자기장을 이용해 데이터를 읽고 씀 실제 읽기/쓰기 수행
암 (Arm) 헤드를 원하는 트랙 위치로 이동 헤드의 위치 제어
액추에이터 (Actuator) 암을 정밀하게 조정하는 장치 정확한 위치 결정 및 이동 제어
PCB (회로 기판) HDD 제어 회로 및 인터페이스 담당 SATA, IDE 등으로 컴퓨터와 연결
논리적 구조 섹터 (Sector) 데이터 저장의 최소 단위 (보통 512B or 4KB) 기본 데이터 저장 블록
트랙 (Track) 플래터 위의 원형 경로 동심원 형태로 섹터를 배치
실린더 (Cylinder) 플래터마다 동일 위치의 트랙 집합 헤드 이동 없이 접근 가능한 트랙 묶음
클러스터 (Cluster) 파일 시스템 상의 최소 할당 단위 (섹터 묶음) 파일 저장/관리 단위
  • 디스크 탐색
요소 설명
탐색 시간(Seek Time) 헤드를 원하는 트랙으로 이동하는 데 걸리는 시간
회전 지연(Rotational Latency) 섹터가 헤드 아래로 올 때까지 기다리는 시간
전송 시간(Transfer Time) 데이터 전송 자체에 걸리는 시간

 

알고리즘 설명 특징
FCFS (First-Come, First-Served) 요청 순서대로 처리 구현 쉬움, 비효율 가능성 큼
SSTF (Shortest Seek Time First) 가장 가까운 요청 먼저 평균 응답 속도 좋음, 기아(starvation) 가능
SCAN (전형적 전철) 한 방향 끝까지 갔다가 반대 방향 이동 디스크 엘리베이터 알고리즘
LOOK SCAN과 유사하나, 요청 있는 곳까지만 이동 불필요한 끝 왕복 줄임
C-SCAN (Circular SCAN) 한쪽 방향만 탐색 후 처음으로 되돌아감 요청 처리의 균형성↑
C-LOOK LOOK + C-SCAN 방식 가장 효율적인 방식 중 하나

디스크 트랙 0~199 사이에서
현재 헤드 위치가 100이고
요청: 25, 40, 60, 130, 150, 180 이라고 가정할 때

더보기

FCFS: 요청 순서대로 (많이 이동함)

SSTF: 100 → 130 → 150 → 180 → 60 → 40 → 25

SCAN: 100 → 130 → 150 → 180 → (199) → 60 → 40 → 25

LOOK: 100 → 130 → 150 → 180 → (끝 안 감) → 60 → 40 → 25

C-SCAN: 100 → 130 → 150 → 180 → (199) → (0) → 25 → 40 → 60

평균 회전 지연 시간

  •  예시: 평균 회전 지연 시간 계산
더보기

문제:
디스크 회전 속도가 7,200 RPM일 때, 평균 회전 지연 시간은 얼마일까요?


풀이:

  1. 1분에 7,200번 회전 → 초당 회전수 = 7,200 ÷ 60 = 120 RPS
  2. 평균 회전 지연 시간 = 1 ÷ (2 × 120) 초 = 1 ÷ 240
  3. 계산 결과: 0.00417 초4.17ms

정답:
평균 회전 지연 시간은 약 4.17ms

디스크의 평균 회전 지연 시간은 1회전 시간의 절반
평균 지연 시간(ms) = 60,000 ÷ (2 × RPM) 공식을 기억

 

추가 개념

  • 버스 구조
더보기

데이터 버스: CPU ↔ 메모리 간 데이터 이동通로

주소 버스: 접근할 메모리 주소 지정 (버스 폭 = 주소 가능 크기)

제어 버스: 읽기/쓰기 신호, 클럭 등 제어 신호 전달

 

주소 버스 32비트 → 최대 2³² = 4GB 메모리 주소 가능

  • 부동소수점 표현 (IEEE 754)

 

더보기

32비트 구조: 부호(1) + 지수(8) + 가수(23)

정규화 방식: 가수는 1.xxx 형태로 표현됨

실수 표현 시 정확도 손실 발생 가능

+0과 -0, 무한대(∞), NaN도 표현 가능

 

고정소수점은 소수점 고정 / 부동소수점은 이동 가능

  • FAT vs NTFS (파일 시스템 비교)
항목 FAT32 NTFS
최대 파일 크기 4GB 제한 이론상 16TB 이상
보안 없음 파일 단위 권한 제어 가능
저널링 ✔ (변경 이력 기록 가능)
사용 예 USB, SD카드 Windows 시스템 디스크

 

  • 클러스터 & 단편화

 

더보기

클러스터: OS가 파일을 저장하는 최소 단위 (여러 섹터 묶음)

내부 단편화: 파일보다 클러스터가 커서 남는 공간 낭비됨

외부 단편화: 파일이 디스크 여러 위치에 흩어짐

해결 방법: 조각 모음(Defragmentation)

 

클러스터 크기 클수록 내부 단편화 ↑ / 외부 단편화 ↓