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

Обложка
  • Авторы: Андрианов С.А1, Зеленов С.В1, Мутилин В.С1,2, Петренко А.К1,3,4
  • Учреждения:
    1. Институт системного программирования им. В.П. Иванникова РАН
    2. Московский физико-технический институт (государственный университет)
    3. Московский государственный университет им. М.В. Ломоносова
    4. Национальный исследовательский университет «Высшая школа экономики»
  • Выпуск: № 5 (2025)
  • Страницы: 11-21
  • Раздел: ПРОГРАММНАЯ ИНЖЕНЕРИЯ, ТЕСТИРОВАНИЕ И ВЕРИФИКАЦИЯ ПРОГРАММ
  • URL: https://medbiosci.ru/0132-3474/article/view/378352
  • DOI: https://doi.org/10.7868/S3034584725050023
  • ID: 378352

Цитировать

Полный текст

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

Аннотация

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

Об авторах

С. А Андрианов

Институт системного программирования им. В.П. Иванникова РАН

Email: andrianov@ispras.ru
ORCID iD: 0000-0002-6855-7919
Москва

С. В Зеленов

Институт системного программирования им. В.П. Иванникова РАН

Email: zelenov@ispras.ru
ORCID iD: 0000-0003-0446-0541
Москва

В. С Мутилин

Институт системного программирования им. В.П. Иванникова РАН; Московский физико-технический институт (государственный университет)

Email: mutilin@ispras.ru
Москва; Долгопрудный

А. К Петренко

Институт системного программирования им. В.П. Иванникова РАН; Московский государственный университет им. М.В. Ломоносова; Национальный исследовательский университет «Высшая школа экономики»

Email: petrenko@ispras.ru
ORCID iD: 0000-0001-7411-3831
Москва; Москва; Москва

Список литературы

  1. Java Memory Model, § 17.4. 2013. https://docs.oracle.com/javase/specs/jls/se19/html/jls-17.html
  2. Andrianov P., Mutilin V. Static Memory Consistency Constraints Checking // System Informatics. 2023. Vol. 22. P. 1–10.
  3. Zelenov S., Zelenova S. Model-Based Testing of Optimizing Compilers // Testing of Software and Communicating Systems / ed. by Petrenko A., Veanes M., Tretmans J., Grieskamp W. Berlin, Heidelberg: Springer Berlin Heidelberg. 2007. P. 365–377.
  4. Beyer D., Henzinger T.A., Théoduloz G. Configurable software verification: concretizing the convergence of model checking and program analysis // Proceedings of CAV. Berlin, Heidelber: Springer-Verlag. 2007. P. 504–518.
  5. Beyer D., Keremoglu M. CPAchecker: A Tool for Configurable Software Verification // Computer Aided Verification. Springer Berlin Heidelberg, 2011. Vol. 6806 of Lecture Notes in Computer Science. P. 184–190.
  6. Wickerson J., Batty M., Sorensen T., Constantinides G. Automatically comparing memory consistency models. 2017. P. 190–204.
  7. Alglave J., Maranget L., Sarkar S., Sewell P. Fences in Weak Memory Models / ed. by Touili T., Cook B., Jackson P. // Computer Aided Verification. Berlin, Heidelberg: Springer Berlin Heidelberg. 2010. P. 258–272.
  8. Protsenko A. Architecture Independent Test Templates for Virtual Machines and Microprocessors // Informacionnye Tehnologii. 2024. Vol. 30. P. 579–584.

Дополнительные файлы

Доп. файлы
Действие
1. JATS XML

© Российская академия наук, 2025

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

 

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