Программы-архиваторы или упаковщики
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Программы-архиваторы служат для сжатия файлов, что позволяет хранить их в сжатом виде в одном архивном файле (архиве), а также уменьшить объем занимаемой файлами памяти.

Преимущества архиваторов:               

a. позволяют сжимать от 22 % до 90% информации;

b. позволяют обновлять программное обеспечение, причем архиватор сам              следит за процессом обновления;

c. позволяют создавать самораспаковывающиеся архивы;

d. позволяют содержать в одном файле группу однородных файлов

e. поддержка непрерывных архивов, в которых степень сжатия может быть на 10 - 50% больше, чем при обычных методах сжатия, особенно при упаковке большого количества маленьких похожих файлов;

f.поддержка многотомных архивов;

g. создание самораспаковывающихся (SFX) обычных и многотомных архивов с помощью стандартного или дополнительных модулей SFX;

h. восстановление физически поврежденных архивов;

i. другие дополнительные функции, например, шифрование, добавление архивных комментариев (с поддержкой ESC-последовательностей ANSI), протоколирование ошибок и пр.

Файл, в котором находятся файлы в сжатом виде, называется архивом.

Архив содержит оглавление, в котором находится следующая информация:

- имя файла,

- дата и время создания или модификации,

- объем файла до и после архивации,

- процент сжатия,

- код циклического контроля для каждого файла (контрольная сумма)

Архиваторов очень много: ARJ, RAR, ZIP, CAB, LZH, GIF, TIF, PCX …

Архивные файлы могут быть непрерывными, многотомными, самораспаковывающимися.

Непрерывный архив — это архив, запакованный специальным способом, при котором все сжимаемые файлы рассматриваются как один последовательный поток данных.

Тома — это фрагменты архива, состоящего из нескольких частей. Тома поддерживаются только в формате RAR, вы не можете создавать тома ZIP. Обычно тома используются для сохранения большого архива на нескольких дискетах или других сменных носителях.

Самораспаковывающийся (SFX, от англ. SelF-eXtracting) архив — это архив, к которому присоединен исполнимый модуль. Этот модуль позволяет извлечь файлы, просто запустив архив как обычную программу. Таким образом, для извлечения содержимого SFX-архива не требуется дополнительных внешних программ. SFX-архивы, как и любые другие исполнимые файлы, обычно имеют расширение .EXE.

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

 

Теоретические основы сжатия данных

 

Объекты сжатия

В зависимости от того, в каком объекте размещены данные, подвергаемые сжатию, различают:

· Архивацию файлов

· Архивацию папок

· Архивацию дисков

Архивацию файлов применяют для уменьшения их размеров при подготовке к передаче по каналам электронных сетей или к транспортировке на внешнем носителе малой ёмкости, например, на гибком диске.

Архивацию папок  используют как средство архивации данных перед длительным хранением, в частности, при резервном копировании.

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

 

Обратимость сжатия

 

Несмотря на изобилие алгоритмов сжатия данных, теоретически есть только три способа сжатия. Это либо изменение содержания данных, либо изменение их структуры, либо одновременно и то и другое.

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

· .JPG для графических данных

· .MPG для видеоданных

· МРЗ для звуковых данных.

Если при сжатии данных происходит только изменение их структуры, то метод сжатия обратим. Из результирующего кода можно восстановить исходный массив путем применения обратного метода. Обратимые методы применяются для сжатия любых типов данных. Характерными форматами сжатия без потери информации являются:

· .GIF, .TIF, .PCX и многие другие для графических данных

· AVI для видеоданных

· ZIP, .ARJ, .RAR, .LZH, .LH, .CAB и многие др. для любых типов данных.

Алгоритмы обратимых методов

 

При исследовании методов сжатия данных следует иметь в виду существование следующих доказанных теорем.

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

2. Для любого алгоритма сжатия можно указать такую последовательность данных, для которой он обеспечит лучшую степень сжатия, чем др. методы.

3. Для любого алгоритма сжатия можно указать такую последовательность данных, для которой данный алгоритм вообще не позволит получить сжатие.

Таким образом, обсуждая различные методы сжатия, следует иметь в виду, что наивысшую эффективность они демонстрируют для данных разных типов и разных объёмов.

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

 

             Свойства алгоритмов сжатия                     таблица 1

 

Алгоритм Выходная структура Сфера применения Примечание
RLE (Run-Length Encoding) Список (вектор данных) Графические данные Эффективность алгоритма не зависит от объёма данных
KWE (Keyword Encoding) Таблица данных (словарь) Текстовые данные Эффективен для массива большого размера
Алгоритм Хафмана Иерархическая структура (дерево кодировки) Любые данные Эффективен для массива большого размера

Алгоритм RLE

 В основу алгоритмов RLE положен принцип выявления повторяющихся последовательностей данных и замены их простой структурой, в которой указывается код данных и коэффициент повтора.

Например, для последовательности: 0; 0; 0; 127; 127; 0; 255; 255; 255; 255 (всего 10 байтов) образуется следующий вектор:

 

Значение Коэффициент повтора
0 3
127 2
0 1
255 4

 

При записи в строку он имеет вид:

  0; 3; 127; 2; 0; 1; 255; 4 (всего 8 байтов)

В данном примере коэффициент сжатия равен 8/10=0,8=80%

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

Алгоритм KWE

В основу алгоритмов кодирования по ключевым словам Keyword Encoding положено кодирование лексических единиц исходного документа группами байтов фиксированной длины. Примером лексической единицы может служить слово(последовательность символов, ограниченная справа и слева пробелами или символами конца абзаца). Результат кодирования сводится в таблицу, которая прикладывается к результирующему коду и представляет собой словарь. Обычно для англоязычных текстов принято использовать двухбайтную кодировку символов. Обращающиеся при этом пары байтов называют токенами .

Эффективность данного метода существенно зависит от длины документа, поскольку из-за необходимости прикладывать к архиву словарь длина кратких документов не только не уменьшается, но даже возрастает.

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

Алгоритм Хафмана

 

В основе этого алгоритма лежит кодирование не байтами, а битовыми группами.

· Перед началом кодирования производится частотный анализ кода документа и выявляется частота повторения каждого из встречающихся символов.

· Чем чаще встречается тот или иной символ, тем меньшим количеством битов он кодируется (соответственно, чем реже встречается символ, тем длиннее его кодовая битовая последовательность).

· Образующаяся в результате кодирования иерархическая структура прикладывается к сжатому документу в качестве таблицы соответствия.

 

Пример кодирования символов русского алфавита представлен на рисунке 1.

 

 

 

 


Рис. 1. Пример побуквенного кодирования русского алфавита по алгоритму Хафмана.

 

Как видно из схемы, представленной на рис.1, используя 16 бит, можно закодировать до 256 различных символов. Однако ничто не мешает использовать и последовательность длиной до 20 бит – тогда можно закодировать до 1024 лексических единиц (это могут быть не символы, а группы символов, слоги и даже слова).

В связи с тем, что к каждому архиву необходимо прикладывать таблицу соответствия, на файлах малых размеров алгоритм Хафмана мало эффективен. Практика также показывает, что его эффективность зависит от заданной предельной длины кода (размера словаря). В среднем наиболее эффективными являются архивы с размером словаря от 512 до 1024 единиц (длина кода до 18-20 бит).

 

Синтетические алгоритмы

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

Компьютерные вирусы


Дата: 2018-12-28, просмотров: 220.