Основная цель дисциплины - научить разрабатывать низкоуровневое программное обеспечение на языке С++ для платформы Linux. Первая часть курса посвящена ознакомлению с программной архитектурой, интерфейсами взаимодействия с операционной системой, работе с системными библиотеками. Вторая – применению современных практик программирования на C++ для разработки сложных программных систем. Предполагается, что на входе студенты знакомы с техниками современного языка С++.
Цель освоения дисциплины
Формирование у студентов знаний о структуре программного окружения ОС LINUX, интерфейсе системных вызовов, общей структуре ядра ОС
Формирование знания лучших практик применения языка С++ при разработке системного ПО
Формирование навыков анализа и разработки системного ПО в ОС Linux
Планируемые результаты обучения
Знает основные принципы взаимодействия прикладных программ с ядром ОС
Знает структуру и основные принципы работы ядра ОС
Умеет использовать современные средства языка С++ для разработки системного ПО
Умеет использовать средства стандартной библиотеки для разработки системного ПО
Владеет инструментами компиляции и сборки системного ПО
Владеет современными практиками использования языка С++ для управления ресурсами, организации взаимодействия компонентов, многопоточного программирования
Владеет методиками анализа качества архитектуры и реализации системного ПО
Содержание учебной дисциплины
Среда выполнения программ в ОС LINUX
Интерфейсы взаимодействия с файловой системой
Управление ресурсами и обработка ошибок
Управление процессами и потоками
Организация параллельных вычислений
Средства межпроцессного взаимодействия
Организация взаимодействия между компонентами приложения
Средства сетевого взаимодействия
Организация взаимодействия с внешними системами
Структура ядра ОС
Основные принципы разработки модулей ядра
Использование функциональной парадигмы программирования
Основные элементы метапрограммимрования
Перспективы развития
Элементы контроля
Домашнее задание №5
Домашнее задание №5 выдается студентам в одном варианте и состоит из 4 задач. Каждой задаче присвоен свой балл. Срок выполнения домашнего задания - 8 недель. Форма представления обучающимися домашнего задания - решения задач, представленные в виде исходного кода.
Экзамен
На экзамене будет дано 2 вопроса из программы курса. Каждый вопрос оценивается из 5 баллов.
Домашнее задание №2
Срок выполнения домашнего задания - 8 недель. Форма представления обучающимися домашнего задания - решение задачи, представленное в виде исходного кода.
Домашнее задание №1
Срок выполнения домашнего задания - 8 недель. Форма представления обучающимися домашнего задания - решение задачи, представленное в виде исходного кода.
Домашнее задание №4
Срок выполнения домашнего задания - 8 недель. Форма представления обучающимися домашнего задания - решение задачи, представленное в виде исходного кода.
Домашнее задание №3
Срок выполнения домашнего задания - 8 недель. Форма представления обучающимися домашнего задания - решение задачи, представленное в виде исходного кода.
Промежуточная аттестация
2026/2027 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.
Программа дисциплины
Аннотация
Цель освоения дисциплины
Планируемые результаты обучения
Содержание учебной дисциплины
Элементы контроля
Промежуточная аттестация
Список литературы
Рекомендуемая основная литература
Рекомендуемая дополнительная литература
Авторы