RUS  ENG
Полная версия
ЖУРНАЛЫ // Системы и средства информатики // Архив

Системы и средства информ., 2014, том 24, выпуск 2, страницы 114–130 (Mi ssi348)

Обнаружение гонок в Java-программах с применением синхронизационных контрактов

Д. И. Цителовa, В. Ю. Трифановb

a ООО «Эксперт-Система»
b ООО «Эксперт-Система СЗ»

Аннотация: Состояние гонки (data race) возникает в многопоточной программе, когда несколько потоков одновременно обращаются к одному и тому же разделяемому участку памяти, где хотя бы одно обращение — запись. Состояния гонки трудновоспроизводимы и могут приводить к повреждению глобальных структур данных, поэтому исследования в области автоматического поиска гонок ведутся уже более 20 лет. В данной статье рассматривается вопрос повышения производительности динамического поиска гонок в Java-программах без существенной потери точности. Для решения этой задачи используются синхронизационные контракты — частичные спецификации поведения программных методов и классов в многопоточной среде. Применение контрактов позволяет исключать из анализа не интересные с точки зрения поиска гонок части целевого приложения (например, сторонние библиотеки). В статье рассматриваются преимущества и ограничения подхода, описывается язык спецификации контрактов и некоторые технические детали реализации.

Ключевые слова: многопоточность; состояние гонки; динамический анализ; автоматическое обнаружение ошибок.

Поступила в редакцию: 20.01.2014

DOI: 10.14357/08696527140208



Реферативные базы данных:


© МИАН, 2024