렘펠-지브-오버휴머
| 개발자 | Markus F.X.J. Oberhumer |
|---|---|
| 발표일 | 1996년 5월 20일 |
| 안정화 버전 | 2.10
/ 2017년 3월 1일 |
| 운영 체제 | 크로스 플랫폼 |
| 종류 | 데이터 압축 |
| 라이선스 | GPLv2 or commercial |
| 웹사이트 | www |
렘펠-지브-오버휴머(Lempel–Ziv–Oberhumer, LZO)는 압축 해제 속도에 중점을 둔 비손실 데이터 압축 알고리즘이다.[1]
설계
[편집]1996년에 출시된 오리지널 "lzop" 구현은 마르쿠스 프란츠 크사버 요하네스 오버후머가 아브라함 렘펠과 야코브 지브의 이전 알고리즘을 기반으로 개발했다. LZO 라이브러리는 다음 특성을 가진 여러 알고리즘을 구현한다.
- DEFLATE 압축에 비해 더 높은 압축 속도
- 매우 빠른 압축 해제
- 압축 중 추가 버퍼 필요 (압축 수준에 따라 8kB 또는 64kB 크기)
- 원본 및 대상 버퍼 외에 압축 해제를 위한 추가 메모리가 필요하지 않음
- 압축 해제 속도에 영향을 주지 않고 압축률과 압축 속도 사이의 균형을 조절할 수 있음
LZO는 중첩 압축 및 제자리 압축 해제를 지원한다. 블록 압축 알고리즘으로서 데이터 블록을 압축 및 압축 해제한다. 압축 및 압축 해제에 사용되는 블록 크기는 동일해야 한다. LZO는 데이터 블록을 일치(슬라이딩 딕셔너리) 및 일치하지 않는 리터럴 실행으로 압축하여 중복성이 높은 데이터에서 좋은 결과를 생성하고 압축 불가능한 데이터를 수용 가능하게 처리하며, 최소 1KB의 블록 크기로 측정할 때 원본 크기의 최대 1/64까지만 압축 불가능한 데이터를 확장한다.[2]
구현
[편집]참조 구현은 ANSI C로 작성되었으며 GNU 일반 공중 사용 허가서에 따라 자유 소프트웨어로 제공되었다. 코드의 저작권은 마르쿠스 F. X. J. 오버후머가 소유한다. 이 코드는 1996년에 처음 출판되었다. 오버후머는 또한 lzop이라는 명령줄 프런트엔드를 작성했다.
LZO 버전은 펄, 파이썬, 자바 언어에서 사용할 수 있다. 다양한 LZO 구현은 AIX, 아타리 TOS (아타리 ST), ConvexOS, IRIX, 리눅스, Mac OS, 닌텐도 64, 팜 OS, 플레이스테이션, 솔라리스, SunOS, VxWorks, Wii, Win32에서 작동하는 것으로 보고되었다.
FFmpeg의 libavutil 라이브러리는 비손실 비디오 압축을 위한 가능한 방법으로 자체 LZO 구현을 포함한다.[3] FFmpeg의 압축 해제기 구현은 OpenConnect에서도 주니퍼 네트웍스 및 펄스 시큐어 VPN 서버에서 전송하는 LZO 압축 ESP 패킷을 지원하기 위해 사용된다.[4]
리눅스 커널은 일부 기능에 LZO 구현을 사용한다:
- Btrfs는 파일 시스템 압축을 위한 가능한 압축 방식으로 LZO를 사용한다.
- initrd 및 initramfs는 초기 램 드라이브 압축을 위한 가능한 압축 방식으로 LZO를 사용한다.
- SquashFS는 파일 시스템 압축을 위한 가능한 압축 방식으로 LZO를 사용한다.
- zram은 램 드라이브 압축을 위한 기본 압축 방식으로
LZO-RLE라는 런 렝스 부호화를 사용하는 LZO를 사용한다. - zswap은 가상 메모리 압축을 위한 기본 압축 방식으로 LZO를 사용한다.
각주
[편집]- ↑ Arnaud Bouche (2008년 1월 1일). “LZO fast compress/uncompress: implementation in 80386 machine code for Delphi”. 《bouchez.info》. LZO. 2022년 8월 23일에 확인함.
Do you know the LZO compression format?
- ↑ Tarreau, Willy (2014년 7월 19일). “LZO stream format as understood by Linux's LZO decompressor”. 《infradead.org》. Infra Dead. 2022년 8월 23일에 확인함.
This document describes what input format the LZO decompressor as implemented in the Linux kernel understands.
- ↑ Reimar Döffinger. “libavutil/lzo.c”. 《FFmpeg》.
- ↑ David Woodhouse (2015년 1월 26일). “Add LZO decompression support”. 《OpenConnect》.
외부 링크
[편집]- LZO/LZOP Fanpage - 웨이백 머신 (보관됨 6월 25, 2012)
- (영어) lzo-java - 깃허브 - liblzo2 LZO 압축 알고리즘의 순수 자바 구현