Том 26, № 3 (2014)
Скачать выпуск
PDF
5-50
Аннотация
Статья посвящена важной проблеме систематизации и концептуализации теории расписаний, которая находит применение в таких предметных областях как управление производством, организация транспортных потоков, планирование проектов, управление ресурсами в вычислительных системах. Однако разнообразие математических моделей и методов составления расписаний обычно ставит перед прикладными математиками и программистами проблему построения быстрого алгоритма, а также его эффективной программой реализации с учетом особенностей решаемой задачи. Использование типовых решателей в составе математических библиотек общего назначения для подобных целей крайне ограниченно. Более перспективным для реализации программных приложений близкой функциональности представляется использование объектно-ориентированных каркасов. В статье предпринимается попытка систематизировать и обобщить модели и методы теории расписания с целью построения подобного каркаса. Главное внимание при этом уделяется задачам ресурсного планирования проектов, которые, с одной стороны, находят широкое практическое применение, а с другой стороны, - обобщают математические постановки, возникающие в смежных предметных областях и дисциплинах.
51-68
Аннотация
Представлена архитектура, интерфейсы и форматы входных и выходных данных платформы, реализованные пилотные версии инструментальных и проблемно-ориентированных модулей программной платформы Теметос для сопровождения вычислительного эксперимента. Платформа Теметос предназначена для полномасштабного математического моделирования в различных прикладных и фундаментальных областях. Она предоставляет возможности подготовки геометрической и физической моделей исследуемой конструкции или физического процесса к расчету, инструменты настройки внешних или встроенных проблемно-ориентированных модулей, позволяет осуществлять запуск, контроль прохождения и анализ результатов расчетов.
69-90
Аннотация
Большинство приложений имеют модульную структуру, но оптимизация таких программ при сборке по раздельной схеме “компиляция-связывание” ограничивается отдельным модулем. И, хотя многие компиляторы поддерживает межмодульные оптимизации, в случае больших приложений их полноценное проведение зачастую неприемлемо ввиду значительных затрат времени и памяти. Решающие эту проблему компиляторные системы, способные производить межмодульные оптимизации с учетом возможностей аппаратуры и требований пользователя по затратам ресурсов, называются масштабируемыми системами межмодульных оптимизаций, или оптимизаций времени связывания. В данной статье мы ставим задачу рассмотреть прежде всего различные подходы к проблеме масштабируемости инфраструктуры относительно потребляемых ресурсов, а не сами межпроцедурные и межмодульные оптимизации или их эффективность в той или иной реализации, так как они по большому счёту не зависят от используемой инфраструктуры. Интерес представляют возможности распараллеливания тех или иных стадий компиляции целой многомодульной программы, а также способы экономии памяти при межмодульном анализе. Данный обзор включает в себя несколько компиляторных систем для языков общего назначения: C, C++, Fortran, - но нередко системы способны оптимизировать и другие языки, если для них реализован соответствующий генератор промежуточного представления. В заключении статьи будут представлены предварительные результаты по масштабированию компонентов связывания инфраструктуры LLVM.
91-102
Аннотация
Описываются работы по оптимизации решателя систем линейных уравнений пакета OpenFOAM для гетерогенной вычислительной системы с GPU-ускорителями в модели MPI + CUDA. В ходе работ предложена параллельная GPU-версия метода предобуславливания AINV и проведен ряд специфичных GPU-оптимизаций, в основном направленных на минимизацию обменов данными с GPU. Представлены экспериментальные результаты тестирования решателя на некоторых задачах OpenFOAM.
103-112
Аннотация
В статье описывается алгоритм статического поиска ошибки повторной блокировки семафоров, позволяющий выдавать предупреждения с низким уровнем ложных срабатываний. Поиск ошибок рассмотрен для абстрактной библиотеки, включающей функции блокировки семафора, разблокировки семафора и условной блокировки семафора. Определено множество регулярных языков, моделирующих блокировки и разблокировки при конкретном исполнении программы. Определён домен, аппроксимирующий множество регулярных языков. Алгоритм реализован в терминах анализа потока данных. При анализе элементы домена используются в качестве свойств потока данных. Алгоритм описан для программы с одним семафором и без алиасов. В этом случае каждое выданное предупреждение должно соответствовать ошибке при конкретном выполнении. Алгоритм реализован в системе статического анализа Svace, разрабатываемой в Институте системного программирования Российской академии наук. Svace осуществляет анализ алиасов и сопоставление формальных и фактических параметров при вызове функции. Благодаря этому можно применять алгоритм поиска повторных блокировок для программы, содержащей только один семафор, а вся остальная работа будет выполнена системой Svace. Алгоритм поиска повтороных блокировок реализованный в Svace может выдавать некоторое количество ложных срабатываний, т. к. Svace выполняет неконсервативный анализ.
113-126
Аннотация
Уязвимости программного обеспечения представляют серьезную угрозу безопасности информационной системы. Любое программное обеспечение, написанное на языках C/C++, потенциально содержит в себе значительное количество уязвимостей, используя которые злоумышленник может с помощью специально подготовленных эксплойтов захватить контроль над системой. Для противодействия эксплуатации таких уязвимостей в данной работе предлагается использовать компиляторные преобразования: перестановка местами функций в модуле, добавление локальных переменных на стек функции, перемешивание локальных переменных на стеке. С помощью этих преобразований предлагается генерировать диверсифицированную популяцию исполняемых файлов компилируемого приложения. Такой подход, например, усложняет планирование ROP-атак на всю популяцию. Злоумышленник, получив в свое распоряжение один исполняемый файл, может сделать ROP-эксплойт, работающий только для этой версии приложения. Остальные исполняемые файлы популяции останутся устойчивыми к данной атаке.
127-144
Аннотация
В статье рассматривается метод автоматизированного построения эксплойтов для уязвимости переполнения буфера на стеке и его применение к задаче оценки критичности ошибок в программном обеспечении. Метод, на основе динамического анализа и символьное выполнения, применяется к бинарным файлам программ без дополнительной отладочной информации. Описанный метод был реализован в виде инструмента для построения эксплойтов. Возможности инструмента были продемонстрированы на примере 8 уязвимостей в приложениях, работающих под управлением ОС Windows и Linux, 3 из которых не были исправлены на момент написания статьи.
145-166
Аннотация
В статье исследована задача проверки эквивалентности последовательных программ, некоторые операторы которых обладают свойствами перестановочности и подавления. Два оператора считаются перестановочными, если результат их последовательного выполнения не зависит от порядка, в котором эти операторы выполняются. Считается, что оператор b подавляет оператор a , если последовательное выполнение операторов a и b дает такой же результат, что и выполнение одного лишь оператора b . Разрешимость проблемы эквивалентности в исследуемой модели программ была установлена в 1971 г. А.А. Летичевским. Однако с тех пор вопрос о сложности проверки эквивалентности таких программ оставался открытым. Основной результат статьи - алгоритм, осуществляющий проверку эквивалентности программ с перестановочными и подавляемыми операторами за время, полиномиально зависящее от размеров анализируемых программ.
167-198
Аннотация
Обфускацией программ называется такое эквивалентное преобразование программ, которое придает программе форму, затрудняющую понимание алгоритмов и структур данных, реализуемых программой, и препятствующую извлечению из текста программы определенной секретной информации, содержащейся в ней. Поскольку обфускация программ может найти широкое применение при решении многих задач криптографии и компьютерной безопасности, задаче оценки стойкости обфускации придается очень большое значение, начиная с самых первых работ в этой области. В этой статье приводится обзор различных определений стойкости обфускации программ и результатов, устанавливающих возможность или невозможность построения стойкой обфускации программ в тех или иных криптографических предположениях.
ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)
ISSN 2220-6426 (Online)