Пожалуйста, используйте этот идентификатор, чтобы цитировать или ссылаться на этот ресурс: http://hdl.handle.net/11701/42811
Полная запись метаданных
Поле DCЗначениеЯзык
dc.contributor.advisorСоломенников Дмитрий Игнатьевичru_RU
dc.contributor.advisorSolomennikov Dmitrij Ignatevicen_GB
dc.contributor.authorПорсев Егор Валерьевичru_RU
dc.contributor.authorPorsev Egor Valerevicen_GB
dc.contributor.editorСалищев Сергей Игоревичru_RU
dc.contributor.editorSalisev Sergej Igorevicen_GB
dc.date.accessioned2023-07-26T12:44:57Z-
dc.date.available2023-07-26T12:44:57Z-
dc.date.issued2023
dc.identifier.other076638en_GB
dc.identifier.urihttp://hdl.handle.net/11701/42811-
dc.description.abstractПроизводительность является одним из ключевых качеств определяющих успех программного обеспечения. Для получения выигрыша в производительности применяется многопоточность — технология, позволяющая исполнение нескольких потоков инструкций параллельно (одновременно). Однако, несмотря на все преимущества, многопоточность усложняет разработку, расширяя класс ошибок, которые могут допустить программисты (взаимные блокировки, состояния гонки). Поэтому современные языки программирования предоставляют подходы, упрощающие многопоточную разработку. Но эти подходы не защищают от основной сложности многопоточной разработки — недетерминированности. Недетерминированной называется программа, результат работы которой зависит не только от входных данных, но и от состояния среды исполнения. Эта непредсказуемость усложняет воспроизводимость ошибочных сценариев. Следовательно, усложняется нахождение, отладка и устранение программных ошибок. В данной работе разрабатывается подход, основанный модели сопрограмм и каналов, распространенной в современных языках программирования, включая Kotlin и Go. Данный подход защищает детерминированную логику многопоточных приложений от недетерминированности, за счет наложения на нее дополнительных ограничений и выявления нарушающих их фрагментов кода. Данный подход был реализован в виде библиотеки для языка Java. Для реализации был разработан набор репрезентативных тестовых приложений, покрывающих 95% инструкций и 97% путей в коде библиотеки. Экспериментальные результаты тестов производительности показывают, что накладные расходы нашего подхода не превышают 12,5%. Исходный код разработанной библиотеки опубликован на GitHub, а сама библиотека доступна к использованию.ru_RU
dc.description.abstractThe performance of software products is one of the key attributes that determine its success. Multithreading, a technology that enables the execution of multiple threads of instructions in parallel (simultaneously), is frequently employed to achieve performance improvements. However, this comes at the cost of increased complexity in development due to the introduction of new types of errors that can be made by developers, including race conditions and deadlocks. Modern programming languages provide solutions to ease multithreaded programming, but they do not address its primary complexity --- non-determinism. A program is said to be non-deterministic if its result depends not just on the input data but also on the state of the execution environment, making it harder to reproduce erroneous scenarios during testing and debugging. This study develops an approach to multithreaded development based on the model of coroutines and channels widespread in modern programming languages, including Go and Kotlin. This approach protects deterministic program logic from non-determinism by enforcing additional constraints and identifying code fragments that violate these constraints. This approach has been implemented as a library for the Java programming language, and a test suite of representative applications was developed, achieving test coverage of 95% instructions and 97% branches. In experimental results obtained from an open-source benchmark suite test, the proposed method demonstrated a performance overhead of 12.5%. The source code for the library is now publicly available on GitHub, and the library is ready for use.en_GB
dc.language.isoru
dc.subjectДетерминированная многопоточностьru_RU
dc.subjectДетерминированностьru_RU
dc.subjectПараллельное программированиеru_RU
dc.subjectСопрограммыru_RU
dc.subjectDeterministic Multithreadingen_GB
dc.subjectDeterminismen_GB
dc.subjectParallel Programmingen_GB
dc.subjectConcurrencyen_GB
dc.subjectCoroutinesen_GB
dc.titleDeveloping a library for multithreaded and parallel computations based оп coroutine and channel modelen_GB
dc.title.alternativeРазработка библиотеки многопоточных и параллельных вычислений на основе модели сопрограмм и каналовru_RU
Располагается в коллекциях:BACHELOR STUDIES



Все ресурсы в архиве электронных ресурсов защищены авторским правом, все права сохранены.