Preview

Труды Института системного программирования РАН

Расширенный поиск

Адаптация алгоритма ThreadSanitizer для обнаружения гонок по данным в ядре ОСРВ

https://doi.org/10.15514/ISPRAS-2025-37(6)-38

Аннотация

Дизайн и реализация корректных алгоритмов многопоточной синхронизации являются неотъемлемой частью разработки современных операционных систем реального времени. Тестирование корректности алгоритма в модели памяти языка – одна из важнейших задач на этом пути. В статье описывается интеграция широко используемого алгоритма обнаружения гонок данных ThreadSanitizer из программной инфраструктуры LLVM в систему сборки и тестирования ядра операционной системы реального времени и его преимущества и недостатки в сравнении с другими подходами обнаружения ошибок многопоточной синхронизации. Среди прочего рассматривается определение семантики управления прерываниями и работы с физическими ядрами в контексте синхронизации в модели «выполняется прежде» (happens-before). В заключение приводятся результаты интеграции инструмента ThreadSanitizer в ядро операционной системы реального времени CLOS в сравнении с существующими подходами обнаружения ошибок в ядре данной операционной системы.

Об авторе

Егор Сергеевич ЕЛЬЧИНОВ
Институт системного программирования им. В.П. Иванникова РАН
Россия

Cтарший лаборант отдела технологий программирования Института системного программирования. Сфера научных интересов: методы динамического анализа ПО, алгоритмы многопоточной синхронизации, операционные системы.



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

1. J. Alglave, L. Maranget, P. E. McKenney, A. Parri, and A. Stern, Frightening small children and dis-concerting grown-ups: Concurrency in the linux kernel, SIGPLAN Not., vol. 53, pp. 405–418, Mar. 2018.

2. M. Elver, Concurrency bugs should fear the big bad data-race detector. https://lwn.net/Articles/816850/ , 2020. [Online; accessed 21-May-2025].

3. K. Serebryany and T. Iskhodzhanov, Threadsanitizer – data race detection in practice, pp. 62–71, 12 2009.

4. ISO Central Secretary, Information technology – Programming Languages – C, Standard ISO/IEC 9899:2024, International Organization for Standardization, Geneva, CH, 2024.

5. D. Vyukov, Llvm thread sanitizer. https://github.com/google/sanitizers/wiki/threadsanitizercppmanual, 2020. [Online; accessed 22-May-2025].

6. N. Komarov, On the implementation of data-breakpoints based race detection for linux kernel mod-ules, 2013.

7. S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson, Eraser: a dynamic data race de-tector for multithreaded programs, ACM Trans. Comput. Syst., vol. 15, p. 391–411, Nov. 1997.

8. F. Mattern, Virtual time and global states of distributed systems, 01 2004.

9. L. Lamport, Time, clocks, and the ordering of events in a distributed system, Commun. ACM, vol. 21, p. 558–565, July 1978.

10. A. Konovalov, Kernel thread sanitizer. https://github.com/google/kernel-sanitizers/blob/master/KTSAN.md , 2015. [Online; accessed 24-April-2025].


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

Рецензия

Для цитирования:


ЕЛЬЧИНОВ Е.С. Адаптация алгоритма ThreadSanitizer для обнаружения гонок по данным в ядре ОСРВ. Труды Института системного программирования РАН. 2025;37(6):91-108. https://doi.org/10.15514/ISPRAS-2025-37(6)-38

For citation:


ELCHINOV E.S. Adaptation of the ThreadSanitizer Algorithm for Data Race Detection in a RTOS Kernel. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2025;37(6):91-108. (In Russ.) https://doi.org/10.15514/ISPRAS-2025-37(6)-38



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)