[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/개발상식

Data Storage

inu 2020. 3. 28. 18:02
반응형

컴퓨터의 기본 구성

  • 비트(Bit, Binary Digit) : 0,1로 이루어진 2진수 신호. 비트패턴으로 다양한 정보를 표현할 수 있다.
  • Boolean Operation : 비트 신호를 True / False의 관계로 보고 이를 활용 및 연산할 수 있다. Boolean Operation에는 AND, OR, XOR, NOT 등이 있다.
  • Gate : 이러한 Boolean Operation을 계산하는 장치. 작은 전기 회로로 구성하고, 컴퓨터 생산시 단위가 활용된다. VLSI(Very Large Scale Integration), 즉 초집적회로이다.
  • Flip-flop : Gate로 만든 한 비트를 저장하는 Digital Circuit이다. 한 라인은 1을 저장하고 한 라인은 0을 저장한다. 다양한 방식으로 구성되며, 회로를 보고 어떤 메커니즘으로 이루어지는지 이해할 필요가 있다.

Flip-flop circuit의 예


비트패턴과 메모리

  • Hexadecimal Notation : 비트패턴을 4개씩 잘라서 0~15씩 나눠 표기한 방법이다. 사람이 보기 좋도록 하기 위함이다.
  • 메모리의 기본단위는 cell이며 일반적으로 1바이트이다.
  • 비트패턴 표기 시 최상위의 비트(가장 왼쪽 비트)가 MSB(Most Siginificant Bit)이다.
  • 비트패턴 표기 시 최하위의 비트(가장 오른쪽 비트)가 LSB(Least Siginificant Bit)이다.
  • Address : 메모리 각각의 cell을 식별할 수 있게 하는 고유한 값

메인메모리

  • RAM : 내가 원하는 주소의 cell을 바로 접근 할 수 있는 메모리
  • DRAM : 휘발성 메모리로 이루어진 RAM
  • SRAM : 비휘발성 메모리로 이루어진 RAM

대용량 저장장치 : 휘발성이며 큰 용량을 가진다. 또한 비용이 적게 들고 탈착이 가능하다.

  • Magnetic Disk : 단위시간 당 전송가능한 비트 수를 대역폭(Band Width)이라 한다. 데이터 요청 후 받을 때 까지의 시간을 대기시간이라 부른다.

  • 목표 트랙까지 헤드를 옮기는 시간은 탐색시간이라하며, 목표 데이터까지 회전하는데 걸리는 시간은 회전지연(대기)시간이라고 한다. (보통 평균인 반바퀴 도는 시간으로 계산한다.)

  • 접근시간은 이러한 탐색시간과 회전지연시간을 더한 시간이다. 이렇게 얻은 데이터를 다시 디스크로 보내거나 받아오는 속도를 전송속도라고 한다. (이것이 곧 전송속도, band width와 연관되어 있다.)

  • latency time 은 데이터 전송 요청부터 수신 사이의 총 소요시간으로 정의한다.

  • CD : 순차적으로 트랙이 이어져 있는 마그네틱 디스크

  • Flash drive : Silicon Dioxide (SiO2)를 활용한다. 이에 전자를 가둬두는 원리이다. 많은 변형 시 수명이 단축되어 손상된다.


비트

  • 여러개의 비트가 모여 다양한 정보를 만들어낸다.
  • 텍스트 : ASCII 코드, 7비트로 128가지 문자 -> 확장 : 8비트로 256가지 문자 / 유니코드, 21비트로 대부분의 언어 표기가능
  • 숫자 : 2진수로 구성. overflow나 truncation 등의 오류 발생가능
  • 이미지 : 비트맵, 픽셀 & RGB & 밝기 및 색상 / 벡터, scalable,도형으로 구성
  • 소리 : SamplingTech, 실제오디오를 저장하여 높을 퀄리티 / MIDI, 합성음향으로 악보를 저장

cf. Truncation Error? 이진법에서 제대로 표현할 수 없는 수 혹은 표현가능 값보다 작은 값은 실제 값보다 값이 절삭된다. 이를 Truncation Error라고 한다. 수치해석학적으로 보면 큰 수에 매우 작은 수를 더해도 해당 값을 어떻게 표현하는지에 따라 해당 값이 날아가 버릴 수도 있다.


데이터의 압축

  • 손실압축, 무손실압축
  • RLE (Run Length Encoding) : 같은 문자가 반복되는 것을 줄여서 표기하는 압축 방식 (AAAABBB -> A5B3)
  • 빈도 종속 인코딩 (Haffman 코드) : 통계학적 인코딩. 특정 문자가 자주 나올 경우 해당 문자의 코드는 간결하게, 자주 나오지 않는 문자의 코드는 좀 더 길게 표현하는 방식
  • 상대적 인코딩 (Relative Encoding) : 예측부호화, 값을 이전값과 비교하여 표기 (10 13 12 11 10 -> 10 +3 -1 -1 -1)
  • 사전인코딩(LZW 인코딩같은 적응적 사전인코딩 포함) : 긴 코드를 상징적인 코드로 정리하여 짧게 표현
  • 이미지 압축 : GIF (만화이미지) / JPEG (사진) / TIFF (이미지보관)
  • 음악 / 영상 압축 : MPEG (Moving Picture Expert Group, TV) / MP3(MPEG Audio Layer 3, Temporal Masking, Frequency Masking)

오류 검증

  • 패리티 비트 : 1이 짝수 혹은 홀수가 되도록 맞추는 비트
  • Checkbyte : 특정 수식을 통해 결과값을 확인해준다.
  • Error Correcting Code (FEC code) : 위 두 방식과 다르게 확인을 넘어 오류를 정정할 수 있다. 해밍거리를 활용하여 오류를 정정한다. 알려진 비트패턴에 해당이 되지 않으면 오류로 보고 그 중 해밍거리가 가장 가까운 것(비트의 차이가 적은 것)으로 정정한다.
반응형