Linux (Ubuntu).Программирование в Linux на C/C++

В данный момент идет прием заявок на курс.
Мы можем сообщить вам о начале
запланированного обучения


Код: UCP-300
Длительность: 32 ак.ч.
Стоимость: 27 075 р.

Аннотация:
Операционная система Linux давно занимает лидирующие позиции в программном обеспечении суперкомпьютеров, она занимает второе место в сегменте интернет-серверов и стремительно набирает популярность в корпоративном сегменте. Этому способствуют главные преимущества Linux по сравнению с коммерческими операционными системами — высокая экономическая эффективность, мобильность, гибкость, оптимальные условия для установки СУБД.

 На данном курсе Вы получите знания и навыки, необходимые для разработки программного обеспечения для стремительно набирающей популярность операционной системы Linux. Вы станете понимать процесс сборки ПО и специфики компилятора C/C++ из состава GCC. Вы научитесь разбираться в различиях между процессами и потоками, использовать многопоточность и ее специфики. Вы узнаете, кто такие «демоны» и в чем их отличие от прикладного программного обеспечения.

Предварительная подготовка:
Требуемая подготовка:
• Успешное окончание курса Программирование на языке C (Си) или эквивалентная подготовка.
• Успешное окончание курса UCP-101. Администрирование Ubuntu или эквивалентная подготовка.

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

Документ об окончании курса:
Сертификат УЦ UNIT.

Содержание курса:
Модуль 1. Введение
• Ознакомление со спецификой сборки ПО в GNU/Linux (Ubuntu)
• Ознакомление с консольными текстовыми редакторами (vi,nano,mcedit)
• Ручная и автоматическая сборка ПО (Makefile)
• Модель Клиент-Интерфейс-Сервер (КИС)
• Статическая сборка библиотек
• Совместно используемые библиотеки
• Работа с переменными окружения

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

Модуль 3. Межпроцессное взаимодействие
• Механизмы межпроцессного взаимодействия Linux (Ubuntu)
• Неименованные каналы (pipes)
• Именованные каналы (named pipes)
• Сообщения (message queue)
• Разделяемая память (shared memory)
• Семафоры (semaphores)

Модуль 4. Сокеты
• Сокеты в файловом пространстве имен (UNIX-сокеты)
• Парные сокеты (pair sockets)
• Сетевые сокеты (sockets)

Модуль 5. Сигналы
• Знакомство с сигналами (signals)
• Отличие сигналов от других механизмов межпроцессного взаимодействия
• Специфика обработки сигналов (signal handling)

Модуль 6. Процессы
• Клонирование процессов — fork()
• Замена исполняемого процесса — exec()
• Зомби (zombies) — причины возникновения и способы их устранения

Модуль 7. Потоки
• Потоки и процессы
• Специфика построения многопоточных приложений (multithreading)
• Досрочное завершение потока

Модуль 8. Потоки (продолжение)
• Создание обработчика завершения потока
• Средства синхронизации потоков (synchronize primitives)
• Атрибуты потоков

Модуль 9. Демоны (службы)
• Отличие демона от консольной утилиты
• Специфика разработки демонов (daemons)
• Создание демона использующего сетевые сокеты

Модуль 10. Консольный ввод-вывод
• Специфика разработки консольных приложений
• Предотвращение перенаправления вывода
• Управление терминалом
• Сокрытие пароля пользователя при аутентификации

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

Модуль 12. Домашнее задание
• Специфика разработки 64-битных приложений
• Использование библиотеки ncurses
• Программирование графического интерфейса с помощью GTK+