Чт, 12.12.2024, 18:42
Приветствую Вас Гость | RSS
Меню
TOP-5
Главная » 2009 » Февраль » 17 »
15:13



Сегодня уже сложно представить проблему переноса и хранения файлов. Работа с большим количеством файлов, объем которых в свою очередь является немалым, невозможна без программ архиваторов, позволяющих правильно организовать передачу данных. На сегодняшний день существует целое разнообразие программ для сжатия файлов. Для того чтобы выбрать подходящую программу для создания архивов, необходимо рассмотреть историю появления данных программ, основные форматы и возможности архиваторов и разобраться в сущности работы данных программ.

Что значит архиватор

Определение архиватора напрашивается само собой: архиватор — это программный продукт, позволяющий объединить несколько файлов в один архив, а также позволяющий изменять путем сжатия размер архива.
Но данное определение будет не полным, если не разобраться с сущностью самого процесса сжатия. Сжатие — это процесс перекодирования информации, в результате которого уменьшается объем файла. Встречаются также такие названия данного процесса как кодирование, компрессия, упаковка и соответственно обратные данным процессы: декодирование, декомпрессия и распаковка.

Работа архиваторов основана на том факте, что каждый сжимаемый файл содержит «излишнюю» информацию, то есть в нем можно найти много повторов одной и той же информации. Особенно наглядно это проявляется в текстовых данных, где может встречаться несколько повторов одного и того же слова, словосочетания или даже целой фразы. Программа-архиватор фиксирует не только повторение слов, но также одних и тех же слогов в разных словах.

Если говорить о теоретической базе создания различных методов кодирования и декодирования информации, то следует отметить особую важность теории информации, ответвления теории вероятности и математической статистики. В частности, влияние оказали такие сферы знания как алгоритмическая теория информации, криптография и теория кодирования. Поэтому зарождение теории компрессии и воплощение ее в конкретных продуктах связано с именем Клайда Скэннона, еще в середине двадцатого века опубликовавшего множество работ по данной теме.

Способы сжатия

Сжатие бывает без потерь («lossless compression») и с потерями («lossy compression»). Не трудно догадаться, что в первом случае восстановление файла из архива происходит без изменения качества первоначального файла, во втором — с небольшими потерями качества. Сжатие без потерь или «полностью обратимое сжатие» основано на методе разделения исходного файла на небольшие части и восстановления этих частей в исходный файл при распаковке архива. В случае «lossy compression» происходит потеря части информации, а та часть информации, которую нужно сохранить, выделяется с помощью определенного алгоритма. Для обоих алгоритмов характерны следующие стадии сжатия: предварительная рассчитывающая стадия или «предвычисление», частотная трансформация и квантизация или выравнивание.

Самым простым видом сжатия без потерь является метод под названием «running», подсчитывающий количество последовательных, «идущих друг за другом» повторов. Но этот метод уже недостаточен в случае наличия повторов, встречающихся в разных местах текста.

Процесс работы архиваторов не стоит путать с понятием архивации данных, которое связано с использованием специальных кодеков сжатия изображения, музыки и видеоданных. В данной статье будут рассматриваться только программы для создания архивов. Графические и звуковые файлы содержат гораздо больше неповторяющейся информации, чем текстовые. Поэтому для сжатия музыкальных файлов и изображений метод, на котором основана работа программ-архиваторов, не подходит. Для сжатия, например, изображения используется совсем другой алгоритм: в сжатом файле происходит выравнивание цвета, задается один тон для различных оттенков отдельных пикселей.

Параметры сжатия

Процесс сжатия данных характеризуется рядом важных параметров: например, степень сжатия файла и коэффициент сжатия — два важных показателя, от которых в первую очередь зависит качество реархивированного файла. Степень сжатия файла зависит от следующих параметров: применяемого метода сжатия, самой программы-архиватора и типа сжимаемого файла. Лучше всего «сжимаются» текстовые файлы и графические файлы в формате .bmp, .png. Файлы с расширением .exe, .dll, а также архивные файлы сжимаются сложнее всего, последние, кстати практически не сжимаются.

Также для работы архиватора немалое значение имеет параметр скорости сжатия и разжатия файла. Коротко механизм сжатия можно описать следующим образом: определенное количество цифровой информации или на языке специалистов «блок» сжимается, в результате получается «сжатый блок», который содержит меньшее количество битов, но по которому можно восстановить все биты первоначального файла.

Методы сжатия

Методы сжатия файлов бывают «открытыми» и «коммерческими». В первом случае алгоритм можно свободно исследовать и использовать, так как он сам по себе является ценностью. Во втором случае использование метода является закрытым: алгоритм засекречивается в виду того, что он применяется только в отдельных программных продуктах, и несанкционированное использование может вызвать последующие разбирательства по поводу авторских прав, что собственно неоднократно происходило в истории развития архиваторов.

Разработано большое количество методов сжатия, наиболее известные: методы Зива — Лемпела или «LZ-методы» (LZ77, LZ78, LZH, LZW), метод Хаффмана или «HUFF» («Huffman Coding»), преобразование Барроуза-Уиллера («BWT») , метод преобразования Фурье «FT» («Fourier Transform») и другие. Сжатие, например, по «LZ-методу» основано на создании своеобразного словаря, где каждое слово получает свой порядковый номер, и в результате сжатый файл содержит не предложения, а последовательность чисел, что существенно сокращает его размер. Стоит отметить, что данный метод работает эффективнее для сжатия больших файлов, чем маленьких: создание системы словаря, а иногда и «словаря в словаре» также сказывается на размере итогового файла, что нецелесообразно для сжатия легких файлов. Кстати, компрессия по методу Зива — Лемпела является одним из самых распространенных методов сжатия без потерь.

Кодирование по методу Хаффмана описывается несколько сложнее: оно происходит благодаря созданию определенной таблицы данных и добавления к ней новых ячеек, в результате чего получается систематизация данных в виде дерева («двоичное дерево»). С помощью этого дерева происходит вычисление кода и собственно само кодирование.

При сжатии по методу Барроуза и Уиллера упаковка происходит в два этапа: в начале совершается определенное преобразование данных, затем — сам процесс сжатия. На первом этапе происходит сортировка данных, которая получила название «преобразование Барроуза-Уиллера»: в блоке данных разные символы меняются местами таким образом, чтобы обеспечить более действенное сжатие на втором этапе.

Необходимо особо выделить метод PPM («Prediction by Partial Match»), по которому работает программа WinRAR и многие архиваторы русских разработчиков: архиваторы PPMD и PPMonstr (автор Дмитрий Шкарин), PPMN (автор Максим Смирнов), PPMY (архиватор Евгения Шелвина). Также стоит отметить метод арифметического кодирования ARC, ставший предшественником формата архиватора WinZip. Арифметическое кодирование является созданием из сжимаемого файла нумерации отдельных его блоков: в последовательности битов файла выделяются биты с одинаковыми частотами для последующей нумерации. Арифметическое кодирование стало основой многих методов сжатия, включая метод Хаффмана.

Что касается предыстории программы WinZIP, изначально были разработаны алгоритмы сжатия по так называемым методам редуцирования («reducing») и сокращения («shrinking»), которые сегодня уже практически не поддерживаются. Позже в программу WinZIP был внедрен метод, сочетающий LZ-метод (LZ77) и метод Хаффмана, и в результате этого удачного совмещения был разработан новый формат сжатия, ставший широко распространенным.

Виды архивов

Развитие программ-архиваторов позволило добиться не только сжатия без потерь, но также возможности создания многотомных архивов и архивов в различных форматах. Архивы бывают сложной структуры, то есть многотомными. Кроме того, они бывают самораспаковывающимися, то есть процесс извлечения файла в данном случае происходит автоматически. Самораспаковывающиеся архивы имеют, как правило, расширение .exe и называются SFX-архивами (от слова «self-extracting»). Что касается многотомных архивов, первый архив или «том» имеет расширение .rar, другие — .r00, .r01 ит.д. В последней версии WinRAR название частей многотомного архива имеют вид -part001.rar.

Архивы также бывают «непрерывными» («solid»). Непрерывный архив — это архив в формате RAR, упакованный таким образом, что все его файлы представляют непрерывный поток информации. Непрерывная архивация применяется только для формата RAR, для ZIP она недоступна. Плюсом непрерывной архивации является увеличение такого параметра компрессии как степень сжатия, минусом является увеличение параметра скорости расжатия, то есть непрерывный архив будет распаковываться гораздо медленнее. Кроме того, процессы добавления в исходный архив файла или наоборот удаления имеющегося файла будут также происходить медленнее.


Наиболее распространенные программы

Сегодня пользователь может найти большое количество предлагаемых платных и условно бесплатных архиваторов. Наряду с ними существует немало бесплатных аналогов, которые менее известны, хотя зачастую даже более функциональны. Рассмотрим наиболее распространенные программы.

WinRAR


Вначале стоит немного рассказать о распространенном формате RAR. Данный формат сжатия был разработан нашим соотечественником Евгением Рошалом, соответственно название формата является аббревиатурой, включающей первую букву фамилии разработчика и первые две буквы термина архиватор. Формат RAR имеет большую историю: он изначально разрабатывался под DOS, а затем и для других операционных систем, включая позже Microsoft Windows. Так появилась программа WinRAR — функциональный, много форматный архиватор. Следует добавить, что созданы также версии архиватора для платформ MacOS X, Linux и FreeBSD.

Необходимо перечислить основные свойства данного архиватора, одновременно являющиеся его достоинствами. WinRAR позволяет легко создавать многотомные и самораспаковывающиеся архивы. Кроме того, есть возможность открывать, просматривать и изменять содержимое архивов в других форматах (например, . arj). Что касается повреждения архивов, в WinRAR предусмотрена возможность полного и частичного восстановления. Осуществлять работу можно как в простом режиме командной строки, так и в режиме полноэкранного интерфейса. Весьма удобными являются функции поиска и тестирования файлов и архивов, а также функция проверки файлов на вирусы. Оригинальной функцией, характерной только для архивов RAR, является поддержка непрерывного кодирования. Архив можно заблокировать специальным паролем для того, чтобы защитить его от изменений.

Кстати, в третьей версии для сжатия текстовых данных используется алгоритм «PPMII», автором которого является наш соотечественник Дмитрий Шкарин. Кроме того, в третью версию внедрен новый метод шифрования AES («Advanced Encryption Standard»).

Архиватор WinRAR является условно бесплатным — пользователю предоставляется сорокадневный срок для испытания продукта. Данный архиватор весьма справедливо будет назвать самым распространенным и популярным среди пользователей, ведь он доступен на многих языках. В текущем году программа даже стала номинантом известного конкурса программного обеспечения ESWC (European Software Conference) Epsilon Award.

WinZIP


Архиватор WinZIP был создан в 1990 году для платформы Windows компанией Nico Mak Computing, которая позже стала называться WinZip Computing. Данная программа-архиватор работает в основном по алгоритму сжатия PKZIP. Аналогично формату RAR название формата PKZIP — это аббревиатура, включающая инициалы разработчика Фила Каца (Phil Katz). Интересна история появления слова ZIP: «ZIP» означает «Zork Interpretation Program», то есть программа для сжатия игры Zork, размер которой в те времена казался немалым. Формат PKZIP имеет непростую историю появления на свет: он создавался в условиях жесткой конкуренции компании Фила Каца под названием PKWARE и их конкурента SEA, создателя метода сжатия ARC. Формат PKZIP был разработан Кацем на базе ARC, то есть PKZIP1 изначально был улучшенной версией ARC, что не могло не повлечь за собой скандалы и судебные разбирательства по поводу авторских прав. В результате позже была выпущена вторая версия формата сжатия PKZIP2, которая уже имела мало чего общего с форматом ARC и существенно превосходила его по ряду показателям.

В архиваторе также реализованы метод сжатия PPMd и технология AES. В WinZip есть возможность созданные с помощью программы архивы отправлять по электронной почте и записывать архивы на диски, не покидая окна программы. Пользователь может выбирать между классическим интерфейсом архиватора и адаптированным.

7-ZIP


Создателем данного продукта также является наш соотечественник, это разработчик Игорь Павлов. Создание данной программы связано с разработанным в 2001 году новым форматом архивирования 7z. Архиватор работает по видоизмененному LZ-алгоритму — методу сжатия «LZMA» («Lempel-Ziv-Markov chain-Algorithm»). Принцип работы LZMA включает, подобно методу Хаффмана, построение «двоичного дерева» Преимуществом 7-ZIP является поддержка технологии «одновременной мультипоточности» или «гиперпоточности» «HTT» («Hyper-Threading Technology»), реализованной в архитектуре Intel Pentium 4.

Создание архивов в 7-ZIP часто превосходит результаты работы в WinRAR по ряду показателей: в 7-ZIP выше скорость сжатия и расжатия файлов. По данному параметру 7-ZIP опережает также многие другие ZIP-архиваторы. Как и в третьей версии WinRAR, здесь имеется поддержка технологии сжатия AES. Аналогично WinRAR, 7-ZIP работает под операционные системы MacOS X, Linux, FreeBSD. Архиватор работает также на платформах Solaris, OpenBSD, Cygwin, AIX, Syllable, BeOS. Помимо вышеперечисленных достоинств программы следует иметь в виду, что данный архиватор является бесплатным, распространяется как свободное программное обеспечение «GNU LGPL». Таким образом, программа 7-ZIP является вполне достойным конкурентом платным архиваторам и даже имеет ряд технических преимуществ перед ними.

Заключение

Мы попытались осветить сложную внутреннюю сторону такого простого и элементарного процесса как создание архива. Изобретение программ-архиваторов потребовало предварительного развития целой области знания и создания многих научных школ. Принцип работы архиваторов — весьма сложная и интересная тема, которой посвящено много научных статей и даже диссертаций. И что самое главное — развитие данных программ продолжается, разработчики предлагают новые методы и решения, совершенствующие, упрощающие и ускоряющие компрессию и декомпрессию информации.


Просмотров: 635 | Добавил: smart-advanced
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Календарь новостей
«  Февраль 2009  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
232425262728
Поиск
Друзья сайта
Статистика

Онлайн всего: 4
Гостей: 4
Пользователей: 0