Курс: Квалифицированный программист Linux

Курс: Квалифицированный программист Linux

Курс: Квалифицированный программист Linux


Продолжительность курса: 72 ак. ч.

Описание курса:
Пройдя обучение по комплексной программе, вы получите все необходимые знания и навыки для успешной разработки программного обеспечения для операционной системы Linux. Программа составлена с учетом наиболее распространенных требований работодателей к сотрудникам. Пройдя обучение по комплексной программе, вы станете специалистом высокого уровня и сможете уверенно претендовать на хорошую должность и высокую заработную плату!

Аудитория:
• IT-специалисты.
• Системные администраторы.

Необходимая подготовка:
• Успешное окончание курса «Linux. Уровень 1. Основы администрирования», или эквивалентная подготовка.
• Успешное окончание курса «Программирование на языке C (Си)», или эквивалентная подготовка.

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

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

Модуль 3. Межпроцессное взаимодействие
• Механизмы межпроцессного взаимодействия Linux
• Неименованные каналы (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

Часть 2. Разработка драйверов устройств в Linux
Модуль 1. Ядро Linux
• Архитектура ядра linux
• Отличия разработки драйверов от прикладного ПО
• Потенциальные проблемы с безопасностью
• Лицензирование модулей ядра

Модуль 2. Модули ядра Linux
• Простейший модуль ядра
• Знакомство с printk()
• Сборка модулей ядра
• Макроопределения __init и __exit
• Вопросы документирования модулей
• Передача модулю параметров командной строки
• Модули, состоящие из нескольких файлов

Модуль 3. Модули ядра, пространства и устройства
• Модули ядра и прикладные программы
• Функции, которые доступны из модулей
• Пространство пользователя и пространство ядра
• Пространство имен
• Адресное пространство
• Старший и младший номер устройства

Модуль 4. Данные
• Типы данных и структуры ядра
• Специфика использования стандартных типов данных
• Назначение типам данных явного размера
• Специфичные типы данных
• Аспекты, связанные с совместимостью
• Размер страницы
• Порядок следования байт в словах
• Выравнивание данных
• Размер указателя

Модуль 5. Символьные устройства
• Файлы символьных устройств
• Структура file_operations
• Структура file
• Регистрация устройства
• Отключение устройства
• Пример драйвера символьного устройства c доступом только на чтение
• Специфика поддержки записи для символьных устройств
• Пример драйвера символьного устройства c доступом на чтение и запись

Модуль 6. Файловая система /proc
• Особенность файловой системы /proc
• Пример драйвера, создающего файл в /proc c доступом на чтение
• Блокировка процессов при конкурентном доступе к устройству
• Пример драйвера, приостанавливающего работу процессов

Модуль 7. Управление памятью в ядре Linux
• Специфика управления памятью в ядре Linux
• Преобразование адреса в ядре
• Динамическое распределение памяти в ядре

Модуль 8. Блочные устройства
• Блочные устройства
• Регистрация блочного устройства
• Особенности реализации блочного устройства

Модуль 9. Семафоры и синхронизация
• Конкуренция и ситуация гонок
• Семафоры и мьютексы
• Реализация семафора в ядре Linux
• Семафоры на чтение и запись
• Взаимоблокировки
• Пример драйвера, использующего семафоры
• Измерение временных интервалов

Модуль 10. Реализация доступа к периферийному устройству
• Практическая работа

Окончательная цена указывается в договоре на обучение.

Характеристики курса

  • Начало: Ведется набор
  • Вендор: GNU/Linux
  • Код курса: LPI-503
  • Город: Пермь, Москва,
  • Направление: Курсы для IT-специалистов
  • Академических часов: 72
  • Количество мест: 8
  • Очно: 128900 ₽
  • Дистанционно: 128900 ₽
Записаться на курс

Курсы повышения квалификации
и профессиональной переподготовки


График работы:
Мы отвечаем на звонки и письма в будние дни с 7:00 до 16:00 по Мск

8 800 (600)-66-16

Владелец сайта:
АНО ДПО «Учебный центр «ШИФТ»
ИНН 5904355180
ОГРН 1175958039586
Юридический адрес: 614010, г. Пермь, ул. Клары Цеткин, д. 14, офис 32.
E-mail: info@eshift.ru