Linux. Уровень 2. Программирование в Linux на C

2 участника

О чём курс

О курсе

Язык C служит основой для разработки программного обеспечения и архитектуры системных служб операционной системы Linux. Занятия охватывают низкоуровневые механизмы системы, принципы компиляции и управление системными ресурсами, а также включают работу с процессами, потоками и файловыми подсистемами.

Программа разработана в соответствии с требованиями профессионального стандарта «Программист». Материал курса позволяет сформировать системное понимание архитектуры Linux, которое можно применять при создании серверного и системного софта для корпоративного сектора, суперкомпьютеров и серверных платформ.

Чему вы научитесь

Слушатели курса изучают широкий спектр задач системного программирования. В ходе обучения осваиваются следующие практические навыки:

  • понимание процесса сборки программного обеспечения и специфики компилятора C из состава GCC;
  • создание статических и разделяемых библиотек, автоматизация сборки с помощью утилиты make;
  • низкоуровневый файловый ввод-вывод, работа с файловыми дескрипторами и специальными файловыми системами;
  • реализация параллельных вычислений и понимание ключевых различий между процессами и потоками execution;
  • настройка многопоточности и применение примитивов синхронизации данных;
  • использование механизмов, обеспечивающих межпроцессное взаимодействие в Linux;
  • сетевое и локальное взаимодействие программ через файловые и сетевые сокеты;
  • перехват и корректная обработка сигналов операционной системы;
  • проектирование и запуск фоновых системных служб — демонов;
  • управление терминалом, консольный ввод-вывод и сокрытие ввода паролей;
  • работа с виртуальной памятью и отображаемые в память файлы через системный вызов mmap.

Что внутри

Теоретический и практический материал курса разбит на тематические блоки, охватывающие ключевые подсистемы ОС. Изучение начинается с базовых инструментов сборки, работы с переменными окружения и текстовыми редакторами. Далее подробно рассматриваются системные вызовы для работы с файлами, правами доступа и блокировками.

Значительная часть курса отведена параллельному программированию и коммуникации. Рассматриваются механизмы IPC: неименованные и именованные каналы, очереди сообщений, разделяемая память и семафоры. Слушатели разбирают жизненный цикл процессов, включая системные вызовы fork и exec, устранение зомби-процессов, а также управление атрибутами потоков и завершением их работы.

Отдельные модули посвящены созданию демонов, сетевому взаимодействию и дополнительным технологиям: разработке 64-битных приложений, созданию псевдографики с библиотекой ncurses и графического интерфейса с GTK+.

Окружение и применимость знаний

Практическая часть курса демонстрируется на дистрибутиве Linux Mint 22.3 «Zena» (ядро версии 2024 года). При этом изучаемые системные вызовы, интерфейсы POSIX и стандарты компиляции универсальны. Полученные знания позволяют разрабатывать программные решения под любые современные дистрибутивы Linux, включая Debian 12, Red Hat 9, Alt Linux 10.3, OpenSUSE 15 и другие.

Программа обучения

  • Модуль 1. Введение (2,5 ак. ч.)
    • Ознакомление со спецификой сборки ПО в GNU/Linux (версия 2024)
    • Ознакомление с консольными текстовыми редакторами (vi,nano,mcedit)
    • Ручная и автоматическая сборка ПО (Makefile)
    • Модель Клиент-Интерфейс-Сервер (КИС)
    • Статическая сборка библиотек
    • Совместно используемые библиотеки
    • Работа с переменными окружения
  • Модуль 2. Низкоуровневый ввод-вывод и файловые операции (2,5 ак. ч.)
    • Обзор механизмов ввода-вывода в Linux
    • Файловые дескрипторы
    • Системные вызовы: open, close, write, read и lseek
    • Типы файлов
    • Индексные дескрипторы и жесткие ссылки
    • Права доступа к файлу
    • Файловая система proc
    • Два способа прочесть содержимое директории
    • Разреженные файлы и специфика их применения
    • Блокировка областей файла
  • Модуль 3. Межпроцессное взаимодействие (3 ак. ч.)
    • Механизмы межпроцессного взаимодействия Linux
    • Неименованные каналы (pipes)
    • Именованные каналы (named pipes)
    • Сообщения (message queue)
    • Разделяемая память (shared memory)
    • Семафоры (semaphores)
  • Модуль 4. Сокеты (2,5 ак. ч.)
    • Сокеты в файловом пространстве имен (UNIX-сокеты)
    • Парные сокеты (pair sockets)
    • Сетевые сокеты (sockets)
  • Модуль 5. Сигналы (3 ак. ч.)
    • Знакомство с сигналами (signals)
    • Отличие сигналов от других механизмов межпроцессного взаимодействия
    • Специфика обработки сигналов (signal handling)
  • Модуль 6. Процессы (2,5 ак. ч.)
    • Клонирование процессов — fork()
    • Замена исполняемого процесса — exec()
    • Зомби (zombies) — причины возникновения и способы их устранения
  • Модуль 7. Потоки (2,5 ак. ч.)
    • Потоки и процессы
    • Специфика построения многопоточных приложений (multithreading)
    • Досрочное завершение потока
  • Модуль 8. Потоки (продолжение) (3 ак. ч.)
    • Создание обработчика завершения потока
    • Средства синхронизации потоков (synchronize primitives)
    • Атрибуты потоков
  • Модуль 9. Демоны (службы) (3 ак. ч.)
    • Отличие демона от консольной утилиты
    • Специфика разработки демонов (daemons)
    • Создание демона использующего сетевые сокеты
  • Модуль 10. Консольный ввод-вывод (2,5 ак. ч.)
    • Специфика разработки консольных приложений
    • Предотвращение перенаправления вывода
    • Управление терминалом
    • Сокрытие пароля пользователя при аутентификации
  • Модуль 11. Отображаемая память (2,5 ак. ч.)
    • Отображение обычного файла
    • Совместный доступ к файлу
    • Частные отображения
    • Другие применения mmap
  • Модуль 12. Домашнее задание (2,5 ак. ч.)
    • Специфика разработки 64-битных приложений
    • Использование библиотеки ncurses
    • Программирование графического интерфейса с помощью GTK+
Складчина создана 25 сентября 2026 г. · описание обновлено 18 октября 2026 г.

Теги курса

Профессии
Инструменты

Другие материалы автора 6

ИС Игорь Седых Все материалы
17 049 ₽ 28 750 ₽