Interested Article - LZO
- 2021-07-12
- 1
LZO (аббр. от Lempel-Ziv-Oberhumer — Лемпель-Зив-Оберхеймер) — алгоритм сжатия данных , разработанный для достижения максимальной скорости распаковки в середине 1990-х годов. Алгоритм сжимает данные без потерь и его базовая реализация поддерживает многопоточное исполнение.
Свободной программой, реализующей LZO, является lzop . Исходная библиотека была написана на ANSI C и доступна под лицензией GPL . Также существуют реализации LZO на языках Ассемблер ( x86 ), Perl , Python , Java и .NET . Код написан Маркусом Оберхеймером ( Markus F. X. J. Oberhumer ).
Библиотека LZO реализует несколько алгоритмов со следующими особенностями.
- Распаковка простая и очень быстрая.
- Для декомпрессии не требуется дополнительной памяти, помимо буферов для сжатых и распаковываемых данных.
- Сжатие также очень быстрое.
- При сжатии требуется 64 КБ памяти.
- Можно достичь дополнительного сжатия, потратив несколько больше времени при сжатии. При этом скорость декомпрессии не уменьшается.
- Существует несколько уровней сжатия (с разными требования по скорости).
- В частности, реализован вариант алгоритма, которому требуется всего 8 КБ памяти для сжатия.
- Алгоритм безопасно применять в многопоточной среде.
- Алгоритм сжимает и распаковывает данные без потерь.
Высокая скорость алгоритма позволяет встраивать его в различные высокопроизводительные системы, например, в СУБД , системы обработки данных , файловые системы , для распаковки ядер ОС при загрузке (в том числе Android-устройствах Samsung), системы сжатой памяти . Применялся на нескольких планетах .
Алгоритм является одним из самых быстрых по скорости распаковки наряду с созданным на его основе методом LZ4 (LZ4 HC), а также рядом других алгоритмов сжатия: Snappy , , LZF .
Среди недостатков отмечают отсутствие единой спецификации на формат сжатого потока . В оригинальном коде распаковки до 2014 года существовала ошибка целочисленного переполнения. Широкое использование алгоритма привело к потенциальной уязвимости множества проектов .
См. также
Примечания
- . Дата обращения: 31 октября 2016. 24 ноября 2016 года.
- . Дата обращения: 31 октября 2016. Архивировано из 1 ноября 2016 года.
- . Дата обращения: 31 октября 2016. 14 апреля 2016 года.
- . Дата обращения: 31 октября 2016. 12 июня 2017 года.
- ↑ . Дата обращения: 31 октября 2016. Архивировано из 6 марта 2016 года.
- . Дата обращения: 31 октября 2016. 22 марта 2016 года.
- от 9 октября 2021 на Wayback Machine , LWN.net
- ↑ от 22 октября 2016 на Wayback Machine / The Lab Mouse Security research blog. «LZO algorithm has gone to the planet Mars on NASA devices multiple times»
- от 9 июня 2016 на Wayback Machine , Linux Kernel Documentation, (англ.)
- . Дата обращения: 31 октября 2016. 1 ноября 2016 года.
- от 1 ноября 2016 на Wayback Machine / CSO Online
Ссылки
- (англ.)
-
, 2010
(англ.)
- , 1996—2010 (англ.)
- 2021-07-12
- 1