Основная цель дисциплины - научить разрабатывать низкоуровневое программное обеспечение на языке С++ для платформы Linux. Первая часть курса посвящена ознакомлению с программной архитектурой, интерфейсами взаимодействия с операционной системой, работе с системными библиотеками. Вторая – применению современных практик программирования на C++ для разработки сложных программных систем. Предполагается, что на входе студенты знакомы с техниками современного языка С++.
Цель освоения дисциплины
Формирование у студентов знаний о структуре программного окружения ОС LINUX, интерфейсе системных вызовов, общей структуре ядра ОС
Формирование знания лучших практик применения языка С++ при разработке системного ПО
Формирование навыков анализа и разработки системного ПО в ОС Linux
Планируемые результаты обучения
Знает основные принципы взаимодействия прикладных программ с ядром ОС
Знает структуру и основные принципы работы ядра ОС
Умеет использовать современные средства языка С++ для разработки системного ПО
Умеет использовать средства стандартной библиотеки для разработки системного ПО
Владеет инструментами компиляции и сборки системного ПО
Владеет современными практиками использования языка С++ для управления ресурсами, организации взаимодействия компонентов, многопоточного программирования
Владеет методиками анализа качества архитектуры и реализации системного ПО
Содержание учебной дисциплины
Среда выполнения программ в ОС LINUX
Интерфейсы взаимодействия с файловой системой
Управление ресурсами и обработка ошибок
Управление процессами и потоками
Организация параллельных вычислений
Средства межпроцессного взаимодействия
Организация взаимодействия между компонентами приложения
Средства сетевого взаимодействия
Организация взаимодействия с внешними системами
Структура ядра ОС
Основные принципы разработки модулей ядра
Использование функциональной парадигмы программирования
Основные элементы метапрограммимрования
Перспективы развития
Элементы контроля
Домашнее задание №3
Срок выполнения домашнего задания - 8 недель. Форма представления обучающимися домашнего задания - решение задачи, представленное в виде исходного кода.
Домашнее задание №4
Срок выполнения домашнего задания - 8 недель. Форма представления обучающимися домашнего задания - решение задачи, представленное в виде исходного кода.
Домашнее задание №5
Домашнее задание №5 выдается студентам в одном варианте и состоит из 4 задач. Каждой задаче присвоен свой балл. Срок выполнения домашнего задания - 8 недель. Форма представления обучающимися домашнего задания - решения задач, представленные в виде исходного кода.
Экзамен
На экзамене будет дано 2 вопроса из программы курса. Каждый вопрос оценивается из 5 баллов.
Домашнее задание №2
Срок выполнения домашнего задания - 8 недель. Форма представления обучающимися домашнего задания - решение задачи, представленное в виде исходного кода.
Домашнее задание №1
Срок выполнения домашнего задания - 8 недель. Форма представления обучающимися домашнего задания - решение задачи, представленное в виде исходного кода.
Промежуточная аттестация
2025/2026 1st module
«Отлично» (8-10) Решено задач на 20 или более баллов
«Хорошо» (6-7) Решено задач на 14-19 баллов
«Удовлетворительно» (4-5) Решено задач на 9-13 баллов
«Неудовлетворительно» (0-3) Решено задач менее чем на 9 баллов
Страуструп, Б. Язык программирования C++ для профессионалов : учебное пособие / Б. Страуструп. — 2-е изд. — Москва : ИНТУИТ, 2016. — 670 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100542 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
Рекомендуемая дополнительная литература
Corbet, J., Rubini, A., & Kroah-Hartman, G. (2005). Linux Device Drivers: Vol. 3rd ed. O’Reilly Media.
Преподаватель
Архимандритов Игорь Борисович
Программа дисциплины
Аннотация
Цель освоения дисциплины
Планируемые результаты обучения
Содержание учебной дисциплины
Элементы контроля
Промежуточная аттестация
Список литературы
Рекомендуемая основная литература
Рекомендуемая дополнительная литература
Авторы