Описание

Приобретаемые навыки:

  • Понимание процесса сборки ПО и специфики компилятора C/C++ из состава GCC
  • Умение разрабатывать и использовать разделяемые библиотеки
  • Навыки по использованию функций файлового ввода-вывода
  • Понимание механизмов обеспечения многозадачности и межпроцессного взаимодействия и умение их использовать
  • Навыки по использованию файловых и сетевых сокетов
  • Понимание механизма сигналов и навыки по его использованию
  • знание различий между процессами и потоками, использование многопоточности и ее специфики
  • Навыки по созданию демонов, понимание различий между демонами и прикладным ПО
  • Понимание специфики консольного ввода-вывода и умение ее использовать
  • Понимание специфики отображаемых в память файлов и умение их использовать
Целевая аудитория

Курс рассчитан на программистов окончивших курс «Программирование на языке C/C+» или имеющих эквивалентную подготовку.

Программа
  • Тема 1-5

    Тема 1. Введение

    • Ознакомление со спецификой сборки ПО в GNU/Linux
    • Ознакомление с консольными текстовыми редакторами
    • Ручная и автоматическая сборка ПО
    • Модель Клиент-Интерфейс-Сервер (КИС)
    • Статическая сборка библиотек
    • Совместно используемые библиотеки
    • Работа с переменными окружения

    Тема 2. Низкоуровневый ввод-вывод и файловые операции

    • Обзор механизмов ввода-вывода в Linux
    • Файловые дескрипторы
    • Системные вызовы: open, close, write, read и lseek
    • Типы файлов
    • Индексные дескрипторы и жесткие ссылки
    • Права доступа к файлу
    • Файловая система proc
    • Два способа прочесть содержимое директории
    • Разреженные файлы
    • Блокировка областей файла

    Тема 3. Межпроцессное взаимодействие

    • Способы межпроцессного взаимодействия: каналы, сообщения, разделяемая память и семафоры
    • Неименованные каналы
    • Именованные каналы
    • Сообщения
    • Разделяемая память
    • Семафоры

    Тема 4. Сокеты

    • Сокеты в файловом пространстве имен (UNIX-сокеты)
    • Парные сокеты
    • Сетевые сокеты

    Тема 5. Сигналы

    • Знакомство с сигналами
    • Отличие сигналов от других механизмов межпроцессного взаимодействия
    • Специфика обработки сигналов
  • Тема 6-11

    Тема 6. Процессы

    • Клонирование процессов - fork()
    • Замена исполняемого процесса - exec()
    • Зомби - причины возникновения и способы их устранения

    Тема 7. Потоки

    • Потоки и процессы
    • Специфика построения многопоточных приложений
    • Досрочное завершение потока

    Тема 8. Потоки (продолжение)

    • Создание обработчика завершения потока
    • Средства синхронизации потоков
    • Атрибуты потоков

    Тема 9. Демоны (службы)

    • Отличие демона от консольной утилиты
    • Специфика разработки демонов
    • Создание демона использующего сетевые сокеты

    Тема 10. Консольный ввод-вывод

    • Предотвращение перенаправления вывода
    • Управление терминалом
    • Сокрытие пароля пользователя при аутентификации

    Тема 11. Отображаемая память

    • Отображение обычного файла
    • Совместный доступ к файлу
    • Частные отображения
    • Другие применения mmap