파일 압축 작동 방식

Jan 18 2001
압축 프로그램은 몇 초 만에 파일 크기의 50~95%를 제거할 수 있지만 파일을 열면 데이터가 그대로 있습니다! 압축 알고리즘이 데이터를 죽이지 않고 바이트를 줄이는 방법을 알아보십시오.
파일을 압축해야 합니까? Sturti / 게티 이미지

인터넷에서 많은 프로그램과 파일을 다운로드하는 경우 이전에 ZIP 파일을 접했을 것입니다. 이 압축 시스템은 파일 의 전체 비트 및 바이트 수를 줄여 느린 인터넷 연결을 통해 더 빠르게 전송하거나 디스크 공간을 덜 차지할 수 있기 때문에 특히 웹 사용자에게 매우 편리한 발명품 입니다. 파일을 다운로드하면 컴퓨터에서 WinZip 또는 Stuffit 과 같은 프로그램을 사용 하여 파일을 다시 원래 크기로 확장합니다. 모든 것이 올바르게 작동하면 확장된 파일은 압축되기 전의 원본 파일과 동일합니다.

언뜻보기에 이것은 매우 신비해 보입니다. 어떻게 비트와 바이트 수를 줄이고 정확한 비트와 바이트를 나중에 다시 추가할 수 있습니까? 결과적으로 프로세스 이면의 기본 아이디어는 매우 간단합니다. 이 기사에서는 기본 압축 프로세스를 통해 매우 작은 파일을 가져오는 이 간단한 방법을 살펴보겠습니다.

대부분의 컴퓨터 파일 유형은 상당히 중복됩니다. 동일한 정보가 계속해서 나열됩니다. 파일 압축 프로그램은 단순히 중복성을 제거합니다. 정보를 계속해서 나열하는 대신 파일 압축 프로그램은 해당 정보를 한 번 나열한 다음 원래 프로그램에 나타날 때마다 다시 참조합니다.

예를 들어, 우리 모두에게 친숙한 정보 유형인 단어를 살펴보겠습니다.

존 F. 케네디는 1961년 취임사에서 다음과 같은 유명한 대사를 남겼습니다.

"당신의 나라가 무엇을 할 수 있는지 묻지 말고 당신이 나라를 위해 무엇을 할 수 있는지 물어보십시오."

인용문은 61개의 글자, 16개의 공백, 하나의 대시 및 하나의 마침표로 구성된 17개의 단어로 구성됩니다. 각 문자, 공백 또는 문장 부호가 메모리 1단위를 차지하는 경우 총 파일 크기는 79단위입니다. 파일 크기를 줄이려면 중복 항목을 찾아야 합니다.

즉시 우리는 다음과 같은 사실을 알게 됩니다.

  • "묻다"가 두 번 나타납니다.
  • "what"이 두 번 나타납니다.
  • "your"가 두 번 나타납니다.
  • "country"가 두 번 나타납니다.
  • "can"이 두 번 나타납니다.
  • "do"가 두 번 나타납니다.
  • "for"가 두 번 나타납니다.
  • "너"가 두 번 나타납니다.

대문자와 소문자의 차이를 무시하면 구의 약 절반이 중복됩니다. 9개의 단어 - Ask, not, what, your, country, can, do, for, you - 전체 견적에 필요한 거의 모든 것을 제공합니다. 구의 후반부를 구성하기 위해 전반부에 있는 단어를 가리키고 공백과 구두점을 채우면 됩니다.

파일 압축 시스템이 중복성을 처리하는 방법은 다음 섹션에서 더 자세히 살펴보겠습니다.

내용물
  1. 중복 및 알고리즘
  2. 패턴 검색
  3. 손실 및 무손실 압축

중복 및 알고리즘

대부분의 압축 프로그램은 LZ 적응 사전 기반 알고리즘 의 변형을 사용하여 파일을 축소합니다. "LZ"는 알고리즘의 작성자인 Lempel과 Ziv 를 나타내고 "사전"은 데이터 조각을 목록화 하는 방법을 나타냅니다 .

사전을 배열하는 시스템은 다양하지만 번호가 매겨진 목록처럼 간단할 수 있습니다. 케네디의 명언을 훑어볼 때 반복되는 단어를 골라 번호표에 넣습니다. 그런 다음 전체 단어를 쓰는 대신 단순히 숫자를 씁니다.

이것이 우리의 사전이라면:

  1. 물어보기
  2. 뭐라고 요
  3. 당신의
  4. 국가
  5. ~ 할 수있다
  6. ~을위한

우리 문장은 이제  "1 not 2 3 4 5 6 7 8 -- 1 2 8 5 6 7 3 4"입니다.

체계만 알면 이 사전과 숫자 패턴만 있으면 쉽게 원문을 재구성할 수 있습니다. 다운로드한 파일을 확장할 때 컴퓨터 의 확장 프로그램이 수행하는 작업입니다 . 스스로 열리는 압축 파일을 접했을 수도 있습니다. 이러한 종류의 파일을 생성하기 위해 프로그래머는 압축 파일과 함께 간단한 확장 프로그램을 포함합니다. 다운로드되면 원본 파일을 자동으로 재구성합니다.

그러나 이 시스템으로 실제로 얼마나 많은 공간을 절약할 수 있었습니까? "1이 아닌 2 3 4 5 6 7 8 -- 1 2 8 5 6 7 3 4"는 "당신의 국가가 당신을 위해 무엇을 해줄 수 있는지 묻지 말고 당신이 당신의 국가를 위해 무엇을 할 수 있는지 물어보세요."보다 확실히 짧습니다. 그러나 파일과 함께 사전 자체저장 해야 함을 명심 하십시오 .

실제 압축 방식에서는 다양한 파일 요구 사항을 파악하는 것이 상당히 복잡합니다. 그러나 우리의 목적을 위해 모든 문자와 모든 공간이 하나의 메모리 단위를 차지한다는 아이디어로 돌아가 보겠습니다. 우리는 이미 전체 구문이 79단위를 차지하는 것을 보았습니다. 압축된 문장(공백 포함)은 37단위를 차지하며 사전(단어와 숫자)도 37단위를 차지합니다. 이것은 우리에게 74의 파일 크기를 제공하므로 파일 크기를 많이 줄이지 않았습니다.

하지만 이것은 한 문장일 뿐입니다! 압축 프로그램이 케네디의 나머지 연설을 통해 작동했다면 이 단어와 다른 단어가 더 많이 반복되는 것을 발견할 것이라고 상상할 수 있습니다. 그리고 다음 섹션에서 볼 수 있듯이 가능한 가장 효율적인 구성을 위해 사전을 다시 작성해야 합니다.

패턴 검색

이전 예에서 우리는 반복되는 모든 단어를 골라 사전에 넣었습니다. 우리에게 이것은 사전을 작성하는 가장 확실한 방법입니다. 그러나 압축 프로그램은 이를 완전히 다르게 봅니다. 별도의 단어에 대한 개념이 없고 패턴만 찾습니다. 그리고 파일 크기를 최대한 줄이기 위해 사전에 어떤 패턴을 포함할지 신중하게 선택합니다.

이러한 관점에서 구에 접근하면 완전히 다른 사전이 됩니다.

압축 프로그램이 케네디의 문구를 스캔하면 처음으로 나타나는 중복 항목은 몇 글자에 불과합니다. "무엇을 네게 묻지 말지"에는 "not"과 "what"에 공백이 오는 문자 "t"가 반복되는 패턴이 있습니다. 압축 프로그램이 이것을 사전에 기록했다면 "t" 다음에 공백이 올 때마다 "1"을 쓸 수 있습니다. 그러나 이 짧은 문구에서 이 패턴은 가치 있는 항목이 될 만큼 충분히 발생하지 않으므로 프로그램은 결국 이를 덮어씁니다.

프로그램이 다음으로 알아차릴 수 있는 것은 "귀하의"와 "국가"에 모두 나타나는 "ou"입니다. 이것이 더 긴 문서라면 이 패턴을 사전에 작성하면 많은 공간을 절약할 수 있습니다. "ou"는 영어에서 상당히 흔한 조합입니다. 그러나 압축 프로그램이 이 문장을 통해 작업하면서 사전 항목에 대한 더 나은 선택을 빠르게 발견할 것입니다. "ou"가 반복될 뿐만 아니라 전체 단어 "your"와 "country"가 모두 반복되고 실제로 반복됩니다. 함께 "당신의 나라"라는 문구로. 이 경우 프로그램은 "ou"에 대한 사전 항목을 "귀하의 국가"에 대한 항목으로 덮어씁니다.

"can do for"라는 문구도 한 번 뒤에 "your"가 오고 한 번 뒤에 "you"가 오기 때문에 "can do for you"의 반복 패턴을 제공합니다. 이렇게 하면 하나의 숫자 값으로 15자(공백 포함)를 쓸 수 있는 반면 "귀하의 국가"는 하나의 숫자 값으로 13자(공백 포함)만 쓸 수 있으므로 프로그램은 "귀하의 국가" 항목을 "r 국가"를 입력한 다음 "can do for you"에 대해 별도의 항목을 작성합니다. 프로그램은 이러한 방식으로 진행되어 반복되는 모든 정보 비트를 선택한 다음 사전에 써야 할 패턴을 계산합니다. 사전을 다시 작성하는 이 기능은 LZ 적응형 사전 기반 알고리즘 의 "적응형" 부분입니다 .프로그램이 실제로 이 작업을 수행하는 방식은 에 대한 토론에서 볼 수 있듯이 상당히 복잡합니다.데이터 압축.com .

어떤 특정 방법을 사용하든 이 심층 검색 시스템을 사용하면 단어를 선택하는 것보다 훨씬 효율적으로 파일을 압축할 수 있습니다. 위에서 선택한 패턴을 사용하고 공백에 "__"를 추가하면 다음과 같은 더 큰 사전이 생성됩니다.

  1. 물어보기__
  2. 뭐라고 요__
  3. 국가
  4. __당신을 위해__할 수 있습니다__ 

그리고 이 작은 문장: "1not__2345__--__12354"

문장은 이제 18단위의 메모리를 사용하고 사전은 41단위를 사용합니다. 그래서 총 파일 크기를 79단위에서 59단위로 압축했습니다! 이것은 구문을 압축하는 한 가지 방법일 뿐이며 반드시 가장 효율적인 것은 아닙니다. (더 나은 방법을 찾을 수 있는지 확인하십시오!)

그렇다면 이 시스템은 얼마나 좋은가? 파일의 감소 비율은 파일 형식, 파일 크기와 압축 방식 등과 같은 다양한 요인에 따라 달라집니다.

세계의 대부분의 언어에서 특정 문자와 단어는 종종 같은 패턴으로 함께 나타납니다. 이러한 높은 중복성 때문에 텍스트 파일은 매우 잘 압축됩니다. 적절한 크기의 텍스트 파일의 경우 일반적으로 50% 이상 축소됩니다. 대부분의 프로그래밍 언어 는 상대적으로 적은 수의 명령 모음을 사용하기 때문에 매우 중복됩니다. 그래픽이나 MP3 파일 과 같이 고유한 정보가 많이 포함된 파일은 많은 패턴을 반복하지 않기 때문에 이 시스템으로 많이 압축할 수 없습니다(다음 섹션에서 자세히 설명).

파일에 반복되는 패턴이 많은 경우 일반적으로 파일 크기에 따라 축소 비율이 증가합니다. 우리의 예를 보면 이것을 알 수 있습니다. 케네디의 연설이 더 많았다면 사전에 있는 패턴을 더 자주 참조할 수 있었고 각 항목의 파일 공간을 더 많이 활용할 수 있었을 것입니다. 또한 더 긴 작업에서 더 널리 퍼진 패턴이 나타날 수 있으므로 더 효율적인 사전을 만들 수 있습니다.

이 효율성은 또한 압축 프로그램에서 사용 하는 특정 알고리즘 에 따라 다릅니다 . 일부 프로그램은 특정 유형의 파일에서 패턴을 선택하는 데 특히 적합하므로 더 간결하게 압축할 수 있습니다. 다른 것들은 사전 내에 사전을 가지고 있는데, 이는 더 큰 파일에 대해서는 효율적으로 압축할 수 있지만 더 작은 파일에는 압축할 수 없습니다. 이러한 종류의 모든 압축 프로그램은 동일한 기본 아이디어로 작동하지만 실제로 실행 방식에는 상당한 차이가 있습니다. 프로그래머는 항상 더 나은 시스템을 구축하기 위해 노력하고 있습니다.

손실 및 무손실 압축

여기에서 논의한 압축 유형은 원본 파일을 정확하게 다시 만들 수 있기 때문에 무손실 압축 이라고 합니다. 모든 무손실 압축은 파일을 전송 또는 저장을 위해 "더 작은" 형식으로 나눈 다음 다시 사용할 수 있도록 다른 쪽 끝에서 다시 합친다는 아이디어를 기반으로 합니다.

손실 압축 은 매우 다르게 작동합니다. 이 프로그램은 단순히 "불필요한" 정보를 제거하고 파일을 더 작게 조정합니다. 이러한 유형의 압축은 상당히 부피가 큰 경향이 있는 비트맵 그림의 파일 크기를 줄이는 데 많이 사용됩니다. 이것이 어떻게 작동하는지 보기 위해 컴퓨터가 스캔한 사진을 압축하는 방법을 고려해 보겠습니다 .

무손실 압축 프로그램은 이러한 유형의 파일로 많은 작업을 수행할 수 없습니다. 사진의 많은 부분이 동일하게 보일 수 있지만(예: 하늘 전체가 파란색임) 대부분의 개별 픽셀은 약간 다릅니다. 해상도를 손상시키지 않고 이 사진을 더 작게 만들려면 특정 픽셀의 색상 값을 변경해야 합니다. 그림에 파란 하늘이 많이 있는 경우 프로그램은 모든 픽셀에 사용할 수 있는 파란색 한 가지 색상을 선택합니다. 그런 다음 프로그램은 모든 하늘 픽셀의 값이 이 정보를 다시 참조하도록 파일을 다시 작성합니다. 압축 구성표가 제대로 작동하면 변경 사항을 눈치채지 못하지만 파일 크기는 크게 줄어듭니다.

물론 손실 압축을 사용하면 압축된 원본 파일을 다시 가져올 수 없습니다. 원본에 대한 압축 프로그램의 재해석에 갇혔습니다. 이러한 이유로 소프트웨어 응용 프로그램, 데이터베이스 및 대통령 취임 연설을 포함하여 정확하게 재생산해야 하는 모든 것에 대해 이러한 종류의 압축을 사용할 수 없습니다.

파일 압축 및 관련 주제에 대한 자세한 내용은 다음 페이지의 링크를 확인하십시오.

원래 게시: 2001년 1월 18일

파일 압축 FAQ

파일 압축은 무엇을 합니까?
압축은 파일 크기를 줄이는 데 도움이 됩니다. 이렇게 하면 데이터를 더 빨리 보내고 받을 수 있습니다.
파일 압축 체계의 기본 유형은 무엇입니까?
파일 압축은 손실 및 무손실의 두 가지 유형으로 분류됩니다. 무손실 압축은 파일 크기를 전송을 위해 더 작은 크기로 분할하고 다시 사용할 수 있도록 다른 쪽 끝에서 다시 합칩니다. 손실 압축은 "불필요한" 정보 비트를 제거하여 파일을 더 작게 조정합니다. 더 큰 파일로 되돌릴 수 없습니다.
zip 파일은 어떤 압축을 사용합니까?
Zip 파일은 무손실 데이터 압축을 사용합니다. 이러한 파일에는 압축되었을 수 있는 여러 디렉터리가 포함될 수 있습니다. DEFLATE와 같은 특정 압축 알고리즘을 사용합니다.
파일 압축으로 품질이 저하됩니까?
컴퓨터나 카메라에서 이미지를 압축한 후 압축하면 선명도, 대비 및 더 미세한 색상 세부 사항이 감소할 수 있습니다.

더 많은 정보

관련 기사

  • MP3 파일 작동 방식
  • MP3 플레이어 작동 방식
  • DVD 작동 방식
  • 이동식 스토리지 작동 방식
  • 컴퓨터 메모리 작동 방식
  • 비트 및 바이트 작동 방식
  • Zip 드라이브는 어떻게 플로피 드라이브보다 더 많은 데이터를 저장합니까?
  • 내 디지털 사진 파일은 왜 그렇게 큰데 다른 웹 사이트의 사진은 훨씬 작습니까?

더 좋은 링크

  • 데이터 압축.com
  • 압축 프로그램 비교
  • 압축 사이트
  • 압축 FAQ
  • Open Directory: 데이터 압축 - 수많은 링크