os_labs/lab6/README.md

59 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Лабораторная работа №6
Входные данные тестов находятся в файле [.execme](.execme), там же находятся и сами тесты.
## Задание 1
Был реализован алгоритм вычисления контрольной суммы с использованием XOR.
Тестовые данные были проверены онлайн-калькулятором
https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/
## Задание 2
Был реализован алгоритм вычисления контрольной суммы Флетчера.
Тестовые данные были проверены онлайн-калькулятором
https://gchq.github.io/CyberChef/#recipe=Fletcher-16_Checksum()
## Задание 3
Был реализован быстрый алгоритм вычисления контрольной суммы CRC-16-IBM (он же CRC-16).
Тестовые данные были проверены онлайн-калькулятором
https://emn178.github.io/online-tools/crc16.html
## Задание 4
Для бенчмаркинга алгоритмов в программах был реализован ключ `-b`.
Результаты можно увидеть ниже:
```text
Allocating 512B file with random data...
XOR execution time: 0.000018s
Fletcher execution time: 0.000017s
CRC execution time: 0.000015s
Allocating 64KB file with random data...
XOR execution time: 0.000621s
Fletcher execution time: 0.001165s
CRC execution time: 0.000962s
Allocating 128MB file with random data...
XOR execution time: 0.876024s
Fletcher execution time: 1.921205s
CRC execution time: 1.235906s
```
Из этого можно сделать вывод, что наилучший из представленных алгоритм вычисления
контрольной суммы -- CRC-16. XOR-сумма имеет слишком много коллизий, а также нечувствительна
к перестановкам байтов, хотя она является наиболее быстрой. CRC-16 на больших файлах оказывается
ощутимо производительнее суммы Флетчера, хотя и требует на 256 байт больше памяти.
## Задание 5
В данном задании был использован алгоритм CRC-8-Maxim/Dallas для вычисления контрольных сумм
4Кб-блоков в файле, а также их сверки.
В тестах проверяется адекватность программ (создание контрольной суммы с последующей сверкой),
а так же поведение при повреждении файла.