Skip to content

cypok/master_thesis

Repository files navigation

Текст моей магистерской диссертации и другие бумажки.

Тема: "Применение анализа указателей и синонимов для оптимизации многопоточных программ".

Структура проекта:

  • common - общие для всех документов файлы;
  • text - основной текст работы;
  • presentation/slides - текст презентации и слайды для различных выступлений;
  • pre_annotation - аннотация работы на момент утверждения темы;
  • post_annotation - окончательная аннотация (реферат) работы;
  • opinion - отзыв научного руководителя;
  • review - рецензия;
  • issc - тезис на МНСК.

По тегам можно смотреть различные версии документов, например на момент сдачи курсовой работы, перед предзащитой и т.д.:

  • course_work - текст и презентация курсовой работы;
  • issc - презентация к выступлению на МНСК;
  • seminar - презентация к выступлению на семинаре;
  • pre_defence - текст и презентация к предзащите;
  • rc1 - сдача текста рецензенту;
  • rc2 - повторная сдача текста рецензенту;
  • rc3 - сдача текста на переплет;
  • defence - презентация к защите.

Для сборки LaTeX документов используется rubbr (хотя можно собирать и в ручную).

Некоторые документы используют информацию о последнем Git коммите. Изначально выдаются сообщения no Git info на месте реальной информации. Для ее генерации необходимо скопировать хуки и выполнить, например, checkout:

ln -s ../../common/gitinfo-hook .git/hooks/post-checkout
ln -s ../../common/gitinfo-hook .git/hooks/post-commit
ln -s ../../common/gitinfo-hook .git/hooks/post-merge
git checkout master

О чем работа

Анализ указателей и синонимов является одним из видов статического анализа. Результаты такого анализа могут быть использованы для усиления других видов анализа, проводимых оптимизирующим компилятором. Таким образом может быть усилен достаточно обширный класс анализов и оптимизаций, как классических, так и объектно-ориентированных.

В программах на языке Java семантика любого участка кода программы зависит от многопоточного окружения. Взаимодействие различных потоков исполнения друг с другом и с разделяемой памятью описывается моделью памяти данного языка/среды, которая определяет корректность тех или иных преобразований программы. Корректное и при этом не чрезмерно препятствующее оптимизациям определение зависимостей и связей в программе возможно только при проведении нетривиального анализа указателей и синонимов.

В данной работе для выражения неявных зависимостей по памяти была использована M-переменная, представляющая образ памяти. Семантика всех операций языка Java, взаимодействующих с памятью, выражена в терминах указателей и M-переменной, в соответствии с моделью памяти языка. Сконструировано внутреннее представление для множества целей указателей и M-переменной, позволяющее проводить корректный потоковый анализ программы.

Все это позволило разработать эффективный алгоритм анализа указателей, пригодный для анализа многопоточных программ на языке Java.

About

Text of my master thesis / Текст моей магистерской диссертации

Resources

Stars

Watchers

Forks

Packages

No packages published