Открытый доступ Открытый доступ  Доступ закрыт Доступ предоставлен  Доступ закрыт Только для подписчиков

№ 5 (2025)

Обложка

Весь выпуск

Открытый доступ Открытый доступ
Доступ закрыт Доступ предоставлен
Доступ закрыт Только для подписчиков

ПАРАЛЛЕЛЬНОЕ И РАСПРЕДЕЛЕННОЕ ПРОГРАММИРОВАНИЕ

ПРИМЕНЕНИЕ МОНАДНЫХ ВЫЧИСЛЕНИЙ ПРИ РЕШЕНИИ ЧИСЛЕННЫХ ЗАДАЧ

Краснов М.М.

Аннотация

Данная работа является дальнейшим развитием исследований по применению функционального программирования для численных методов. В частности, функциональное программирование может помочь в перенесении программ на графические ускорители с технологией CUDA. В предыдущих работах основной упор делался на функторах (и аппликативных функторах). Теоретические основы монадных вычислений излагались, но в настоящей работе основной упор делается на их практическом применении. Один из базовых принципов функционального программирования — активное использование композиции функций, которая позволяет строить из простых функций сложные и, таким образом, упрощает написание сложных программ. Монадные вычисления позволяют строить цепочки сложных вычислений. Такие цепочки — это тоже, в некотором смысле, композиция функций, но на более высоком, монадном уровне (монадная композиция).
Программирование. 2025;(5):3-10
pages 3-10 views

ПРОГРАММНАЯ ИНЖЕНЕРИЯ, ТЕСТИРОВАНИЕ И ВЕРИФИКАЦИЯ ПРОГРАММ

ВЕРИФИКАЦИЯ КОРРЕКТНОСТИ ОПТИМИЗИРУЮЩИХ ПРЕОБРАЗОВАНИЙ ПРОГРАММЫ ОТНОСИТЕЛЬНО ТРЕБОВАНИЙ К СОГЛАСОВАННОСТИ ПАМЯТИ

Андрианов С.А., Зеленов С.В., Мутилин В.С., Петренко А.К.

Аннотация

Оптимизационные преобразования, выполняемые компилятором, могут нарушать требования по обеспечению согласованности доступа к общей памяти из различных потоков одной многопоточной программы — это приводит к ошибкам, в результате которых поведение программы будет отличаться от ожидаемого. Требования согласованности для того или иного языка программирования называются моделью памяти. Примером ошибки такого класса может быть некорректное изменение порядка выполнения инструкций, которое не влияет на поведение однопоточной программы, но приводит к непредсказуемым результатам в многопоточном случае. Такие ошибки часто трудно обнаружить, поскольку они проявляются редко и существенно зависят от аппаратуры и состояния вычислительной системы. Хотя существуют формальные методы проверки согласованности использования общей памяти, их масштабируемость для промышленного программного обеспечения остается серьезной проблемой. Для верификации многопоточных программ ранее был предложен инструмент MCC, использовавший простой вид статического анализа. В этой статье мы представляем модификацию инструмента MCC, в котором реализован метод проверки моделей для верификации корректности обеспечения согласованности доступа к памяти. Предложенный метод объединяет методы генерации тестовых программ и метод статического анализа программ. Для генерации тестовых программ используется инструмент ОТК, для статического анализа — модифицированная версия инструмента MCC, который проверяет все возможные варианты выполнения сгенерированной тестовой программы, не зависящие от специфики того или иного аппаратного обеспечения. Инструмент был опробован на промышленной виртуальной машине ARK и успешно выявил две реальные ошибки в оптимизации компилятора.
Программирование. 2025;(5):11-21
pages 11-21 views

ИНФОРМАЦИОННАЯ БЕЗОПАСНОСТЬ

СОЗДАНИЕ АРХИТЕКТУРЫ СИСТЕМЫ ЗАЩИТЫ ДАННЫХ НА ОСНОВЕ ПОСТКВАНТОВОЙ КРИПТОГРАФИИ

Нгуен Т., Куач Д., Дау Т., Лык Н.

Аннотация

В быстро развивающейся области квантовых вычислений постквантовая криптография (PQC) играет ключевую роль в создании защищенных криптографических систем, устойчивых как к квантовым, так и к классическим компьютерам. В данной статье рассматриваются интеграция и внедрение алгоритмов PQC, таких как Falcon и Dilithium для цифровых подписей, а также Crystal-Kyber для механизмов инкапсуляции ключей. В модели “сервер-клиент” исследование продемонстрировало сервис постквантовой защищенной связи с временем шифрования менее 2 мс, производительностью подписания до 50 мс для небольших файлов и 11 073 мс для больших файлов, а также временем обмена ключами до 16 мс. Эти показатели дают глубокое понимание устойчивости и безопасности предложенных криптографических решений в реальных условиях.
Программирование. 2025;(5):22–34
pages 22–34 views

ПОВЫШЕНИЕ ЭФФЕКТИВНОСТИ ФАЗЗИНГА С ПОМОЩЬЮ АВТОМАТИЧЕСКОЙ ГЕНЕРАЦИИ ФАЗЗИНГ-ОБЕРТОК

Чан Т.Т.

Аннотация

Фаззинг остается наиболее эффективным методом выявления уязвимостей в программном обеспечении. В контексте тестирования методом фаззинга фаззер передает различные входные данные фаззинг-оберткам, которые предназначены для всестороннего тестирования критических участков клиентского кода. Различные исследования были посвящены оптимизации и разработке продвинутых фаззеров, таких как AFL++, libFuzzer, Honggfuzz, syzkaller, ISP-Fuzzer, что значительно повысило эффективность обнаружения уязвимостей в широко используемых программах и библиотеках. Тем не менее достижение более высокого покрытия требует улучшения как качества, так и количества фаззинг-оберток. В крупных программных проектах и библиотеках, содержащих множество пользовательских функций и типов данных, ручное создание фаззинг-оберток требует значительных временных и трудовых затрат. Эта проблема подчеркивает необходимость автоматизированных методов не только для генерации фаззинг-оберток, но и для упрощения их исполнения и анализа результатов. В данной статье мы представляем подход к улучшению фаззинга за счет автоматизации генерации фаззинг-оберток на основе статического анализа исходного кода библиотек. Предложенный метод включает несколько этапов: анализ структур исходного кода для корректной генерации вызовов функций и фаззинг-оберток, сопоставление входных данных фаззера с соответствующими параметрами функций, обработка результатов компиляции для фаззинг-оберток, а также автоматический сбор и анализ результатов исполнения. Полученные результаты в экспериментах с библиотеками на C/C++ превосходят ряд аналогичных методов, используемых в данной области.
Программирование. 2025;(5):35-42
pages 35-42 views

АНАЛИЗ И ТРАНСФОРМАЦИЯ ПРОГРАММ

ПРОЕКТИРОВАНИЕ ВЫСОКОЭФФЕКТИВНЫХ ЦИФРОВЫХ ФИЛЬТРОВ С ИСПОЛЬЗОВАНИЕМ СБАЛАНСИРОВАННЫХ МОДУЛЕЙ СИСТЕМЫ ОСТАТОЧНЫХ КЛАССОВ

Ляхов П.А., Нагорнов Н.Н., Бергерман М.В., Абдулсалямова А.Ш., Абдулкадиров Р.И.

Аннотация

В данной работе предложен подход к поиску сбалансированных наборов модулей специального типа для высокоскоростной цифровой фильтрации сигналов в системе остаточных классов (СОК) с использованием блоков усеченного умножения с накоплением. Основная идея заключается в детальном анализе вычислительной задержки как множества модулей СОК по отдельности, так и различных комбинаций этих модулей. Предложенный подход снизил задержку цифровой фильтрации до 60.85% в зависимости от вычислительного диапазона и разрядности модулей СОК, соответствующих 16-, 24-, 32- и 48-битному фильтрам. Разработанные фильтры в СОК могут быть использованы для повышения производительности цифровых устройств, в которых скорость обработки данных является основным приоритетом. Дальнейшие исследования будут направлены на использование предложенных фильтров для решения различных прикладных задач цифровой обработки сигналов и изображений.
Программирование. 2025;(5):43-55
pages 43-55 views

ОПЕРАЦИОННЫЕ СИСТЕМЫ

МОДИФИЦИРОВАННЫЙ МЕТОД ПЛАНИРОВАНИЯ ЗАДАЧ В ЯДРЕ LINUX НА ОСНОВЕ ОПРЕДЕЛЕНИЯ ИНТЕНСИВНОСТИ ОБРАЩЕНИЙ К ПАМЯТИ

Варламова Е.А., Романова Т.Н.

Аннотация

В настоящее время мобильные устройства должны соответствовать высоким требованиям по производительности и длительному времени работы без зарядки аккумулятора, что подразумевает низкое энергопотребление. Эти параметры напрямую зависят от частоты процессора: на высокой частоте он способен выполнять больше инструкций за единицу времени, но при этом потребляет больше энергии, и наоборот. В данной работе исследуются современные методы планирования процессов в ядре операционной системы Linux в целях повышения производительности и снижения энергопотребления мобильных устройств. Модифицируется метод планирования процессов ОС Linux, а именно модифицируются: выбор очереди ядра процессора для процесса, выбор частот ядер процессора. В основе модификации лежит решение дискретной двухкритериальной оптимизационной задачи. В качестве критериев оптимизации рассматриваются две взаимосвязанные характеристики: производительность и энергопотребление. Основная идея модификации метода заключается в анализе инструкций выполняемых задач для выявления ситуаций, когда увеличение частоты процессора оказывается неэффективным из-за частых обращений к памяти. Задача решается с определенными ограничениями: не учитываются гетерогенные архитектуры; аппаратная многопоточность не принимается во внимание, т. е. каждое логическое ядро рассматривается как физическое. На основе предложенного метода было разработано программное обеспечение, которое было протестировано на 10 тестах из Rodinia Benchmark Suite. Этот набор тестов используется для оценки производительности компьютеров в различных задачах, таких как вычисления общего назначения, обработка изображений и обработка сигналов. Результаты исследования показали, что применение предложенного подхода позволило снизить энергопотребление мобильного устройства в среднем на 13% и увеличить производительность на 4% по сравнению с существующим планировщиком ядра Linux.
Программирование. 2025;(5):56–65
pages 56–65 views

Согласие на обработку персональных данных

 

Используя сайт https://journals.rcsi.science, я (далее – «Пользователь» или «Субъект персональных данных») даю согласие на обработку персональных данных на этом сайте (текст Согласия) и на обработку персональных данных с помощью сервиса «Яндекс.Метрика» (текст Согласия).