2024/2025



Assembler. Системное программирование Linux
Статус:
Маго-лего
Кто читает:
Департамент электронной инженерии
Когда читается:
3, 4 модуль
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
6
Программа дисциплины
Аннотация
Данный курс посвящен изучению низкоуровневых аспектов программирования на языке C и является продолжением и дополнением курса “Программирование на C”. В ходе данного курса будут рассмотрены вопросы низкоуровнего анализа программ: дизассемблирование (с разбором соответствующих команд ассемблера), perf, анализ уязвимостей и другие. Будут обсуждаться расширения процессора - “широкие” инструкции и их примнение в коде.Также в рамках курса будет разбираться системное программирование и взаимодействие программ с ОС Linux - как темы, близко связанные с низкоуровневым программированием. Будет обсуждаться Linux API, устройство исполняемого файла, подключение динамических библиотек, виртуальная память и другие вопросы.Курс базируется на знаниях, полученных студентами в курсе “Архитектура вычислительных систем и нейроускорителей”.
Цель освоения дисциплины
- Приобретение знаний и навыков в программировании на языке ассемблера.
- Изучение механизмов системного программирования в среде Linux.
- Овладение методиками анализа и отладки низкоуровневых программ.
- Разработка и тестирование программ, взаимодействующих с ядром операционной системы.
- Работа с Linux API, управление памятью и подключение динамических библиотек
Планируемые результаты обучения
- Владеть структурой программы на ассемблере и правилами её взаимодействия с аппаратными ресурсами
- Уметь работать с памятью на уровне ОС Linux
- Уметь выполнять дизассемблирование и проводить perf-анализ для оптимизации и повышения безопасности программ
- Уметь анализировать и работать с исполняемыми файлами
- Владеть основными принципами системного программирования и работы с системными вызовами в Linux
- Умение управлять памятью в программах на ассемблере и подключать динамические библиотеки
- Владеть методиками оптимизации программ на низком уровне с использованием расширений процессора
Содержание учебной дисциплины
- Введение в ассемблер и его применение в Linux
- Работа с памятью на низком уровне
- Дизассемблирование и perf-анализ программ
- Разбор исполняемых файлов ELF
- Системное программирование в Linux
- Управление памятью и подключение динамических библиотек
- Оптимизация программ и "широкие" инструкции
Промежуточная аттестация
- 2024/2025 4th moduleОитог = 0,2*Одз+0,2*Оопрос+0,6*Оэкз, Оитог - итоговая оценка за курс, Одз - баллы за домашнюю работу Оопрос - суммарные баллы за все опросы по теории