Тип работы:
Предмет:
Язык работы:


Разработка обучающего веб-инструмента удаленной сборки и интерактивной отладки программ

Работа №142500

Тип работы

Бакалаврская работа

Предмет

прикладная информатика

Объем работы55
Год сдачи2022
Стоимость4800 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
45
Не подходит работа?

Узнай цену на написание


Введение 4
Постановка задачи 5
Глава 1. Обзор предметной области 6
1.1. Критерии сравнения и отбора аналогов 6
1.2. Существующие решения 6
1.2.1 Ideone 6
1.2.2 OneCompiler 7
1.2.3 ASM Debugger 7
1.2.4 Davis 8
1.2.5 OnlineGDB 8
1.2.6 SASM 9
1.2.7 YASP 10
1.2.8 JetBrains Clion + EduTools 10
1.2.9 GitHub Classroom + Visual Studio Code 11
1.2.10 Stepik 11
1.2.11 Moodle + Virtual Programming Lab 12
1.2.12 Git репозиторий с задачами 12
1.3. Сравнение существующих решений 13
1.4. Выводы 15
Глава 2. Реализация инструмента 16
2.1. Формулировка требований к решению 16
2.2. Структура программной реализации 17
2.3. Модель данных 19
2.4. Архитектура сервиса runner 21
2.4.1 Структура классов 21
2.4.2 Компиляция ассемблерных программ 23
2.4.3 Изоляция ассемблерных программ 24
2.4.4 Отладка ассемблерных программ 26
2.4.5 Взаимодействие с GDB 27
2.5. Интерфейс пользователя 30
2.5.1 Запуск инструмента с помощью протокола LTI 30
2.5.2 Взаимодействие с интерактивным отладчиком 32
2.5.3 Интерфейс преподавателя 36
2.6. Контроль состояния инструмента 37
2.7. Запуск и развёртывание системы 38
Глава 3. Исследование свойств решения 40
3.1. Измерение потребляемой памяти и процессорного времени 40
3.2. Нагрузочное тестирование 41
3.3. Измерение задержки интерактивного отладчика 45
3.4. Выводы 48
Заключение 50
Список литературы 52

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


Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


Целью и основным результатом данной работы является реализация обучающего веб-инструмента удалённой сборки и интерактивной отладки программ на языке ассемблера. В частности, в ходе выполнения данной ра­боты были получены следующие результаты:
1. Было проведено исследование существующих решений для запуска и отладки программ на языке ассемблера, обучения этому языку. В ходе исследования были выявлены достоинства и недостатки существующих решений.
2. Были сформированы функцицональные и нефункциональные требова­ния к разрабатываемому инструменту, учитывающие недостатки су­ществующих решений. К этим недостаткам были отнесены: отсутствие поддержки архитектур, не принадлежащим к семейству x86; отсутствие поддержки интерактивной отладки; отсутствие интеграции с существу­ющими системами управления обучением; необходимость установки на компьютер пользователя; закрытый исходный код некоторых решений.
3. Был реализован инструмент обучения языку ассемблера, поддержива­ющий интерактивный запуск кода на архитектурах x86-64 и AVR, а также имеющий поддержку задач и интеграцию с системами управ­ления обучением по протоколу LTI. Взаимодействие с инструментом производится через веб-интерфейс.
4. Было произведено измерение потребления ресурсов и производитель­ности разработанного инструмента. Исследование показало, что основ­ным ограничением количества одновременно запускаемых сессий от­ладки является объём доступной оперативной памяти. С малой степе­нью ошибки было определено количество оперативной памяти и про­цессорного времени, потребляемое интерактивными сессиями отлад­ки. Каждая сессия отладки потребляет 14-15 МиБ памяти и 4-6 мс процессорного времени в секунду. Также было проведено измерение времени реакции интерактивного отладчика на действия пользователя.
Время запуска программы составило 1,1-1,2 секунды, время реакции на остальные действия — 2-3 мс.
Таким образом, цель данной работы была достигнута в полном объё­ме. В процессе исследования было установлено, что при запуске на архи­тектуре x86-64, процесс отладчика GDB является основным потребителем оперативной памяти. Следовательно, для уменьшения использования памяти инструментом, имеет смысл исследовать способы уменьшить это использо­вание памяти GDB. Для уменьшения времени реакции на запуск программы пользователем, стоит заранее создать какое-то количество простаивающих контейнеров, а процессы GDB сервера или эмулятора QEMU запускать уже в них.


[1] About Moodle — MoodleDocs. URL: https : //docs . moodle . org/4 00/en/About_Moodle. (дата обращения 01.05.2022).
[2] Arduino UNO R3 Product Reference Manual. Arduino S.r.l. Июнь 2021.
[3] Assembly Debugger Online. URL: http : //asmdebugger . com. (дата обращения 30.04.2022).
[4] ATmega328P Datasheet. Atmel Corporation. 2015.
[5] Jakub Beranek. Assembly debugger (x86). URL: https : //kobzol. gi thub.io/davis. (дата обращения 30.04.2022).
[6] Ian Fette и Alexey Melnikov. The WebSocket Protocol. Тех. отч. Internet Engineering Task Force (IETF), дек. 2011.
[7] Robert Fischer и Michael Lutonsky. Yasp. URL: https : //yasp. me/. (дата обращения 05.05.2022).
[8] GDB usage — QEMU 7.0.50 documentation. URL: https : //qemu. r eadthedocs . io/en/latest/system/gdb . html. (дата обращения 02.05.2022).
[9] Dick Grune и Ceriel JH Jacobs. Parsing techniques: a practical guide. Springer Science & Business Media, 2007.
[10] Eran Hammer-Lahav. The OAuth 1.0 Protocol. Тех. отч. Internet Engineering Task Force (IETF), апр. 2010.
[11] Ryan Hiebert. lti — PyPI. URL: https : //pypi . org/project/lti/. (дата обращения 02.05.2022).
[12] IMS Global Learning Tools Interoperability Implementation Guide. Тех. отч. IMS Global Learning Consortium Inc., март 2012.
[13] GitHub Inc. GitHub Classroom. URL: https : //classroom. github .com/. (дата обращения 30.04.2022).
[14] Katherine Kampf. Seamless teaching and learning through GitHub Classroom and Visual Studio Code. URL: https : //github . blog /2021-08-12-teaching-learning-github-classroom-visual-s tudio-code/. (дата обращения 30.04.2022).
[15] Aidan Khoury. NASM Assembly Language — IntelliJ IDEs Plugin. URL: https://plugins.jetbrains.com/plugin/9759-nasm-ass embly-language. (дата обращения 30.04.2022)....39


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ