열렬히.뛰기

4. 오류 감지 및 수정

운영체제 > part 5 : 저장장치 > 공룡책 11장 : 대용량 저장장치 > 4. 오류 감지 및 수정

저장장치에서 일어날 수 있는 오류

  • DRAM의 비트가 0에서 1로 자발적으로 변경되는 것
  • 전송 중 네트워크 패킷의 내용이 변경되는 것
  • 기록된 시점과 읽은 시점 사이에 변경된 데이터 블록

문제가 생기면 시스템은 오류가 전파되기 전 작업을 중단하거나 오류를 보고, 또는 장치에 경고.

오류 감지 1 : 패리티 비트

고정 길이 워드의 값을 계산, 저장, 비교하기 위해 나머지 연산을 수행하는 체크섬의 한 형태.

  • 메모리 시스템의 각 바이트를 패리티 비트와 연결시킨다.
  • 메모리가 손상되면 패리티 비트가 바뀜.
    • 저장된 패리티 비트와 일치하지 않게 됨
    • 이를 이용해 단일 비트 오류를 잡을 수 있음.
    • 그러나 이중 비트 오류는 감지되지 않을 수 있음.
  • 비트의 XOR을 수행해 쉽게 계산됨.

오류 감지 2 : 순환 중복 검사 (CRC)

해시 함수를 이용해 다중 비트 오류를 검사한다.

오류 감지 3 : 오류 수정 코드 (ECC)

문제를 감지 + 보정까지 같이 해줌.

  • 보정은 알고리즘과 저장장치를 추가로 사용하여 수행
  • 코드는 필요한 추가 저장장치의 양과 보정할 수 있는 오류 갯수에 따라 다름
    • HDD : 섹터별 ECC 사용
    • SSD : 페이지당 ECC 사용

컨트롤러가 일반 I/O 동안 데이터의…

  • 섹터/페이지를 쓸 때 ⇒ ECC는 기록 중인 데이터의 모든 바이트에서 계산된 값으로 기록된다.
  • 섹터/페이지를 읽을 때 ⇒ ECC가 다시 계산 & 저장된 값과 비교.
    • 저장된 숫자와 계산된 숫자가 다르면 데이터가 손상되었을 가능성이 큼.

ECC는 몇 비트가 손상되었는지 변경된 비트를 식별 & 복구 할 수 있게 충분한 정보를 포함.

  • 따라서 오류 보정 방식임.
  • 오류를 처리하고 나면 소프트 오류를 표기.
  • ECC가 처리할 수 없을 정도로 오류가 많으면 하드 오류를 표기

컨트롤러는 섹터/페이지를 읽을 때마다 ECC 처리를 자동으로 수행.