컴퓨터 시스템 계층 구조

  • 컴퓨터 시스템은 여러 계층으로 구성됨
  • 응용 소프트웨어: 사용자와 직접 상호작용
  • 운영체제: 하드웨어 자원 관리 및 응용 소프트웨어 지원
  • 컴퓨터 하드웨어: 물리적인 장치들
    • CPU, 캐시 메모리, RAM 메모리, 디스크, 네트워크 장치, 키보드, 마우스, 디스플레이, 프린터 등

데이터의 저장

비트 (Binary digit)

  • 컴퓨터 안에서 데이터나 정보는 2진수 0과 1의 패턴으로 표현됨 이를 데이터나 정보가 표현되는 기본 단위인 비트로 부름
  • 숫자, 문자(한글, 알파벳, 특수문자), 이미지, 소리 등: 모두 비트 패턴들로 나타냄
  • 비트 패턴 체계: 2진법, 8진법, 16진법, BCD, ASCII, Unicode 등

부울 연산 (Boolean operation)

  • AND, OR, XOR(exclusive-OR) 연산
  • 디지털 회로 설계, 데이터베이스 검색 엔진, 소프트웨어 알고리즘 등에 응용

논리 게이트와 플립플롭

논리 게이트 (logic gate)

부울 연산을 구현하는 전자장치

논리 게이트 진리표 (exclusivearchitecture.com)
    • 트랜지스터(transistor)와 저항으로 구현됨
    • 입력 값 "0"과 "1"은 전압 수준으로 나타냄
    • 디지털 회로를 설계할 때 사용되는 기본 단위임

플립플롭 (flip-flop)

S-R 레치 플립플롭 (exclusivearchitecture.com)
  • 컴퓨터 메모리의 기본 단위, 레지스터(register), 캐시 메모리(SRAM)의 기본 소자
  • 0 또는 1을 출력 값으로 가짐
  • 다른 회로로부터 펄스 신호를 받아 출력 값을 변경하며, 그 전까지는 출력 값을 일정하게 유지하는 회로

주기억장치

  • 주기억장치(memory)에 실행될 코드와 데이터가 저장됨
메모리 계층 구조 (UCLA)
  • 컴퓨터 하드웨어 구성과 기억장치 계층 구조: 레지스터 > 캐시 > 주기억장치 > 보조기억장치 순으로 속도가 빠르고 비트당 비용이 높으며 용량이 작음

메모리 구성

  • 메모리의 기본 단위: 8비트의 묶음인 바이트(byte)
  • 메모리는 바이트 크기 메모리 셀(cell)로 조직됨
    • 상단(high-order end), 하단(low-order end)으로 구분
    • 최상위 비트(MSB: Most Significant Bit), 최하위 비트(LSB: Least Significant Bit)
0   1   0   1   1   0   1   0
↑                           ↑
최상위 비트 (MSB)   최하위 비트 (LSB)
  
  • 주기억장치는 셀을 고유하게 식별함: 주소(address)
    • 주소는 숫자를 사용하며 0부터 시작하는 일련번호임
  • 셀 주소와 셀 안의 비트들에 순서를 부여할 수 있음: 더 큰 단위의 비트 패턴을 저장할 수 있음
  • 메모리 셀 접근(access) 동작: 읽기 연산 / 쓰기 연산

RAM (Random Access Memory)

  • 필요한 셀에 임의의 순서로/독립적으로 접근할 수 있으며, 각 셀에 접근하는 데 걸리는 시간은 동일함 (Random Access)
  • 종류: DRAM(Dynamic RAM), SDRAM(Synchronous DRAM)

메모리 용량 단위

단위 바이트(2n) 바이트(10n)
킬로바이트 (KB) 210 바이트 103 바이트
메가바이트 (MB) 220 바이트 106 바이트
기가바이트 (GB) 230 바이트 109 바이트
테라바이트 (TB) 240 바이트 1012 바이트
페타바이트 (PB) 250 바이트 1015 바이트
엑사바이트 (EB) 260 바이트 1018 바이트
제타바이트 (ZB) 270 바이트 1021 바이트

보조기억장치

  • 비휘발성(non-volatile) 저장장치임 (전원이 꺼져도 내용 유지)
  • 저장 비용이 적음
  • 컴퓨터에서 분리하여 보관할 수 있음
  • 하드 디스크(HDD), 자기 테이프, CD, 플래시 메모리(SSD) 등

하드 디스크 (hard disk)

하드디스크 구성 (UCLA)
  • 트랙(track): 데이터가 저장되는 플래터 표면상의 동심원
  • 섹터(sector): 트랙을 일정한 크기로 나눈 것
    • 디스크에 데이터를 한 번에 읽고/쓰는 최소의 단위
  • 실린더(cylinder): 모든 플래터 표면상의 동일한 위치에 있는 동심원

디스크 성능 측정 매개변수

하드디스크 성능 매개변수 (UCLA)
  • 탐색 시간(seek time): 헤드를 액세스할 데이터가 저장된 트랙으로 이동시키는 데 걸리는 시간
  • 회전 지연 시간(rotation latency time): 헤드를 해당 트랙에 위치시킨 후 디스크가 회전하여 원하는 섹터가 헤드 아래에 위치하는 데 걸리는 시간 (한 바퀴 도는 시간의 1/2)
  • 데이터 전송 시간(data transfer time): 헤더가 액세스한 데이터를 전송하는 데 걸리는 시간
  • 대역폭(bandwidth): 단위 시간 동안 전송될 수 있는 총 비트 수

디스크 포맷

구분512바이트 섹터4096바이트 섹터
Gap, sync, address mark15바이트15바이트
사용자 데이터512바이트4096바이트
ECC50바이트100바이트
총바이트 수577바이트4211바이트
효율88.7%97.3%

플래시 메모리

전기적으로 데이터를 기록하고 지울 수 있는 비휘발성 기억장치

  • SSD(Solid State Drive) 등으로 사용됨
  • 페이지 단위 쓰기, 블록 단위 지우기 특성 가짐

플래시 메모리 타입 및 특성 비교

구분NAND 타입NOR 타입
용도USB, SSD 등 저장 매체RAM처럼 실행 가능한 코드 저장
읽기블록 단위 임의적 액세스 가능. 느림셀 단위 임의적 액세스 가능. 빠름
쓰기한 번에 한 블록을 기록함. 빠름한 셀씩 기록하여 느림
밀도고밀도저밀도
가격저가고가

비트 패턴을 이용한 정보의 표현

  • 데이터(data): 관찰이나 측정을 통해 수집한 사실이나 숫자
    • 맥락 없이 단순히 나열된 값
    • 예: 23, 45, 67
  • 정보(information): 데이터를 처리하고 해석하여 유용한 의미나 지식을 제공하는 것
    • 데이터에 맥락, 관련성 및 목적을 부여하여 의사 결정을 도움
    • 예: "학생의 평균 점수는 45이다"

데이터와 정보의 예시

  • 데이터: 월요일: 20 °C, 화요일: 22 °C, 수요일: 21 °C, 목요일: 23 °C ... (측정된 값 나열)
  • 정보: 평균 기온, 기온 변화 패턴, 최고 기온과 최저 기온, 이후 경향 등 (해석된 의미)

텍스트 표현

  • 텍스트 표현 원리: 텍스트상의 상이한 문자 각각에 고유한 비트 패턴(코드, code)을 지정함
ASCII TABLE (UCLA)
  • 국제 표준 코딩 체계(ANSI, ISO): 다양한 언어의 표현, 통신에서 발생하는 문제 해결
    • ASCII(American Standard Code for Information Interchange): 1 byte (영문, 숫자, 기호 등)
    • 유니코드(Unicode): 일반적으로 2 byte (전 세계 대부분의 문자 표현 가능)
      • 'A': U+0041, '가': U+AC00
    • UTF-8(Unicode Transformation Format 8-bit): 1~4 byte (가변 길이 인코딩, ASCII와 호환)
  • 텍스트 파일(.txt): ASCII나 Unicode를 사용하여 인코딩된 기호들로 구성된 파일
  • 워드프로세서 파일(.docx, .hwpx): 문자별 코드, 폰트 변경, 서식, 열 맞춤 정보 등 추가적 구조를 포함

숫자 표현

  • 숫자 표현 원리: 2진법, 16진법을 사용하여 표현함
  • 16비트에 ASCII 코드로 표현할 수 있는 10진 숫자의 범위: 0 ~ 99 (문자 '0'부터 '9'까지 각각 표현)
  • 16비트에 2진수로 표현할 수 있는 10진 양수의 범위: 0 ~ 65,535 $(2^{16} - 1)$

이미지 표현

  • 비트맵(bitmap) 기법: 이미지를 픽셀(pixel)들의 집합으로 표현하는 방식
    • 컬러 이미지: RGB(Red, Green, Blue) 컬러 모델을 기반으로 이미지 저장
      • 각 픽셀(pixel)은 RGB의 조합(8*3=24bit, 약 16.7백만 가지 색상)으로 표현됨
      • 사진과 같은 화려한 색상과 유연한 그림에 적합
    • 이미지 파일 포맷: JPEG, PNG, GIF, BMP, TIFF 등
  • 벡터(vector) 기법: 이미지의 특성을 명령어의 집합으로 표현하는 방식
    • 수학적인 형태로 모델화되어 있어서 크기, 조절, 회전, 선의 굵기, 색상 등의 특성을 쉽게 변경시킬 수 있음
    • 이미지를 확대하거나 축소해도 화질이 훼손되지 않음 (해상도 독립적)
    • 예: TrueType(폰트), PostScript(그래픽)

소리 표현

  • 소리 표현 원리: 일정 간격으로 소리 파동의 진폭 샘플을 추출하여 얻은 일련의 값을 인코딩함
연속적인 소리파동 → 샘플화 → 양자화 → 부호화
  
  • 실제 오디오를 표현하는 샘플링 기법: 초당 샘플수 (samples/sec)
    • 장거리 전화: 8,000 samples/sec
    • CD 음악: 44,100 samples/sec
  • CD 음악 초당 요구되는 비트수:
    • 한 샘플을 16비트로 인코딩: 44,100 * 16 bits = 705,600 bits/sec = 88,200 바이트 필요
    • 한 샘플을 32비트(스테레오의 경우)로 인코딩: 44,100 * 32 bits * 2 channels = 2,822,400 bits/sec = 352,800 바이트 필요

2진 체계

  • 숫자의 값이 자릿수에 따라 위치 가중치를 가짐
  • 표현: $a_n a_{n-1} \dots a_1 a_0 . a_{-1} a_{-2} \dots a_{-m}$
  • 해석: $a_n,r^n + a_{n-1},r^{n-1} + \cdots + a_0,r^0 + a_{-1},r^{-1} + \cdots + a_{-m},r^{-m}$
    • $a_i$는 위치 계수: 0 ~ r-1
    • $r$은 기수(base): 예) 2, 10, 16
    • $n$은 위치값 (정수부): 0, 1, 2, ...
    • $-m$은 위치값 (소수부): -1, -2, ...

예시: $(1011)_r$

  • r=2인 경우: 2진법(binary decimal notation)
    • $(1011)_2 = 1\cdot2^3 + 0\cdot2^2 + 1\cdot2^1 + 1\cdot2^0$
  • r=10인 경우: 10진법(ten decimal notation)
    • $(1011)_{10} = 1\cdot10^3 + 0\cdot10^2 + 1\cdot10^1 + 1\cdot10^0$
  • r=16인 경우: 16진법(hexa decimal notation)
    • $(1011)_{16} = 1\cdot16^3 + 0\cdot16^2 + 1\cdot16^1 + 1\cdot16^0$

2진법 (binary number)

기수(base)가 2인 숫자 체계

  • 2진수로 8비트에 저장할 수 있는 자연수의 범위: 0 ~ 255
  • (00000000)₂ ~ (11111111)₂ → (0 ~ 255)$_{10}$
  • 2진수로 n개 비트로 표현할 수 있는 자연수의 범위: $0\sim2^n - 1$

십진법 13의 2진법 표현을 구하는 알고리즘: (나눗셈 이용)

  • 단계 1: 주어진 십진수 값을 2로 나누고 나머지를 기록한다.
  • 단계 2: 단계 1의 몫이 0이 아니면, 이 몫을 2로 나누고 그 나머지를 기록하는 작업을 계속한다.
  • 단계 3: 단계 1의 몫이 0이 되면, 나머지들을 기록된 순서대로 오른쪽에서 왼쪽으로 나열하면 십진 값의 2진법 표현을 얻는다.
    • 13 / 2 = 6 ... 1
      • 6 / 2 = 3 ... 0
      • 3 / 2 = 1 ... 1
      • 1 / 2 = 0 ... 1
      • 결과: 1101₂

16진법 (hexadecimal)

기수(base)가 16인 숫자 체계

  • 긴 비트 열 (비트 스트림: stream)을 사람이 다루기 쉽지 않음
  • 16진법은 4비트 패턴의 표시에 기호 하나를 사용하는 표기법
  • 예) 0xB53
    • (0~15)$_{10}$ 숫자를 2진수 4자리, 16진수 1자리로 표현 (0~9는 숫자, 10~15는 A~F)

2진수를 16진수로 표현하는 알고리즘

  • 2진수 비트 열을 소수점 기준으로 4개씩 묶는다.
  • 소수점 왼쪽(정수부): 오른쪽부터 4개씩 묶고, 마지막 묶음의 비트가 부족하면 왼쪽에 0을 채운다.
  • 소수점 오른쪽(소수부): 왼쪽부터 4개씩 묶고, 마지막 묶음의 비트가 부족하면 오른쪽에 0을 채운다.
  • 각 4비트 묶음을 해당하는 16진수 기호로 변환한다.
    • 예: 10110001101011.1111001
      • 정수부: 10 | 1100 | 0110 | 1011 → 2 | C | 6 | B
      • 소수부: 1111 | 0010 (뒤에 0 세 개 채움) → F | 2
      • 결과: 2C6B.F2$_{16}$

2진 덧셈

2진수 덧셈 법칙:

    • 0 + 0 = 0
    • 0 + 1 = 1
    • 1 + 0 = 1
    • 1 + 1 = 0 (올림수 1 발생)
  • 전가산기(full adder): 2개의 입력 비트와 하나의 올림 비트를 입력 받아 합 비트와 올림 비트를 계산하는 회로

분수의 2진법 표현

  • 2진수 101.101의 해석: 위치 가중치 이용
  • $1\cdot2^2 + 0\cdot2^1 + 1\cdot2^0 + 1\cdot2^{-1} + 0\cdot2^{-2} + 1\cdot2^{-3}$
  • $4 + 0 + 1 + \frac12 + 0 + \frac18 = 5\frac58$

정수의 저장

부호를 가진 정수(integer) 값을 비트 패턴으로 표현하는 방식

  • 부호화 절대값(signed-magnitude) 표기법: 가장 왼쪽 비트는 부호 비트(0: 양수, 1: 음수), 나머지 비트는 절대값 표현
    • 부호화된 (r-1)의 보수(signed (r-1)'s complement) 표기법
    • 부호화된 r의 보수(signed r's complement) 표기법: 2의 보수(two's complement)가 대표적 (r=2)
    • 초과(excess) 표기법 (excess notation)

정수를 저장하기 위한 기억장소 구조

  • MSB(Most Significant Bit) 위치에 부호 비트 할당하고 나머지 비트에 데이터(값) 저장
    • 양수: 부호 비트 0 | 음수: 부호 비트 1

r의 보수 표기법

  • 정의: 정수 부분이 n 자릿수로 되어 있고 밑수가 r인 양수 N이 있을 때, N의 r의 보수는 r^n - N (N≠0일 때) 또는 0 (N=0일 때)로 정의됨
  • (101100)₂ 2의 보수:
    • 간편 계산법: 2진수에서 오른쪽부터 처음 1이 나올 때까지는 그대로 두고, 그 왼쪽 비트들은 모두 반전시킨다.
    • (101100)₂ → 오른쪽 00 그대로 → 첫 1 그대로 → 왼쪽 101 반전 → 010
    • 결과: 010100₂
    • 또 다른 간편 계산법: 1의 보수를 구하고 1을 더한다. (1의 보수는 모든 비트 반전)
    • (101100)₂ 의 1의 보수: (010011)₂
    • 1의 보수 + 1: (010011)₂ + (1)₂ = (010100)
💡
2의 보수 표기법에서 1을 더하는 이유
1의 보수 체계에서는 +0 00000000 과 -0 11111111 이 서로 다른 비트 패턴으로 존재한다. 이는 효율이지 못하기에 2의 보수 체계에서는 0을 단 하나의 비트패턴 00000000 으로만 표현할 수 있도록 만들었다. 덕분에 -1 11111111 에 1을 더하면 자리 올림이 발생해 0 00000000이 되도록 구현해 한자리를 더 표현할 수 있다.
덕분에 자리 올림 이후에 추가적인 계산과정을 거칠 필요도 없고 오버플로 확인에도 용이해졌다.

2의 보수에 의한 뺄셈 알고리즘 (M - N 계산):

  • 1단계: 피감수 M에 감수 N의 2의 보수를 더한다. (M + (N의 2의 보수))
  • 2단계: 위의 결과를 끝자리(가장 왼쪽 비트 넘어가는 올림수) 올림수에 관해 조사한다.
    • (1) 끝자리 올림수가 있으면 올림수를 무시한다. (결과가 양수) (자체로 10진수)
    • (2) 끝자리 올림수가 생기지 않았다면 단계 1에서 얻은 결과를 다시 2의 보수로 취하고 앞에 음의 부호를 붙인다. (결과가 음수) (10진수로 변환하는 과정을 거쳐야함!)

오버플로(overflow) 문제

  • 정의: 주어진 비트 수에 저장할 수 있는 값의 범위 밖의 값을 저장하고자 시도할 때 발생하는 오류
  • 발생 조건: 두 양수끼리 더했을 때 부호가 음수가 되거나, 두 음수끼리 더했을 때 부호가 양수가 되면 발생함. 즉, 불가능한 자리 올림이 발생했을 경우에 발생한다.
  • n비트에서 2의 보수 표현으로 저장할 수 있는 정수 범위: $-2^{(n-1)} \sim 2^{(n-1)} - 1$
  • 오버플로 예:
    • 8비트 2의 보수 범위: -128 ~ 127
      • (01000110)₂ + (01010000)₂ = (10010110)₂ → 양수(70) + 양수(80) = 음수(-106) → 오버플로
      • (10111010)₂ + (10110000)₂ = (01101010)₂ → 음수(-70) + 음수(-80) = 양수(106) → 오버플로

초과(excess) 표기법

  • 정의: 8421 코드에 x값 (초과 값)을 더한 값을 0으로 한 다음, 2진법으로 세어나갈 때 나타나는 순서대로 모든 비트 패턴을 나열하는 표기법
    • 초과 값(x): $2^{(n-1)} - 1$ 또는 2$^{(n-1)}$ 등 다양하게 사용 가능
  • 4비트에서 8초과 표기법: 초과 값 x=8 ($2^{(4-1)} = 2^3$)
    • 비트 패턴 (표현 값) = 십진수 값 - 8
      • 1111 (15): 15-8 = 7
      • 1110 (14): 14-8 = 6
      • ...
      • 1000 (8): 8-8 = 0
      • ...
      • 0000 (0): 0-8 = -8
  • 특징: 가장 작은 비트 패턴(0000)이 가장 작은 수(-8)를 나타내고, 가장 큰 비트 패턴(1111)이 가장 큰 수(7)를 나타낸다. 부호화 절대값이나 2의 보수와 달리 비트 패턴의 크기 순서와 값의 크기 순서가 일치한다.

소수(fraction)의 표현

소수점 이하 값이 있는 숫자 표현

  • 8비트 고정소수점(fixed-point) 표기법: 전체 비트 중 일부를 정수부, 나머지를 소수부로 미리 고정하여 나누는 방식
    • 예) 8비트에서 4비트는 정수부, 4비트는 소수부 (가상 소수점)
      • 10.11$_{10}$ 표현 시 (가상 소수점 위치에 따라)
        • 정수부 4비트, 소수부 4비트: 정수부 10 (1010₂), 소수부 0.11 (0.11₂ = 0.5 + 0.25 = 0.75)
          • 1010.1100 (나머지 비트는 0으로 채움)
      • 단점: 아주 큰 수나 아주 작은 수를 표현하기 위해 많은 비트가 필요함 (표현 범위가 좁음)

부동소수점(floating-point) 표기법

  • 지수 표기를 위해 초과(excess) 표기법 사용
  • 8비트 구조 예: (부호 비트 1) (지수 3비트, 4초과 표기) (유효숫자/가수 4비트)
    • 실수 0 저장: 모든 비트를 0으로 설정
    • 실수 10.11 저장:
    • 십진수 2.75를 이진수로 변환
      • 2.75(십진수) → 10.11(이진수)
      • 정규형(normalized form)으로 변환: 0.1011 x $2^2$ (소수점을 가장 왼쪽 1의 오른쪽으로 이동, 여기서는 왼쪽으로 두칸 갔으므로 지수는 +2)
      • 부호: 양수 (0)
      • 지수: +2, 4초과 표기법 (3비트) 사용 시 2+4=6 → 110₂
      • 유효숫자(가수): 정규화된 형태 0.1011 에서 소수점 이하 부분 (1011)
      • 8비트 표현 (부호 1, 지수 3, 가수 4) 예: 0 | 110 | 1011
      • 지수 표현할때 유효숫자가 원본이 되기 위해 지수가 얼마나 필요한지를 생각해야함
    • 부동소수점 읽기:
    • 비트 패턴 분석 → 부호, 지수 (초과값 빼기), 가수 추출
      • 지수와 가수를 이용하여 원래 값 계산 (가수에 소수점 붙이고 2^(지수) 곱함)
      • 예: 01101011 ( 0 | 110 | 1011)
      • 부호: 0 (양수)
      • 지수: (110)₂ - 4 (초과값) = 6 - 4 = +2
      • 소수(가수): 0.1011₂
      • 저장된 값: 0.1011₂ x 2² = 10.11₂ = 2 + 0.5 + 0.25 = 2.75$_{10}$
    • 정규형으로 변환하는 이유:
      • 유한한 비트수에서 더 많은 값을 저장해서 최대 정밀도를 높일 수 있음
💡
방향 헷갈림 방지
‑ 숫자를 저장 할 때는 소수점을 왼쪽으로 옮긴 칸 수를 그대로 “+ 지수”로 적어둔다.(오른쪽이면 −지수).
‑ 나중에 값을 읽을 때는 그 지수만큼 2를 곱해서 소수점을 원래 자리로 돌려놓는다.
(예: 왼쪽으로 2칸 옮겼다면 지수 +2, 계산할 때는 2²를 곱해 소수점을 오른쪽으로 2칸 되돌림)

통신 오류

데이터 전송/저장 중 비트 패턴이 변경되는 현상

  • 오류 발생 시점:
    • 컴퓨터 내부에서 장치들 간 데이터 전송 시
    • 컴퓨터 저장장치에 저장되어 있는 동안
    • 컴퓨터에서 외부 장치로 데이터 전송 시
  • 원인: 노이즈, 전자파, 먼지 등 외부 요인
  • 해결책: 오류의 탐지/정정을 제공할 수 있는 인코딩 기법 필요

패리티 비트(parity bit)

데이터에 추가적인 비트(패리티 비트)를 사용하여 오류를 탐지하는 방법

  • 작동 원리
      1. 데이터의 비트 패턴 안의 1의 개수를 홀수(odd parity) 또는 짝수(even parity) 개가 되도록 패리티 비트를 조작하여 추가함
      1. 전송 후 1의 개수가 약속된 규칙(짝수/홀수)과 다르게 발견될 경우 오류 발생으로 판단함

홀수 패리티(odd parity) 인코딩 체계 예:

  • ASCII A (01000001): 1의 개수 2개 (짝수) → 패리티 비트 1 추가 → 1 | 01000001 (전체 1의 개수 3개, 홀수)
  • ASCII F (01000110): 1의 개수 3개 (홀수) → 패리티 비트 0 추가 → 0 | 01000110 (전체 1의 개수 3개, 홀수)
  • 전송된 패턴의 1의 개수를 세어 홀수이면 오류 없음, 짝수이면 오류 발생으로 판단

패리티 비트 사용의 한계:

  • 패리티 비트 패턴에서 짝수 개의 비트 오류가 발생하면 탐지하지 못함
    • 예) 111000101 (pb=1, 홀수 패리티)
      • 1비트 오류 (1→0): 101000101 (1의 개수 3개, 홀수) → 오류 검출 가능
      • 2비트 오류 (1→0, 1→0): 110000001 (1의 개수 3개, 홀수) → 오류 검출 불가
      • 3비트 오류 (1→0, 1→0, 0→1): 101100100 (1의 개수 4개, 짝수) → 오류 검출 가능

CRC (Cyclic Redundancy Check)

  • 전송되는 데이터에 특정 다항식을 나누어 나머지(CRC 값)를 생성하여 오류를 탐지
  • 패리티 비트보다 신뢰도가 높으며 네트워크 통신 및 하드 디스크에서 널리 사용됨

체크섬 (Checksum)

  • 데이터 블록의 모든 비트를 덧셈하여 합계를 기록하고, 수신 측에서 이를 비교하여 오류를 검출하는 방식
  • 간단한 방식으로 네트워크 프로토콜(TCP/IP 등)에서 자주 사용됨

해밍 코드 (Hamming Code)

  • 데이터 전송 과정에서 발생한 오류를 검출하고, 동시에 일부 오류를 자동으로 복구(정정)할 수 있는 방식
  • 대표적으로 해밍(7,4) 코드가 있으며, 4비트의 데이터에 3비트의 정정용 비트를 추가하여 1비트 오류를 정정함
방식특징오류 검출오류 정정활용 예
패리티 비트간단한 구현가능(제한적)불가능RAM
CRC높은 신뢰성가능(강력)불가능네트워크, HDD
체크섬계산이 간편함가능(중간)불가능TCP/IP
해밍 코드오류 정정 가능가능가능RAM, 통신

레퍼런스

“이 글은 『컴퓨터 과학 총론』(Brookshear & Brylow, 2019)의 내용을 토대로 재구성된 자료입니다.”​
ƎXCLUSIVE ARCHITECTURE
Operating Systems: Mass-Storage Structure

💻 이 글은 컴퓨터시스템개론 시리즈의 일부입니다.

다음글: 데이터의 조작