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


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

Работа №127708

Тип работы

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

Предмет

информатика

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

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


Введение 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
Список литературы

Обучение языку ассемблера и архитектуре ЭВМ являются важной составляющей большинства учебных программ по подготовке программистов. Эти курсы задают основу, необходимую для освоения других дисциплин, таких как разработка компиляторов, устройство операционных систем, системное программирование и многих других. Современные инструменты для разработки на языке ассемблера рассчитаны на профессионалов в этой области и требуют многих смежных знаний для их продуктивного использования. К таким знаниям, например, относится опыт работы с командной строкой, понимание механизмов компиляции и компоновки программ и умение работать с консольными отладчиками. Всё это создаёт препятствия тем, кто только начинает свой профессиональный путь и не может с лёгкостью использовать и настраивать подобные инструменты, имеющие высокий порог вхождения.
Преподаватели и организаторы процесса обучения языку ассемблера также сталкиваются с похожими трудностями. Инструменты, используемые в процессе обучения, должны быть максимально наглядными, а проверка заданий — как можно более автоматизированной. Для наглядности, инструмент должен предоставлять удобный способ просматривать внутреннее состояние процессора, на котором запускается пользовательский код, а также выполнять различные манипуляции над ним, например, выполнение по шагам или редактирование значений регистров. В этой работе рассматривается процесс реализации программного инструмента удалённой сборки и отладки программ на языке ассемблера, призванного решить эти проблемы.
В первой главе данной работы подробно рассматриваются и анализируются многие существующие альтернативные решения проблемы. Исходя из этого анализа, строятся требования к разрабатываемому решению, и, во второй главе, приводится описание архитектуры программной реализации разработанного инструмента. В третьей главе производится исследование свойств разработанного решения, а также поиск его возможных будущих улучшений.
Постановка задачи
Цель данной работы состоит в разработке обучающего веб-инструмента удалённого запуска, отладки и проверки программ на языке ассемблера.
Задачи данной работы:
1. Исследование существующих решений для запуска и отладки программ на языке ассемблера, а также решений для обучения языку ассемблера.
2. Формирование требований к разрабатываемому инструменту.
3. Разработка программной архитектуры инструмента и его реализация.
4. Исследование свойств решения.
Объектом исследования являются системы запуска и отладки программ на языке ассемблера.
Предметом исследования является наглядность и удобство использования таких систем в учебном процессе.
Практическая ценность работы состоит в том, что разработанный инструмент позволит проводить обучение языку ассемблера более наглядно для студентов.

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

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

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


Целью и основным результатом данной работы является реализация обучающего веб-инструмента удалённой сборки и интерактивной отладки программ на языке ассемблера. В частности, в ходе выполнения данной работы были получены следующие результаты:
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/400/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. github.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. readthedocs . 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-studio-code/. (дата обращения 30.04.2022).
[15] Aidan Khoury. NASM Assembly Language — IntelliJ IDEs Plugin. URL:https://plugins.jetbrains.com/plugin/9759-nasm-assembly-language. (дата обращения 30.04.2022).
[16] Grafana Labs. Grafana. URL:https : //grafana. com/. (дата обращения 14.05.2022).
[17] Sphere Research Labs. Ideone — Online Compiler and IDE. URL: https://ideone.com.(дата обращения 30.04.2022).
[18] Learning Tools Interoperability Basic Outcomes.Тех. отч. IMS Global Learning Consortium Inc., май 2019.
[19] One Compiler Pvt. Ltd. OneCompiler — Write, run and share Assembly code online. URL:https : //onecompiler . com/assembly. (дата обращения 30.04.2022).
[20] Dmitriy Manushin. SASM — simple crossplatform IDE for NASM, MASM, GAS, FASM assembly languages. URL:https : //dman95. github.io/SASM/index.html. (дата обращения 30.04.2022).
[21] Wes McKinney и др. “pandas: a foundational Python library for data analysis and statistics”. В: Python for high performance and scientific computing 14.9 (2011), с. 1—9.
[22] NumPy. URL:https://numpy.org/.(дата обращения 24.05.2022).
[23] Online GCC Assembler — online editor. URL:https : //www. onlinegdb.com/online_gcc_assembler. (дата обращения 30.04.2022).
[24] Overview of Docker Compose. URL:https : //docs . docker. com/compose/.(дата обращения 12.05.2022).
[25] David Porter, Dawn Chen и др. cAdvisor. URL:https : //github. com/google/cadvisor. (дата обращения 14.05.2022).
[26] PostgreSQL. URL:https : //www. postgresql. org/. (дата обращения 24.05.2022).
[27] Prometheus — Monitoring system and time series database. URL:https://prometheus.io/. (дата обращения 12.05.2022).
[28] Luciano Ramalho. Fluent Python: Clear, concise, and effective programming. O’Reilly Media, Inc., 2015.
[29] Redis. URL:https://redis.io/. (дата обращения 24.05.2022).
[30] Juan Carlos Rodriguez-del-Pino. VPL — Virtual Programming Lab — About. URL:https://vpl.dis.ulpgc.es/index.php/about. (дата обращения 01.05.2022).
[31] Runtime options with Memory, CPUs, and GPUs // Docker Documentation. URL:https : / /docs . docker . com/config/containers/resource_constraints/. (дата обращения 02.05.2022).
[32] JetBrains s.r.o. CLion: A Cross-Platform IDE for C and C++ by JetBrains. URL:https : //www.jetbrains. com/clion/. (дата обращения 30.04.2022).
[33] JetBrains s.r.o. EduTools — IntelliJ IDEs Plugin. URL:https : //plugins . jetbrains . com/plugin/10081-edutools. (дата обращения 30.04.2022).
[34] seccomp(2) Linux Programmer’s Manual. 5.13. Авг. 2021.
[35] setrlimit(2) Linux Programmer’s Manual. 5.13. Март 2021.
[36] Richard Stallman, Roland Pesch, Stan Shebs и др. Debugging with GDB. Free Software Foundation, 2022.
[37] Richard M Stallman и др. Using the GNU Compiler Collection. Free Software Foundation, 2022.
[38] WebSocket Browser Compatibility. URL:https: //developer.mozilla.org/en-US/docs/Web/API/WebSocket#browser_compatibility. (дата обращения 05.05.2022).
[39] Общая информация о Stepik — Справочный центр Stepik. URL: https : //support. stepik. org/hc/ru/articles/360000172234. (дата обращения 01.05.2022).


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



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


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