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