Тип работы:
Предмет:
Язык работы:


Разработка библиотеки ввода-вывода с прозрачным сжатием данных и произвольным доступом для языка СИ

Работа №142369

Тип работы

Бакалаврская работа

Предмет

математика

Объем работы33
Год сдачи2022
Стоимость4650 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
49
Не подходит работа?

Узнай цену на написание


1. Введение 4
2. Обзор существующих решений 6
3. Постановка задачи 9
4. Описание решения 11
4.1. Механизм выбора блока 12
4.2. Загрузка блока в память 13
4.3. Перезапись/запись блока 13
4.4. Запись таблиц блоков 14
4.5. Уплотнение сжатого файла 15
4.6. Механизм кэширования блоков 16
4.7. Настраиваемый компрессор данных 17
4.8. Стандартная конфигурация 18
4.9. Описание API 19
4.10. Архитектура библиотеки 23
4.11. Формат сжатого файла 23
4.12. Тесты производительности 24
5. Заключение 27
Список литературы 28

Программы, обрабатывающие большие массивы данных, т.е. объе­мы данных, превышающие размеры оперативной памяти, активно ис­пользуют дисковую подсистему для хранения информации о промежу­точных вычислениях и результатах своей работы. Примерами задач, требующих хранения таких объемов данных, могут служить задачи численного моделирования статических и динамических систем, зада­чи биоинформатики, системы хранения и анализа протоколов работы и другие. Во многих случаях требуется произвольный доступ к отдель­ным участкам данных на чтение и изменение.
Применение сжатия способно уменьшить требуемые объемы диско­вого пространства для хранения данных (например, в операционных системах семейства GNU/Linux широко применяется модуль ядра zram для сжатия данных процессов в памяти). Однако, прямое применение библиотек сжатия и архиваторов не всегда удобно, так как использова­ние подобных инструментов требует освоения пользователем их интер­фейсов и учета особенностей работы каждой из программ.
Более удобное решение представит собой библиотеку, обеспечиваю­щую сохранение данных в сжатом виде, но имеющую при этом привыч­ный для используемого языка программирования (аналогичный стан­дартной библиотеке языка) интерфейс файлового ввода-вывода.
Данная работа посвящена реализации библиотеки файлового ввода- вывода с произвольным доступом к данным, обеспечивающей прозрач­ные для пользователя (программиста) сжатие и распаковку сохраняе­мых в файл данных, для языка программирования СИ с интерфейсом, аналогичным интерфейсу программирования приложений библиотеки stdio. Библиотека должна представлять собой обертку над реализаци­ями алгоритмов сжатия данных, предоставляемых библиотеками, вы­бираемыми программистом.
В ходе работы реализован функционал, обеспечивающий хранение данных в виде независимо сжимаемых блоков, произвольный доступ к данным на чтение и изменение. Также была проведена оптимизация операций чтения и записи с помощью реализации механизма кеширо­вания блоков данных. Пользователю предоставлена возможность кон­фигурирования работы библиотеки. Были проведены тесты производи­тельности ввода-вывода и сделан вывод о применимости полученного решения на практике.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В ходе проведения данной работы была реализована библиотека файлового ввода-вывода, обеспечивающая прозрачное для пользовате­ля (программиста) сжатие и распаковку сохраняемых в файл данных, для языка программирования Си.
Были решены следующие задачи:
1. Реализован интерфейс программирования приложений (API), обес­печивающий произвольный доступ к данным, в который вошли следующие аналоги функций стандартной библиотеки:
• cFILE* cfopen(const char*, const char*, cCONFIG*);
• int cfclose(cFILE*);
• int cfseek(cFILE*, long int, int);
• long int oftell(cFILE*);
• void crewind(cFILE*);
• size_t cfread(void*, size_t, size_t, cFILE*);
• size_t cfwrite(void*, size_t, size_t, cFILE*);
• int cfsync(cFILE*).
2. Реализован механизм кэширования блоков.
3. Пользователю предоставлена возможность конфигурирования ра­боты библиотеки.
4. Выполнено тестирование производительности файлового ввода- вывода и сделан вывод о пригодности реализованной библиоте­ки ввода-вывода для использования в задачах, требующих произ­вольного доступа к данным на чтение и изменение.
Исходный код библиотеки можно найти на github-репозитории: https://github.com/rousewayse/compressedio


[1] Bellard Fabrice. QEMU. — 2022. — Access mode: https://wiki. qemu.org/ (online; accessed: May 22, 2022).
[2] Cappelletti Luca. ZIPFS. — 2022. — Access mode: https: //www.androwish.org/home/wiki?name=ZIP+virtual+file+system (online; accessed: May 22, 2022).
[3] Collet Yann. LZ4. — 2022.—Access mode: https://lz4.github. io/lz4/ (online; accessed: May 22, 2022).
[4] Dennis Shasha Theodore Johnson. A Low Overhead High Perfor­mance Buffer Management Replacement Algorithm. — P. 440. — Ac­cess mode: http://www.vldb.org/conf/1994/P439.PDF (online; ac­cessed: May 22, 2022).
[5] Geldreich Rich. Miniz. — 2022. — Access mode: https://github. com/richgel999/miniz (online; accessed: May 22, 2022).
[6] Gonzalez Ryan. Fuse-zip. — 2022. — Access mode: https://github. com/refi64/fuse-zip (online; accessed: May 22, 2022).
[7] Handsaker Bob. bgzip. — 2022. — Access mode: http://www.htslib. org/doc/bgzip.html (online; accessed: May 22, 2022).
[8] Jean-loup Gailly Mark Adler. ZLIB. A Massively Spiffy Yet Delicately Unobtrusive Compression Library. — 2022. — Access mode: https: //zlib.net/ (online; accessed: May 22, 2022).
[9] Markus Franz Xaver Johannes Oberhumer. Lzop. — 2017. — Access mode: https://www.lzop.org/ (online; accessed: May 22, 2022).
[10] Mason Chris. Btrfs. — 2022. — Access mode: https://btrfs.wiki. kernel.org/index.php/Main_Page (online; accessed: May 22, 2022).
[11] McGugan Will. PyFilesystem. — 2022. — Access mode: https:// www.pyfilesystem.org/ (online; accessed: May 22, 2022).
[12] Microsoft. NT File System. — 2022. — Access mode: https://www. microsoft.com/ (online; accessed: May 22, 2022).
[13] Oracle. ZFS. — 2022. — Access mode: https://www.oracle.com/ Solaris/ (online; accessed: May 22, 2022).
[14] Pavlov Igor. 7-Zip. — 2022.—Access mode: https://www.7-zip. org/ (online; accessed: May 22, 2022).
[15] Project The Tukaani. XZ Utils. — 2022. — Access mode: https:// tukaani.org/xz/ (online; accessed: May 22, 2022)....19


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ