• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Linux System Programming

2025/2026
Academic Year
RUS
Instruction in Russian
6
ECTS credits
Delivered at:
Department of Information Technologies in Business (Faculty of Computer Science, Economics, and Social Sciences)
Course type:
Elective course
When:
3 year, 1, 2 module

Instructor


Лабутин Иван Александрович

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

Аннотация

Курс направлен на изучение низкоуровневых интерфейсов и механизмов операционной системы GNU/Linux через практические задания по разработке программного обеспечения, взаимодействующего с ядром и с системными ресурсами. В начале курса студенты выполнят задание по установке и настройке ОС Alt Linux в среде гипервизора VirtualBox, что позволит безопасно экспериментировать с поведением системы и её настройками в изолированной среде. Далее через серию практических модулей будет рассмотрена работа с системными вызовами, файловым вводом-выводом, управлением процессами и потоками, синхронизацией, управлением памятью и сетевыми интерфейсами. Теоретические лекции и практические занятия подкрепляются самостоятельной работой над заданиями, требующими разработки и отладки программ, а также изучением документации и использования специализированных инструментов (strace, gdb и др.).
Цель освоения дисциплины

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

  • • Подготовить студентов к разработке программного обеспечения, взаимодействующего с ядром и системными ресурсами ОС GNU/Linux, используя язык C (или C++). • Научить устанавливать и настраивать ОС GNU/Linux в виртуальной среде (VirtualBox). • Развить понимание архитектуры ОС GNU/Linux и механизмов предоставления сервисов пользовательским программам (системные вызовы, IPC). • Дать опыт работы с файловым вводом-выводом на низком уровне и mmap. • Обучить управлению процессами и потоками: создание, завершение, планирование, межпроцессное взаимодействие и синхронизация. • Показать основные приёмы сетевого программирования в Linux: сокеты, неблокирующий I/O, мультиплексирование. • Обучить методам отладки и профилирования системного кода: использование strace, ltrace, gdb, perf и других инструментов. • Научить читать и анализировать исходный код типовых утилит и библиотек, а также обращаться к документации. • Сформировать навыки самостоятельного поиска и устранения ошибок в системных программах.
Планируемые результаты обучения

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

  • Знать ключевые компоненты архитектуры ОС GNU/Linux.
  • Уметь настроить и запустить виртуальную машину с ОС GNU/Linux под VirtualBox, включая сетевые настройки и общие папки для обмена с хостом.
  • Понимать механизм системных вызовов, знать, как их вызвать и обрабатывать ошибки.
  • Владеть навыками низкоуровневого файлового ввода-вывода: открытие, чтение/запись, работа с файловыми дескрипторами, блокирующий и неблокирующий I/O, mmap.
  • Уметь создавать, завершать и синхронизировать процессы и потоки: fork/exec, wait, pthreads, mutex, условные переменные, семафоры, shared memory (SystemV и POSIX).
  • Владеть приёмами сетевого программирования: создавать клиентские и серверные приложения на базе сокетов (TCP/UDP), использовать select/poll/epoll.
  • Уметь отлаживать и диагностировать поведение системных программ с помощью strace, gdb, ltrace, анализировать дампы, читать логи ядра (dmesg).
  • Знать основы взаимодействия с ядром Linux через sysfs и ioctl.
Содержание учебной дисциплины

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

  • 1. Введение и подготовка среды.
  • 2. Архитектура ОС и системные вызовы.
  • 3. Файловый ввод-вывод.
  • 4. Управление процессами и сигналы.
  • 5. Потоки и синхронизация.
  • 6. Сетевое программирование.
  • 7. Взаимодействие с ядром.
Элементы контроля

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

  • неблокирующий Лабораторные работы
  • неблокирующий Мини-тесты/опросы
  • неблокирующий Проект-модуль
Промежуточная аттестация

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

  • 2025/2026 2nd module
    0.7 * Лабораторные работы + 0.1 * Мини-тесты/опросы + 0.2 * Проект-модуль
Список литературы

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

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

  • Linux API. Исчерпывающее руководство, Керриск, М., 2019
  • Linux. Системное программирование, Лав, Р., 2014
  • UNIX. Профессиональное программирование, Стивенс, У. Р., 2018

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

  • Командная строка Linux : полное руководство, Шоттс, У., 2021

Авторы

  • Карпович Марина Валерьевна