Мы используем файлы cookies для улучшения работы сайта НИУ ВШЭ и большего удобства его использования. Более подробную информацию об использовании файлов cookies можно найти здесь, наши правила обработки персональных данных – здесь. Продолжая пользоваться сайтом, вы подтверждаете, что были проинформированы об использовании файлов cookies сайтом НИУ ВШЭ и согласны с нашими правилами обработки персональных данных. Вы можете отключить файлы cookies в настройках Вашего браузера.

  • A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Assembler. Системное программирование Linux

2024/2025
Учебный год
RUS
Обучение ведется на русском языке
6
Кредиты
Статус:
Курс по выбору
Когда читается:
1-й курс, 3, 4 модуль

Преподаватели

Программа дисциплины

Аннотация

Данный курс посвящен изучению низкоуровневых аспектов программирования на языке C и является продолжением и дополнением курса “Программирование на C”. В ходе данного курса будут рассмотрены вопросы низкоуровнего анализа программ: дизассемблирование (с разбором соответствующих команд ассемблера), perf, анализ уязвимостей и другие. Будут обсуждаться расширения процессора - “широкие” инструкции и их примнение в коде.Также в рамках курса будет разбираться системное программирование и взаимодействие программ с ОС Linux - как темы, близко связанные с низкоуровневым программированием. Будет обсуждаться Linux API, устройство исполняемого файла, подключение динамических библиотек, виртуальная память и другие вопросы.Курс базируется на знаниях, полученных студентами в курсе “Архитектура вычислительных систем и нейроускорителей”.
Цель освоения дисциплины

Цель освоения дисциплины

  • Приобретение знаний и навыков в программировании на языке ассемблера.
  • Изучение механизмов системного программирования в среде Linux.
  • Овладение методиками анализа и отладки низкоуровневых программ.
  • Разработка и тестирование программ, взаимодействующих с ядром операционной системы.
  • Работа с Linux API, управление памятью и подключение динамических библиотек
Планируемые результаты обучения

Планируемые результаты обучения

  • Владеть структурой программы на ассемблере и правилами её взаимодействия с аппаратными ресурсами
  • Уметь работать с памятью на уровне ОС Linux
  • Уметь выполнять дизассемблирование и проводить perf-анализ для оптимизации и повышения безопасности программ
  • Уметь анализировать и работать с исполняемыми файлами
  • Владеть основными принципами системного программирования и работы с системными вызовами в Linux
  • Умение управлять памятью в программах на ассемблере и подключать динамические библиотеки
  • Владеть методиками оптимизации программ на низком уровне с использованием расширений процессора
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Введение в ассемблер и его применение в Linux
  • Работа с памятью на низком уровне
  • Дизассемблирование и perf-анализ программ
  • Разбор исполняемых файлов ELF
  • Системное программирование в Linux
  • Управление памятью и подключение динамических библиотек
  • Оптимизация программ и "широкие" инструкции
Элементы контроля

Элементы контроля

  • неблокирующий Опрос по теории 3 модуль
  • неблокирующий Домашняя работа
  • неблокирующий Экзамен
  • неблокирующий Опрос по теории 4 модуль
Промежуточная аттестация

Промежуточная аттестация

  • 2024/2025 4th module
    Оитог = 0,2*Одз+0,2*Оопрос+0,6*Оэкз, Оитог - итоговая оценка за курс, Одз - баллы за домашнюю работу Оопрос - суммарные баллы за все опросы по теории
Список литературы

Список литературы

Рекомендуемая основная литература

  • Современные операционные системы : 16+, Таненбаум Э., Бос, Х., 2019
  • Современные операционные системы, Таненбаум, Э., 2015

Рекомендуемая дополнительная литература

  • Цифровая схемотехника и архитектура компьютера: RISC-V, Харрис, С. Л., 2022

Авторы

  • Петряйкин Федор Алексеевич
  • Бахмутский Михаил Витальевич
  • Манохин Александр Иванович