• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2024/2025

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

Статус: Курс обязательный (Информационная безопасность)
Направление: 10.03.01. Информационная безопасность
Когда читается: 3-й курс, 2-4 модуль
Формат изучения: без онлайн-курса
Охват аудитории: для своего кампуса
Язык: русский
Кредиты: 8

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

Аннотация

Системное программирование является областью знаний об архитектуре и разработке системного программного обеспечения, включая загрузчики, трансляторы программ, операционные системы, средства контейнерной оркестрации и т.д. В данной дисциплине рассматриваются таксономии программ и языков программирования, а также устройство основных компонентов вычислительных систем (аппаратные и программные) различных архитектур (архитектуры фон Неймана и Гарвардская). В ходе изучения дисциплины студенты познакомятся с машинным представлением программ (ассемблер) и данных и аспектами трансляции программ. Особое место в дисциплине занимает внутреннее устройство операционных систем: объекты и файловые системы, представление памяти, процессы и потоки, прерывания и подсистема ввода-вывода, средства межпроцессного взаимодействия и синхронизации, а также механизмы конфигурации. Также в курсе представлены основы архитектуры контейнерной оркестрации: подход «Infrastructure-as-a-Code» (IaC), интерфейсы и среды выполнения контейнеров, изоляция, планирование и балансировка нагрузки между приложениями. При обучении предусмотрен контроль знаний студентов в виде практических работ и учета активности студентов на семинарах.
Цель освоения дисциплины

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

  • Ознакомление с внутренним устройством основных компонентов вычислительных систем
  • Ознакомление с машинным представлением программ и аспектами трансляции программ
  • Ознакомление с внутренним устройством операционных систем
  • Ознакомление с принципами разработки многопоточных и асинхронных программ с множественным доступом к разделяемым ресурсам и сетевым взаимодействием
  • Ознакомление с основами архитектуры систем контейнерной оркестрации
  • Формирование навыков разработки системного программного обеспечения
  • Формирования навыков обратной разработки и отладки программ на уровне машинного представления
Планируемые результаты обучения

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

  • Знает режимы работы процессора, в том числе, в защищённом режиме.
  • Знает классификацию языков программирования
  • Знает системные возможности BIOS для организации ввода/вывода
  • Иметь представление в области разработки программного обеспечения для киберфизических систем, архитектуре многопоточных программ, параллельных алгоритмах, процессах и потоках, множественному доступу к разделяемым ресурсам, архитектуре многопоточной программы
  • Иметь представление в области разработки программного обеспечения для киберфизических систем, реализации языков программирования, методы работы с интерактивным дизассемблером и специализированным программным обеспечением для изучения работы исполняемых файлов
  • Иметь представление в области разработки программного обеспечения для киберфизических систем, реализации языков программирования, общую характеристику языков ассемблера: назначение, принципы построения и использования; структура языка
  • Иметь представления об: инструментах создания параллельных программ; основные типы ошибок и проблем в параллельных программах; инструменты отладки параллельных программ. Изучить: инструменты создания и отладки многопоточных программ
  • Студент должен по результатам обучения создавать эффективные параллельные программы; находить и исправлять ошибки и проблемы в многопоточных программах.
  • Умеет организовывать программные проекты с помощью системы сборки cmake.
  • Знает классификацию ПО (системное и прикладное)
  • Знает классификацию языков программирования (компилируемые, интерпретируемые)
  • Знает основы трансляции программ и основные типы трансляторов (компиляторы, интерпретаторы, виртуальные машины)
  • Знает устройство основных компонентов вычислительных систем различных архитектур (фон Неймана и Гарвардской)
  • Знает основы машинного представления программ (ассемблер) и данных в памяти компьютера
  • Знает механизмы вызова подпрограмм и передачи аргументов в функции (соглашения о вызовах)
  • Знает особенности сегментного и страничного устройства памяти
  • Знает назначение и таксономию операционных систем
  • Знает основы архитектуры операционных систем реального времени
  • Знает основы архитектуры операционных систем с разделением времени
  • Знает устройство памяти, процессов и потоков ОС
  • Знает устройство объектов ОС и виртуальной файловой системы
  • Знает основы диспетчеризации прерываний, устройство подсистемы ввода-вывода и основных файловых систем
  • Знает механизмы конфигурации ОС
  • Знает основы виртуализации и контейнеризации
  • Знает основы архитектуры контейнерных сред
  • Знает основы архитектуры систем контейнерной оркестрации
  • Знает механизмы планирования систем контейнерной оркестрации
  • Знает механизмы обеспечения безопасности систем контейнерной оркестрации
  • Знает лучшие практики по внедрению и эксплуатации систем контейнерной оркестрации
  • Умеет развертывать и настраивать операционные системы и отдельные подсистемы
  • Умеет разрабатывать системные программы на языках Ассемблер/C/Rust с использованием низкоуровневых API операционных систем или аппаратных модулей
  • Умеет проводить обратную разработку и отладку программ на уровне машинного представления (ассемблер)
  • Умеет проводить анализ слепков оперативной памяти различных операционных систем
  • Умеет развертывать и настраивать системы контейнерной оркестрации
  • Знает принципы разработки многопоточных и асинхронных программ с множественным доступом к разделяемым ресурсам и сетевым взаимодействием
  • Умеет разрабатывать многопоточные и асинхронные программы на языках C/Rust с множественным доступом к разделяемым ресурсам и сетевым взаимодействием (мультиплексирование ввода-вывода)
  • Знает основные отличия аналоговой и цифровой схемотехники
  • Знает основные термины и определения цифровой схемотехники
  • Знает основные схемы, обозначения, таблицы истинности и временные диаграммы
  • Знает основы булевой алгебры
  • Знает основные полупроводниковые элементы: диоды, транзисторы (МОП), а также передаточные характеристики
  • Знает основные комбинационные блоки
  • Знает назначение языков описания аппаратуры в части симуляции и синтеза цифровых схем
  • Умеет работать со средой моделирования
  • Знает особенности представления данных в цифровых блоках
  • Знает основные арифметические схемы
  • Знает основные функциональные узлы последовательной логики
  • Знает устройство защелок и триггеров
  • Знает особенности построения последовательных схем
  • Знает устройство конечных автоматов (автоматы Мура и Мили)
  • Знает устройство регистров различных типов
  • Знает схемотехнику матриц (PLM, FPGA): логические элементы (LE) и таблицы преобразования (LUT)
  • Знает основные запоминающие элементы
  • Знает иерархию памяти
  • Знает аппаратную организацию прерываний
  • Знает основные последовательные интерфейсы передачи данных (UART/USART, SPI, I2C)
  • Знает системные шины данных (AMBA, USB, SATA, PCI/PCI-E)
  • Знает основы технологий построения проводных (Ethernet) и беспроводных (Wi-Fi) сетей
  • Знает основы технологий проектирования и производства печатных плат
  • Знает особенности микроархитектуры процессора (конвейеры, порядок исполнения)
  • Знает основные типы архитектур: фон Неймана (Принстонская) и Гарвардская
  • Знает основные типы архитектур по набору команд: RISC, CISC, MIPS, VLIW
  • Знает особенности устройства программных процессоров
  • Знает устройство памяти компьютера
  • Знает системные возможности UEFI для организации ввода/вывода
  • Знает особенности размещения устройств на материнской плате
Содержание учебной дисциплины

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

  • Введение в дисциплину "Системное программирование"
  • Основные этапы создания программы
  • Устройство процессора и программирование на ассемблере
  • Механизмы передачи данных между функциями
  • Устройство памяти компьютера
  • Введение в операционные системы (ОС). Операционные системы реального времени (ОСРВ)
  • Операционные системы реального времени (ОСРВ)
  • Операционные системы с разделением времени. Объекты и виртуальные файловые системы ОС
  • Устройство памяти, процессов и потоков ОС
  • Системные механизмы ОС
  • Диспетчеризация прерываний, подсистема ввода-вывода и файловые системы ОС
  • Подходы к разработке многопоточных и асинхронных программ, межпроцессное взаимодействие и сетевая подсистема ОС
  • Основы виртуализации и контейнеризации
  • Архитектура контейнерных сред
  • Архитектура систем контейнерной оркестрации
  • Механизмы планирования систем контейнерной оркестрации
  • Механизмы обеспечения безопасности систем контейнерной оркестрации
  • Дополнительные главы архитектуры систем контейнерной оркестрации
Элементы контроля

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

  • неблокирующий Тест 1
  • неблокирующий Практическая работа 1
  • неблокирующий Практическая работа 2
  • неблокирующий Практическая работа 3
  • неблокирующий Практическая работа 4 (3.1)
  • неблокирующий Практическая работа 5 (3.2)
  • неблокирующий Практическая работа 6 (3.3)
  • неблокирующий Практическая работа 7 (3.4)
  • неблокирующий Практическая работа 8 (4.1)
  • неблокирующий Практическая работа 9 (4.2)
  • неблокирующий Практическая работа 10 (4.3)
  • неблокирующий Тест 2
Промежуточная аттестация

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

  • 2024/2025 3rd module
    0.17 * Практическая работа 1 + 0.17 * Практическая работа 2 + 0.16 * Практическая работа 3 + 0.15 * Практическая работа 4 (3.1) + 0.15 * Практическая работа 5 (3.2) + 0.07 * Практическая работа 6 (3.3) + 0.07 * Практическая работа 7 (3.4) + 0.06 * Тест 1
  • 2024/2025 4th module
    0.3 * Практическая работа 10 (4.3) + 0.3 * Практическая работа 8 (4.1) + 0.3 * Практическая работа 9 (4.2) + 0.1 * Тест 2
Список литературы

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

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

  • Linux API. Исчерпывающее руководство - 978-5-496-02689-5 - Керриск М. - 2018 - Санкт-Петербург: Питер - https://ibooks.ru/bookshelf/356956 - 356956 - iBOOKS
  • Аблязов, Р. З. Программирование на ассемблере на платформе x86-64 / Р. З. Аблязов. — Москва : ДМК Пресс, 2011. — 304 с. — ISBN 978-5-94074-676-8. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/1273 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
  • Архитектура компьютера, Таненбаум, Э., 2014
  • Внутреннее устройство Linux - 978-5-4461-0938-8 - Б. Уорд - 2021 - Санкт-Петербург: Питер - https://ibooks.ru/bookshelf/374451 - 374451 - iBOOKS
  • Внутреннее устройство Microsoft Windows. 6-е изд. - 978-5-496-00434-3 - Руссинович М., Соломон Д. - 2013 - Санкт-Петербург: Питер - https://ibooks.ru/bookshelf/338561 - 338561 - iBOOKS
  • Внутреннее устройство Microsoft Windows. 6-е изд. Основные подсистемы ОС - 978-5-496-00791-7 - Руссинович М., Соломон Д. ., Ионеску Алекс - 2014 - Санкт-Петербург: Питер - https://ibooks.ru/bookshelf/341181 - 341181 - iBOOKS
  • Вскрытие покажет! Практический анализ вредоносного ПО - 978-5-4461-0641-7 - Сикорски М., Хониг Э. - 2018 - Санкт-Петербург: Питер - https://ibooks.ru/bookshelf/358154 - 358154 - iBOOKS
  • Монаппа, К. А. Анализ вредоносных программ / К. А. Монаппа , перевод с английского Д. А. Беликова. — Москва : ДМК Пресс, 2019. — 452 с. — ISBN 978-5-97060-700-8. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/123709 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
  • Работа с ядром Windows. - 978-5-4461-1680-5 - Иосифович Павел - 2021 - Санкт-Петербург: Питер - https://ibooks.ru/bookshelf/377032 - 377032 - iBOOKS
  • Современные операционные системы, Таненбаум, Э., 2018
  • Цифровая схемотехника и архитектура компьютера : пер. с англ., Харрис, Д. М., 2018
  • Цифровая схемотехника и архитектура компьютера: RISC-V, Харрис, С. Л., 2022

Авторы

  • Мещеряков Ярослав Евгеньевич
  • Евсютин Олег Олегович
  • Смирнов Данил Вадимович