dlinyj: (Default)
[personal profile] dlinyj
После проведения прошлого мастер-класса стало ясно, что тема очень актуальная. Были учтены некоторые ошибки и вопросы, в результате было принято решение проведения второго мастер-класса. Дополненного и исправленного!

Мастер-класс программирование на си под Linux. Изучаем основное API.

Данный мастер-класс предназначен для людей, которые хотят изучить API *nix подобных ОС, в частности под Linux. Здесь будут рассмотрены особенности разработки под ОС Linux, которые включают в себя:

  • Ознакомление с процессом сборки ПО и специфики компилятора C из состава GCC

  • Разработка и использование разделяемых библиотек

  • Отладка программ

  • Изучение механизмов низкоуровнего файлового ввода-вывода

  • Изучение механизмов обеспечения многозадачности и межпроцессного взаимодействия

  • Применение файловых и сетевых сокетов

  • Изучение и применение механизма сигналов

  • Изучение процессов, потоков их различие, использование многопоточности, изучение механизмов синхронизации потоков и их проблем

  • Создание демонов, изучение различия между демонами и прикладным ПО

  • Изучение особенностей консольного ввода-вывода

  • Применение отображаемых в память файлов и их использование


Данный мастер-класс предназначен в первую очередь для разработчиков ПО, инженеров, программистов и просто любителей, кто интересуется устройством и спецификой ОС Линукс.

Требования к участникам мастер-класса: Знание языка си, на уровне книги Б.В. Керниган,Д.М. Ричи "ЯЗЫК С".

Стоимость данного мастер-класса будет составлять 6 000 рублей.

Место проведения - город Москва, в помещении Хакспейса Нейрон.
Даты проведения: Ориентировочно 4 июля (понедельник), по 7 июля (четверг) с 10 до 17 с перерывом на обед и перерывами на чай/кофе.

Онлайн трансляции не планируется.
Количество человек в группе: 8-10.

Запись ведётся по электронной почте dlinyj@gmail.com либо в комментариях к этому посту. Для записи необходимо ваше Ф.И.О. (полностью) и контактные данные (номер телефона и почта). Желательно описать цели посещения этого мастер-класса, уровень подготовки и род занятий.



Подробная программа курса:

Модуль 1. Введение

  • Ознакомление со спецификой сборки ПО в GNU/Linux

  • Ознакомление с консольными текстовыми редакторами (vi,nano,mcedit)

  • Работа с отладчиком gdb

  • Ручная и автоматическая сборка ПО (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. Консольный ввод-вывод

  • Специфика разработки консольных приложений

  • Предотвращение перенаправления вывода

  • Управление терминалом

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

  • Управление терминалом с помощью ESC-последовательностей

Модуль 11. Отображаемая память

  • Отображение обычного файла

  • Совместный доступ к файлу

  • Частные отображения

  • Другие применения mmap

Модуль 12. Домашнее задание

  • Специфика разработки 64-битных приложений

  • Использование библиотеки ncurses


Ведущий курса: Долин Сергей. Электронщик, разработчик ПО linux (прикладное, тестового ПО для железа, драйвера). Разработчик ПО для встраиваемых систем. Программист linux с 2011 года. Работал в ОАО "НИЦЭВТ", АО «Концерн «Системпром», ООО "ПРОСОФТ" (в дочерней компании "Доламант").

Date: 2016-06-21 02:41 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
Неплохо. Неужели всю эту программу ты умудрился в 4 дня впихнуть?
Я лет пять осваивал. Да и сейчас продолжаю осваивать...

P.S. В наши края не собираетесь?

Date: 2016-06-21 02:48 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Ну тут галопом по европам. Конечно о детальном разжовывании речи не идёт. Но общий обзор провести можно.

Пока нет, мелкая подрастёт :)

Date: 2016-06-21 05:40 pm (UTC)
From: [personal profile] ex0_planet
А для кого это? В смысле, какой должен быть предыдущий бэкграунд, образование, навыки? Ну, чтобы сидеть и ушами не хлопать в непонятках.

Date: 2016-06-22 10:14 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Ну по хорошему надо иметь представлении о использовании ОС линукс ну и хоть немного уметь программировать на сях.

Date: 2016-06-25 08:52 pm (UTC)
From: [identity profile] muzl-ca.livejournal.com
Сергей, нет планов по организации онлайн курса на одной из существующих платформ? На udemy можно делать платные курсы. www udemy com/online-course-dev-101/#curriculum
Edited Date: 2016-06-25 08:55 pm (UTC)

Date: 2016-06-26 03:46 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Надо для начала обкатать тему с живыми людьми, потом переводить её в онлайн.

January 2026

S M T W T F S
    123
456 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 23rd, 2026 08:12 pm
Powered by Dreamwidth Studios