LZO: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
м бот: добавление заголовков в сноски; исправление двойных сносок, см. ЧаВо
м оформление
Строка 12: Строка 12:
|сайт = www.oberhumer.com/opensource/lzo/
|сайт = www.oberhumer.com/opensource/lzo/
}}
}}
'''LZO''' (аббр. от ''Lempel-Ziv-Oberhumer'' - Лемпель-Зив-Оберхеймер) - [[алгоритм]] [[сжатие данных|сжатия данных]], разработанный для достижения максимальной скорости распаковки в середине 1990-х годов. Алгоритм [[сжатие без потерь|сжимает данные без потерь]] и его базовая реализация поддерживает многопоточное исполнение.
'''LZO''' (аббр. от ''Lempel-Ziv-Oberhumer'' — Лемпель-Зив-Оберхеймер) — [[алгоритм]] [[сжатие данных|сжатия данных]], разработанный для достижения максимальной скорости распаковки в середине 1990-х годов. Алгоритм [[сжатие без потерь|сжимает данные без потерь]] и его базовая реализация поддерживает многопоточное исполнение.


Свободной программой, реализующей LZO, является [[lzop]]. Исходная библиотека была написана на ANSI C и доступна под лицензией [[GPL]]. Также существуют реализации LZO на языках [[Язык ассемблера|Ассемблер]] ([[x86]]), [[Perl]], [[Python]], [[Java]] и [[.NET Framework|.NET]]. Код написан Маркусом Оберхеймером (Markus F. X. J. Oberhumer)
Свободной программой, реализующей LZO, является [[lzop]]. Исходная библиотека была написана на [[Си (язык программирования)|ANSI C]] и доступна под лицензией [[GPL]]. Также существуют реализации LZO на языках [[Язык ассемблера|Ассемблер]] ([[x86]]), [[Perl]], [[Python]], [[Java]] и [[.NET Framework|.NET]]. Код написан Маркусом Оберхеймером (''Markus F. X. J. Oberhumer'')


LZO-библиотека реализует несколько алгоритмов, со следующими особенностями:
LZO-библиотека реализует несколько алгоритмов, со следующими особенностями:
Строка 27: Строка 27:
* Алгоритм сжимает и распаковывает данные без потерь
* Алгоритм сжимает и распаковывает данные без потерь


Высокая скорость алгоритма позволяет встраивать его в различные высокопроизводительные системы, например, в СУБД<ref>[http://docs.aws.amazon.com/redshift/latest/dg/lzo-encoding.html LZO Encoding - Amazon Redshift<!-- Заголовок добавлен ботом -->]</ref>, системы обработки данных<ref>[https://blog.cloudera.com/blog/2009/06/parallel-lzo-splittable-compression-for-hadoop/ Parallel LZO: Splittable Compression for Apache Hadoop - Cloudera Engineering Blog<!-- Заголовок добавлен ботом -->]</ref><ref>[http://dl.acm.org/citation.cfm?id=2371485&dl=ACM&coll=DL A guide to using LZO compression in Hadoop<!-- Заголовок добавлен ботом -->]</ref>, файловые системы<ref>[http://www.phoronix.com/scan.php?page=article&item=btrfs_lzo_2638&num=1 Btrfs LZO Compression Performance - Phoronix<!-- Заголовок добавлен ботом -->]</ref><ref>[https://btrfs.wiki.kernel.org/index.php/Compression Compression - btrfs Wiki<!-- Заголовок добавлен ботом -->]</ref>, распаковке ядер ОС при загрузке<ref name=autogenerated1>http://events.linuxfoundation.org/sites/events/files/lcjpcojp13_klee.pdf</ref> (в т.ч. Android-устройствах Samsung), системы [[zRam|сжатой памяти]]<ref>https://www.kernel.org/doc/Documentation/blockdev/zram.txt</ref><ref>[https://lwn.net/Articles/545244/ In-kernel memory compression [LWN.net&#93;<!-- Заголовок добавлен ботом -->]</ref>. Применялся на нескольких планетах<ref>http://blog.securitymouse.com/2014/06/raising-lazarus-20-year-old-bug-that.html "LZO algorithm has gone to the planet Mars on NASA devices multiple times"</ref>.
Высокая скорость алгоритма позволяет встраивать его в различные высокопроизводительные системы, например, в СУБД<ref>[http://docs.aws.amazon.com/redshift/latest/dg/lzo-encoding.html LZO Encoding — Amazon Redshift<!-- Заголовок добавлен ботом -->]</ref>, системы обработки данных<ref>[https://blog.cloudera.com/blog/2009/06/parallel-lzo-splittable-compression-for-hadoop/ Parallel LZO: Splittable Compression for Apache Hadoop — Cloudera Engineering Blog<!-- Заголовок добавлен ботом -->]</ref><ref>[http://dl.acm.org/citation.cfm?id=2371485&dl=ACM&coll=DL A guide to using LZO compression in Hadoop<!-- Заголовок добавлен ботом -->]</ref>, файловые системы<ref>[http://www.phoronix.com/scan.php?page=article&item=btrfs_lzo_2638&num=1 Btrfs LZO Compression Performance — Phoronix<!-- Заголовок добавлен ботом -->]</ref><ref>[https://btrfs.wiki.kernel.org/index.php/Compression Compression — btrfs Wiki<!-- Заголовок добавлен ботом -->]</ref>, распаковке ядер ОС при загрузке<ref name=autogenerated1>http://events.linuxfoundation.org/sites/events/files/lcjpcojp13_klee.pdf</ref> (в том числе Android-устройствах Samsung), системы [[zRam|сжатой памяти]]<ref>https://www.kernel.org/doc/Documentation/blockdev/zram.txt</ref><ref>[https://lwn.net/Articles/545244/ In-kernel memory compression], LWN.net</ref>. Применялся на нескольких планетах<ref>[http://blog.securitymouse.com/2014/06/raising-lazarus-20-year-old-bug-that.html Raising Lazarus — The 20 Year Old Bug that Went to Mars] / The Lab Mouse Security research blog. «LZO algorithm has gone to the planet Mars on NASA devices multiple times»</ref>.


Алгоритм является одним из самых быстрых по скорости распаковки, наряду с созданным на его основе методом [[LZ4]] (LZ4 HC), а также рядом других алгоритмов сжатия: {{нп3|Snappy||en|Snappy (compression)}}, [[FastLZ]], LZF<ref name=autogenerated1 />.
Алгоритм является одним из самых быстрых по скорости распаковки, наряду с созданным на его основе методом [[LZ4]] (LZ4 HC), а также рядом других алгоритмов сжатия: {{нп3|Snappy||en|Snappy (compression)}}, [[FastLZ]], LZF<ref name=autogenerated1 />.


Среди недостатков отмечают отсутствие единой спецификации на формат сжатого потока<ref>https://www.kernel.org/doc/Documentation/lzo.txt</ref>. В оригинальном коде распаковки до 2014 года существовала ошибка целочисленного переполнения. Широкое использование алгоритма привело к потенциальной уязвимости множества проектов<ref>[http://blog.securitymouse.com/2014/06/raising-lazarus-20-year-old-bug-that.html The Mouse Trap: Raising Lazarus - The 20 Year Old Bug that Went to Mars<!-- Заголовок добавлен ботом -->]</ref><ref>http://www.securityweek.com/longstanding-security-vulnerability-found-lzo-compression-algorithm</ref><ref>[http://www.csoonline.com/article/2375206/data-protection/twenty-year-old-vulnerability-in-lzo-finally-patched.html Twenty-year-old vulnerability in LZO finally patched | CSO Online<!-- Заголовок добавлен ботом -->]</ref>.
Среди недостатков отмечают отсутствие единой спецификации на формат сжатого потока<ref>[https://www.kernel.org/doc/Documentation/lzo.txt LZO stream format as understood by Linux's LZO decompressor], Linux Kernel Documentation, {{ref-en}}</ref>. В оригинальном коде распаковки до 2014 года существовала ошибка целочисленного переполнения. Широкое использование алгоритма привело к потенциальной уязвимости множества проектов<ref>[http://blog.securitymouse.com/2014/06/raising-lazarus-20-year-old-bug-that.html Raising Lazarus — The 20 Year Old Bug that Went to Mars] / The Lab Mouse Security research blog. «LZO algorithm has gone to the planet Mars on NASA devices multiple times»</ref><ref>http://www.securityweek.com/longstanding-security-vulnerability-found-lzo-compression-algorithm</ref><ref>[http://www.csoonline.com/article/2375206/data-protection/twenty-year-old-vulnerability-in-lzo-finally-patched.html Twenty-year-old vulnerability in LZO finally patched] / CSO Online</ref>.


== См. также ==
== См. также ==
Строка 42: Строка 42:
== Примечания ==
== Примечания ==
{{примечания}}
{{примечания}}

== Ссылки ==
== Ссылки ==
* [http://www.oberhumer.com/opensource/lzo/ Официальная страница алгоритма LZO]{{ref-en}}
* [http://www.oberhumer.com/opensource/lzo/ Официальная страница алгоритма LZO]{{ref-en}}
* [https://www.lzop.org/ Сайт утилиты lzop], 2010{{ref-en}}
* [https://www.lzop.org/ Сайт утилиты lzop], 2010{{ref-en}}
** [https://www.lzop.org/lzop_man.php Документация lzop], 1996-2010{{ref-en}}
** [https://www.lzop.org/lzop_man.php Документация lzop], 1996—2010{{ref-en}}
{{методы сжатия}}
{{методы сжатия}}



Версия от 15:03, 18 августа 2017

LZO
Тип алгоритм сжатия[вд]
Автор Маркус Оберхеймер (Markus Oberhumer)
Операционная система многоплатформенная
Языки интерфейса англ.
Первый выпуск 1997
Последняя версия 1.03 (2010)
Лицензия GPLv2
Сайт oberhumer.com/opensource…

LZO (аббр. от Lempel-Ziv-Oberhumer — Лемпель-Зив-Оберхеймер) — алгоритм сжатия данных, разработанный для достижения максимальной скорости распаковки в середине 1990-х годов. Алгоритм сжимает данные без потерь и его базовая реализация поддерживает многопоточное исполнение.

Свободной программой, реализующей LZO, является lzop. Исходная библиотека была написана на ANSI C и доступна под лицензией GPL. Также существуют реализации LZO на языках Ассемблер (x86), Perl, Python, Java и .NET. Код написан Маркусом Оберхеймером (Markus F. X. J. Oberhumer)

LZO-библиотека реализует несколько алгоритмов, со следующими особенностями:

  • Распаковка простая и очень быстрая.
  • Для декомпрессии не требуется дополнительной памяти помимо буферов для сжатых и распаковываемых данных.
  • Сжатие также очень быстрое.
  • При сжатии требуется 64 КБ памяти
  • Можно достичь дополнительного сжатия, потратив несколько больше времени при сжатии. При этом скорость декомпрессии не уменьшается.
  • Существует несколько уровней сжатия (с разными требования по скорости).
  • В частности реализован вариант алгоритма, которому требуется всего 8 кб памяти для сжатия.
  • Алгоритм безопасно применять в многопоточной среде.
  • Алгоритм сжимает и распаковывает данные без потерь

Высокая скорость алгоритма позволяет встраивать его в различные высокопроизводительные системы, например, в СУБД[1], системы обработки данных[2][3], файловые системы[4][5], распаковке ядер ОС при загрузке[6] (в том числе Android-устройствах Samsung), системы сжатой памяти[7][8]. Применялся на нескольких планетах[9].

Алгоритм является одним из самых быстрых по скорости распаковки, наряду с созданным на его основе методом LZ4 (LZ4 HC), а также рядом других алгоритмов сжатия: Snappy?!, FastLZ, LZF[6].

Среди недостатков отмечают отсутствие единой спецификации на формат сжатого потока[10]. В оригинальном коде распаковки до 2014 года существовала ошибка целочисленного переполнения. Широкое использование алгоритма привело к потенциальной уязвимости множества проектов[11][12][13].

См. также

Примечания

Ссылки