title: Developing a library for multithreaded and parallel computations based оп coroutine and channel model
metadata.name: dc.contributor.advisor
metadata.value: Соломенников Дмитрий Игнатьевич
metadata.lang: ru_RU
metadata.name: dc.contributor.advisor
metadata.value: Solomennikov Dmitrij Ignatevic
metadata.lang: en_GB
metadata.name: dc.contributor.author
metadata.value: Порсев Егор Валерьевич
metadata.lang: ru_RU
metadata.name: dc.contributor.author
metadata.value: Porsev Egor Valerevic
metadata.lang: en_GB
metadata.name: dc.contributor.editor
metadata.value: Салищев Сергей Игоревич
metadata.lang: ru_RU
metadata.name: dc.contributor.editor
metadata.value: Salisev Sergej Igorevic
metadata.lang: en_GB
metadata.name: dc.date.accessioned
metadata.value: 2023-07-26T12:44:57Z
metadata.lang: -
metadata.name: dc.date.available
metadata.value: 2023-07-26T12:44:57Z
metadata.lang: -
metadata.name: dc.date.issued
metadata.value: 2023
metadata.name: dc.identifier.other
metadata.value: 076638
metadata.lang: en_GB
metadata.name: dc.identifier.uri
metadata.value: http://hdl.handle.net/11701/42811
metadata.lang: -
metadata.name: dc.description.abstract
metadata.value: Производительность является одним из ключевых качеств определяющих успех программного обеспечения. Для получения выигрыша в производительности применяется многопоточность — технология, позволяющая исполнение нескольких потоков инструкций параллельно (одновременно). Однако, несмотря на все преимущества, многопоточность усложняет разработку, расширяя класс ошибок, которые могут допустить программисты (взаимные блокировки, состояния гонки). Поэтому современные языки программирования предоставляют подходы, упрощающие многопоточную разработку. Но эти подходы не защищают от основной сложности многопоточной разработки — недетерминированности. Недетерминированной называется программа, результат работы которой зависит не только от входных данных, но и от состояния среды исполнения. Эта непредсказуемость усложняет воспроизводимость ошибочных сценариев. Следовательно, усложняется нахождение, отладка и устранение программных ошибок.
  В данной работе разрабатывается подход, основанный модели сопрограмм и каналов, распространенной в современных языках программирования, включая Kotlin и Go. Данный подход защищает детерминированную логику многопоточных приложений от недетерминированности, за счет наложения на нее дополнительных ограничений и выявления нарушающих их фрагментов кода. Данный подход был реализован в виде библиотеки для языка Java. Для реализации был разработан набор репрезентативных тестовых приложений, покрывающих 95% инструкций и 97% путей в коде библиотеки. Экспериментальные результаты тестов производительности показывают, что накладные расходы нашего подхода не превышают 12,5%. Исходный код разработанной библиотеки опубликован на GitHub, а сама библиотека доступна к использованию.
metadata.lang: ru_RU
metadata.name: dc.description.abstract
metadata.value: The 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.
metadata.lang: en_GB
metadata.name: dc.language.iso
metadata.value: ru
metadata.name: dc.subject
metadata.value: Детерминированная многопоточность
metadata.lang: ru_RU
metadata.name: dc.subject
metadata.value: Детерминированность
metadata.lang: ru_RU
metadata.name: dc.subject
metadata.value: Параллельное программирование
metadata.lang: ru_RU
metadata.name: dc.subject
metadata.value: Сопрограммы
metadata.lang: ru_RU
metadata.name: dc.subject
metadata.value: Deterministic Multithreading
metadata.lang: en_GB
metadata.name: dc.subject
metadata.value: Determinism
metadata.lang: en_GB
metadata.name: dc.subject
metadata.value: Parallel Programming
metadata.lang: en_GB
metadata.name: dc.subject
metadata.value: Concurrency
metadata.lang: en_GB
metadata.name: dc.subject
metadata.value: Coroutines
metadata.lang: en_GB
metadata.name: dc.title
metadata.value: Developing a library for multithreaded and parallel computations based оп coroutine and channel model
metadata.lang: en_GB
metadata.name: dc.title.alternative
metadata.value: Разработка библиотеки многопоточных и параллельных вычислений на основе модели сопрограмм и каналов
metadata.lang: ru_RU
resources.filename: PorsevEgor_thesis.pdf
resources.url: https://dspace.spbu.ru/bitstream/11701/42811/2/PorsevEgor_thesis.pdf
resources.format: Adobe PDF
resources.description: Article
resources.size: 549,61 kB
resources.filename: reviewSV_super_Porsev.pdf
resources.url: https://dspace.spbu.ru/bitstream/11701/42811/3/reviewSV_super_Porsev.pdf
resources.format: Adobe PDF
resources.description: ReviewSV
resources.size: 102,64 kB
resources.filename: reviewSV_st076638_Porsev_Egor_Valerevic_(supervisor)(Ru).txt
resources.url: https://dspace.spbu.ru/bitstream/11701/42811/4/reviewSV_st076638_Porsev_Egor_Valerevic_%28supervisor%29%28Ru%29.txt
resources.format: Text
resources.description: ReviewSV
resources.size: 5,14 kB
resources.filename: reviewSV_st076638_Porsev_Egor_Valerevic_(supervisor)(En).txt
resources.url: https://dspace.spbu.ru/bitstream/11701/42811/5/reviewSV_st076638_Porsev_Egor_Valerevic_%28supervisor%29%28En%29.txt
resources.format: Text
resources.description: ReviewSV
resources.size: 2,72 kB