Interested Article - LZO

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 года существовала ошибка целочисленного переполнения. Широкое использование алгоритма привело к потенциальной уязвимости множества проектов .

См. также

Примечания

  1. . Дата обращения: 31 октября 2016. 24 ноября 2016 года.
  2. . Дата обращения: 31 октября 2016. Архивировано из 1 ноября 2016 года.
  3. . Дата обращения: 31 октября 2016. 14 апреля 2016 года.
  4. . Дата обращения: 31 октября 2016. 12 июня 2017 года.
  5. . Дата обращения: 31 октября 2016. Архивировано из 6 марта 2016 года.
  6. . Дата обращения: 31 октября 2016. 22 марта 2016 года.
  7. от 9 октября 2021 на Wayback Machine , LWN.net
  8. от 22 октября 2016 на Wayback Machine / The Lab Mouse Security research blog. «LZO algorithm has gone to the planet Mars on NASA devices multiple times»
  9. от 9 июня 2016 на Wayback Machine , Linux Kernel Documentation, (англ.)
  10. . Дата обращения: 31 октября 2016. 1 ноября 2016 года.
  11. от 1 ноября 2016 на Wayback Machine / CSO Online

Ссылки

  • (англ.)
  • , 2010 (англ.)
    • , 1996—2010 (англ.)
Источник —

Same as LZO