Текст моей работы на соискание степени бакалавра физики, и другие бумажки.
Тема: "Анализ указателей и синонимов для многопоточных программ"
- common - общие для всех документов файлы;
- text - основной текст работы;
- presentation/slides - текст презентации и слайды для различных выступлений;
- pre_annotation - аннотация работы на момент утверждения темы;
- post_annotation - окончательная аннотация работы;
- opinion - отзыв научного руководителя;
- review - рецензия;
- issc - тезис на МНСК.
По тегам можно смотреть различные версии документов, например на момент сдачи курсовой работы, перед предзащитой и т.д.
Статический анализ программ активно применяется в оптимизирующих компиляторах и в инструментах статического анализа. Одним из видов статического анализа и является анализ указателей, классические алгоритмы для проведения которого были разработаны еще в 1990-х годах для C-подобных языков. В данной работе ставилась задача разработать алгоритм анализа указателей для языка Java, который имеет существенные отличия от языка C. Также алгоритм анализа должен быть адаптирован для анализа многопоточных программ, что актуально в данное время, в связи с повсеместным распространением многоядерных процессоров.
В работе проведен анализ и сравнение классических алгоритмов анализа указателей и синонимов. Взяв за основу алгоритм, предложенный Lars Ole Andersen, был разработан новый алгоритм, пригодный для эффективного анализа многопоточных программ на языке Java, что потребовало тщательного изучения спецификации языка Java и его модели памяти.
Алгоритм реализован в рамках оптимизирующего статического Java компилятора Excelsior Research Virtual Machine. В ходе экспериментов было сделано следующее: измерена практическая сложность алгоритма (временная и емкостная) и проведено сравнение точности с другими алгоритмами анализа. Разработанный алгоритм на практике продемонстрировал удовлетворительную производительность и существенный прирост точности по сравнению с алгоритмами, не адаптированными для анализа многопоточных Java-программ.