Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекц6_.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
475.65 Кб
Скачать

Загальні поняття про архівацію та стиснення файлів Архівація і стиснення

З розвитком інформаційних технологій гостро постало питання щодо спо­собів зберігання даних. Починаючи з сорокових років XX ст., вчені розробляють методи представлення даних, за яких простір на носіях інформації використо­вувався б економніше. Результатом цього стала технологія стиснення й архівації даних (англійською мовою backup).

Архівація даних - це злиття кількох файлів чи каталогів до єдиного файла - архіву. Стиснення даних є скороченням обсягу вихідних файлів шляхом усунення надлишкової інформації.

Для виконання цих завдань є програми-apxiватоpu, які забезпечують як архівацію, так і стиснення даних. За допомогою спеціальних алгоритмів архі­ватори видаляють з файлів усю надмірну інформацію, а при зворотних операціях розпаковування вони відновлюють інформацію у первісному вигляді. При цьому стиснення та відновлення інформації відбувається без втрат. Стиснення без втрат актуальне при роботі з текстовими і програмними файлами, у задачах криптографії.

Існують також методи стиснення із втратами. Вони видаляють з потоку інформацію, яка незначно впливає на дані або взагалі не сприймається людиною. Такі методи стиснення застосовуються для аудіо- та відеофайлів, деяких фор­матів графічних файлів.

Методи стискання даних без втрат

На сьогодні розроблено багато способів стискання без втрат, в основі їх лежать такі методи кодування:

  • Групове кодування RLE (Run Length Encoding) - один з найстаріших мето­дів стиснення, який використовується в основному для архівації графіки.

  • Кодування Хаффмана (англ. Huffman) - в основі лежить той факт, що деякі символи в тексті можуть траплятися частіше середньої частоти повторень, а інші - рідше.

  • Кодування Лемпеля-Зіва (англ. Lempel, Ziv) - використовує факт неод­норазового повторення фрагментів тексту, тобто послідовностей байтів. Практично всі популярні програми-архіватори без втрат (ARJ, RAR, ZIP тощо) застосовують методи Лемпеля-Зіва і Хаффмана (так званий алгоритм LZH - за початковими літерами прізвищ авторів).

Групове кодування RLE

Подамо зображення у числовому вигляді як ланцюжок байтів, записаних по рядках растру. Послідовності байтів, що повторюються, замінимо парою чисел: перше число буде представляти колір, а друге - кількість пікселів. Тоді, наприк­лад, такий рядок зображення

що описаний байтами:

255 255 255 255 128 128 0 0 0 0 0

буде подано як

255 4 128 2 0 5

Замість 11 байтів для запису цього рядка потрібно буде 6 байтів. Зрозуміло, що ступінь ущільнення залежатиме від характеру зображення та наявності дов­гих ланцюжків з байтами, що повторюються. Це виконується для зображень з великими одноколірними ділянками. Зображення, в яких мало сусідніх пікселів однакового кольору, не придатні для стиснення по методу RLE. Розмір стис­нутого файла в такому разі може перевищувати розмір вихідного файла.

Кодування Хаффмана

Нагадаємо, що при кодуванні текстової інформації кожному символу відво­диться 1 байт. Однак на прак­тиці одні символи у конкретному тексті трапляються частіше, інші - рідше. Основою методу Хаффмана є те, що для запису поширених символів використо­вуються короткі послідовності біт (довжиною менше 8 біт), а для запису рідкісних символів - довгі. При цьому сумарний обсяг файла зменшується,

Хаффман запропонував дуже простий графічний спосіб визначення того, якому символу потрібно присвоїти певний код. Уникаючи подробиць покажемо дію методу на прикладі кодування слова «інфінітив». Частота появи літер у цьому слові така:

і-3; т-1;

н-2; и-1;

ф-1; в-1.

Користуючись методом Хаффмана, літерам можна присвоїти коди: і - 11; н -01; ф - 101; т-001; и - 000; в - 100. Після кодування слово «інфінітив» буде записуватися як 1101101110111001000100 та матиме довжину 22 біти. Оскільки вихідне слово займало 72 (=9x8) біти, отримаємо стиснення більш ніж утричі.

Зверніть увагу, що в методі Хаффмана код жодного символу не є початком коду будь-якого іншого символу. Це дозволяє отримувачеві однозначно відно­вити код стиснутого файла, навіть якщо він не знає довжини коду кожного пере­даного символу. Під час прийому коду отримувач спершу відділить перший символ, у нашому прикладі: 11-01101110111001000100. Потім буде відділений другий символ: 11 -01 -101110111001000100 і так до повного розшифрування коду: 11-01-101-11-01-11-001-000-100.

Недоліком методу Хаффмана є лише те, що до закодованого файла слід додавати таблицю кодування символів (у кожного файла вона буде своя). Однак, якщо файл великий, наявність таблиці несуттєво вплине на підсумковий розмір архівного файла.

Кодування Лемпеля-Зіва

Згідно з методом Лемпеля-Зіва у потоці даних відшукують послідовності символів, що повторюються. До стиснутого файлу записують не самі послідов­ності, а посилання на них у вигляді параметрів (зміщення, довжина).

Пояснимо це на прикладі вислову «давним-давно», яка кодується як «давним-(-7,4)о». Тобто замість повторюваної послідовності «давн», що скла­дається з 4 символів та починається з 8-ої позиції, виконується така підстановка. Відраховується зміщення від поточної позиції на 7 знаків вліво (зміщення вліво позначається знаком мінус) та використовується фрагмент з 4 знаків.

Представимо за допомогою метода Лемпеля-Зіва ще такий вірш:

  • Грицю, Грицю, до роботи! В Гриця порвані чоботи...

  • Грицю, Грицю, до телят! В Гриця ніженьки болять...

Після кодування одержимо «-_Грицю,_(-7,6)_до_роботи!/В(-20,5)я_порвані _ч(-24,5).../(- 1,19)телят (-50,10)ніженьки_бо(-24,3)ь...».Знак абзацу тут позначено косою рискою «/».

Метод Лемпеля-Зіва найчастіше застосовується для стиснення текстів та файлів, які взагалі не стискаються методом RLE.

Завдання архівації

Досі йшлося про одне призначення архівації даних - економніше вико­ристання носіїв інформації. Однак за допомогою архівації можна виконувати цілий комплекс завдань:

  • Зменшення обсягу файлів. Це завдання виконується за допомогою методів стискання, що були розглянуті вище. Зменшення файлів актуальне не лише для економії вільного місця на дисках, а й для швидшого передавання файлів по мережі. Якщо дисковий простір можна «нарощувати» шляхом придбання сучасніших дисків більшої ємності, то швидкість передавання ще довго стримуватиме збільшення розміру файлів, що передаються.

  • Резервне копіювання. У процесі експлуатації комп'ютера не виключені си­туації, що загрожують невідновною втратою інформації (несправність при­строю накопичувача або дефекти на поверхні жорсткого диска, неправильні операції з файлами або випадкове знищення файлів, чи руйнування інфор­мації комп'ютерним вірусом). Для збереження важливої інформації засто­совується резервне копіювання на зовнішні носії (магнітооптичні диски, дис­ки CD-R і CD-RW, вінчестери). Резервне копіювання виконується за допомо­гою спеціальних утиліт, що забезпечують створення компактних архівів. Одна з таких утиліт, Microsoft Backup, входить до комплекту Windows.

  • Архівація при шифруванні даних. Ця операція виконується з метою змен­шення імовірності злому криптосистеми. Доведено, що чим менша кореляція (взаємозв'язок) між блоками вхідної інформації, тим нижча імовірність злому. Процедура архівації, знищуючи надмірну інформацію, ліквідує кореляції у вхідному потоці.

Термін "архівація" не зовсім точний. Головне призначення програм-архіваторів - стискування файлів з метою економії пам'яті. Стискуванню (ущільненню) можуть бути піддані: файли, теки, диски. Стискування файлів і папок потрібне або для їх транспортування, або для резервного копіювання, або для обміну інформацією по мережі Інтернет. Ущільнення дисків застосовують для підвищення ефективності використання їх робочого простору (зазвичай для дисків недостатньої місткості).

Існує багато програми-архіваторів, що мають різні показники по мірі і часу стискування, ці показники можуть бути різними для різних файлів (текстових, графічних, виконуваних і так далі), тобто один архіватор добре стискує текстовий файл, а інший - виконуваний.

Архіватором (пакувальником) називається програма, що дозволяє за рахунок застосування спеціальних методів стискування інформації створювати копії файлів меншого розміру, а також об'єднувати копії декількох файлів в один архівний файл, з якого можна при необхідності витягнути файли в їх первинному виді.

Увесь спектр існуючих сьогодні архіваторів можна розділити на три групи, які ми умовно назвемо файловими, програмними і дисковими.

Файлові архіватори - дозволяють упаковувати один або декілька файлів (наприклад, увесь вміст цього підкаталогу разом з вкладеними в нього підкаталогами) в єдиний архівний файл. Розмір останнього, як правило, менше, ніж сумарний розмір початкових файлів, але скористатися запакованими програмами або даними, поки вони знаходяться в архіві, не можна, поки вони не будуть розпаковані. Для розпаковування архівного файлу зазвичай використовується той же самий архіватор.

Програмні архіватори діють інакше. Вони дозволяють упакувати за один прийом один єдиний файл - виконувану програму ЕХЕ-типу, та зате так, що програма, що заархівувала, буде відразу після її запуску на виконання самораспаковываться в оперативній пам'яті і тут же починати роботу.

Дискові архіватори - дозволяють програмним способом збільшити доступний простір на жорсткому диску. Типовий дисковий архіватор є резидентним драйвером, який непомітно для користувача архівує будь-яку записувану на диск інформацію і розпаковує її назад при читанні. Проте операції читання/запису файлів дещо сповільнюються, оскільки процесору потрібно час для упаковки і розпаковування.

Для архівації використовуються спеціальні програми - архіватори або диспетчери архівів. Найбільш відомі архіватори: WinZip; WinRar; WinArj. Ці програми забезпечують можливість використання і інших архіваторів, тому, якщо на комп'ютері, куди перенесені стислі в них файли, відсутні вказані програми, архіви можна розпакувати за допомогою іншого архіватора. Досі широко використовуються і відповідні програми, створені в MS DOS, але здатні працювати і в Windows. Майже усі архіватори дозволяють створювати зручні архіви (SFX - Self - extracting -архивы), що самораспаковывающиеся, - файли з розширенням .ехе. Для розпаковування такого архіву не потрібно програму-архіватор, досить запустити архів *.ехе як програму. Багато архіваторів дозволяють створювати багатотомні (розподілені) архіви, які можуть розміщуватися на декількох дискетах.

Основними характеристиками програм-архіваторів є:

  • швидкість роботи;

  • сервіс (набір функцій архіватора);

  • міра стискування - відношення розміру початкового файлу до розміру упакованого файлу.

Основними функціями архіваторів є:

  • створення архівних файлів з окремих (чи усіх) файлів поточного каталогу і його підкаталогів, завантажуючи в один архів до 32 000 файлів;

  • додавання файлів в архів;

  • витягання і видалення файлів з архіву;

  • перегляд утримуваного архіву;

  • перегляд вмісту файлів, що архівуються, і пошук рядків у файлах, що архівуються;

  • введення в архів коментарі до файлів;

  • створення багатотомних архівів;

  • створення архівів, що самораспаковывающихся, як в одному томі, так і у вигляді декількох томів;

  • забезпечення захисту інформації в архіві і доступ до файлів, поміщених в архів, захист кожного з поміщених в архів файлів циклічним кодом;

  • тестування архіву, перевірка збереження в нім інформації;

  • відновлення файлів (частково або повністю) з пошкоджених архівів;

  • підтримка типів архівів, створених іншими архіваторами та ін.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]