압축이라는 말은 일상생활에서 정말 많이 접할 수 있는 단어입니다. 초등학교 과학 시간에 피스톤이 연결된 밀폐용기에 마시멜로우를 넣고 가압을 하거나 감압을 하면서 압축이란 말을 들어보셨을 거고, 컴퓨터를 사용하다 보면 알집, 반디집 등의 프로그램을 이용해서 저장 공간의 효율을 위해 파일을 압축하기도 하죠. 오늘은 컴퓨터를 이용하면서 접하는 압축에 대해서 얘기를 좀 해볼까 합니다.
압축이란?
압축(壓 : 누를 압, 縮 : 줄일 축)의 사전적 정의는 '물질 따위에 압력을 가하여 그 부피를 줄임' 이라고 나옵니다. 좀 더 글의 내용과 어울릴 수 있도록 범용적으로 다시 적어보면 '무언가에 외부적 요인을 가하여 그 크기를 줄임' 정도로 설명하면 이후에 나올 내용과 잘 어울릴 것 같습니다.
컴퓨터 분야에서 압축을 하는 이유는?
세세하게 파고들면 다들 각자의 이유가 있겠지만 공통적인 이유는 '저장 공간의 효율' 때문입니다. 예를 들어볼까요? 가령 제가 지금 가방을 하나 가지고 있는데 누군가가 '가방 안에 담을 수 있는 만큼 마시멜로를 가져갈 수 있게 해주겠다' 라고 말했다고 칩시다. 마시멜로를 최대한 많이 가져가려면 그냥 퍼서 담아가지고는 안되겠죠. 담고 꽉꽉 누르고 또 담고 누르고를 반복하면 그냥 담는 것보다 훨씬 많이 가져갈 수 있을겁니다(물론 마시멜로는 탄성이 있는 편이니 눌러놓은게 어느 정도는 복구되겠지만요). 컴퓨터 분야에서도 마찬가지에요. 파일들이 엄청나게 많이 쌓여서 더 이상 아무것도 다운로드하지 못할 때 기존의 파일들을 전부 압축을 시키면 어느 정도 용량이 확보됩니다(이미 압축이 되어있는 파일은 더 안되는 경우도 있어요). 그렇게 해서 보다 저장 공간을 효율적으로 관리할 수 있게 되는 것이죠.
이제 압축을 왜 하는지는 알았으니 압축에는 어떤 종류가 있는지 그 특징은 무엇인지 알아보겠습니다.
1. 손실 압축
손실 압축은 압축할 때 원본을 훼손시키는 압축을 말합니다. 아니 공간만 줄이려고 했는데 원본을 훼손시키면 어떡해요? 심각한 훼손은 아니구요. 인간이 거의 눈치채지 못할 정도의 손상을 가하는 방법이라고 생각하시면 되겠습니다. 예를 들면 mp3 파일 같은게 있습니다. 과학 시간에 인간의 가청 주파수가 20~20000Hz 정도라고 배우셨을겁니다. 하지만 자연계에서 나는 소리는 그렇게 인간에게만 형편 좋도록 작용하지 않죠. 20000Hz 정도는 가볍게 넘어버리는 소리들도 존재합니다( 흔히들 말하는 초음파 말이에요). 어떤 소리를 녹음한다고 할 때 어차피 사람이 듣지도 못하는 소리를 굳이 녹음해서 저장해둘 필요가 있을까요? 그래서 사람에게 들리지도 않는 소리는 과감하게 잘라내고 사람이 들을 수 있는 소리만 녹음하기 때문에 mp3파일은 손실 압축의 한 종류입니다. 이외에도 그림 파일인 jpg 또한 손실 압축입니다. 사람이 눈치를 못 채는 수준에서 원본의 화질을 훼손하는 알고리즘이 들어있어요(근데 요즘은 원본 사진의 해상도가 높아지면서 jpg로 저장하면 티가 꽤 많이 납니다).
손실 압축 예시 : jpg, mp3, avi 등
2. 무손실 압축
무손실 압축은 손실 압축과 달리 원본이 훼손되지 않는 압축 방법입니다. 아니 원본이 손실이 없는데 어떻게 압축이 가능하죠? 어떤 파일 내에서 반복적으로 나오는 정보에 대해서 그 보다 작은 용량의 데이터로 변경한 다음 해당 내용을 기록한 것과 함께 압축을 하는 방식입니다. 이게 무슨 말인가 싶죠. 예를 들어서 0123456789라는 데이터가 한 1000번 쯤 반복된다고 가정해봅시다. 이 때 이걸 a라는 문자로 바꾸면 10*1000의 데이터가 1*1000으로 줄어들게 됩니다. 그리고 0123456789=a 라는 기록을 함께 압축하는 겁니다. 실제로 이렇다고 말하긴 어렵겠지만 이런 느낌이라고 생각하시면 될 것 같아요(꼭 해시 테이블을 쓰는 것 같네요). 예를 들면 zip 같은 압축 파일이 있습니다. 압축을 해서 용량을 줄이긴 했는데 나중에 원본을 써야하는데 훼손이 되면 사용이 불가하겠죠. 이외에도 그림 파일에서는 png, 음악은 flac 등의 유명한 친구들이 있습니다.
무손실 압축 예시 : png, flac, zip, 7z 등
정말 간단하게 알려드렸는데 오늘 내용 어떠셨나요? 관련 전공을 하셨거나 음악이나 그림에 관심이 있으셨던 분들은 잘 알고 계시거나 느낌적으로 알고계셨을지도 모르겠습니다. 오늘 말씀드린 것 이외에도 많은 압축 방법들이 있습니다. 기본적인 개념은 크게 다르지 않겠지만 각각의 특성이 있으니 좀 더 궁금하신 분들은 개인적으로 찾아보신다면 이해가 더 잘될 듯합니다.
'Computer Science' 카테고리의 다른 글
[CS]시리얼 통신(Serial Communication) (0) | 2022.06.13 |
---|