Благодарим ви, че изпратихте вашето запитване! Един от членовете на нашия екип ще се свърже с вас скоро.
Благодарим ви, че направихте своята резервация! Един от членовете на нашия екип ще се свърже с вас скоро.
Съдържание и теми, включени в курса
Въведение
- Цели
- Кои сте вие
- The Linux Foundation
- Linux Foundation Training
- Сертификационни програми и дигитални значки
- Linux дистрибуции
- Платформи
- Подготовка на вашата система
- Използване и изтегляне на виртуална машина
- Нещата в Linux се променят
Уводни бележки
- Процедури
- Стандарти и LSB
Как да работим в OSS проекти **
- Преглед на правилния начин за принос
- Стойте близо до основния код (mainline) за сигурност и качество
- Изучете и разберете ДНК-то на проекта
- Разберете какъв проблем искате да разрешите
- Идентифицирайте поддържащите и техните работни потоци и методи
- Получете ранна обратна връзка и работете открито
- Допринасяйте с малки, постепенни части, а не с големи купчини код
- Оставете егото си на вратата: не бъдете обидчиви
- Бъдете търпеливи, изграждайте дългосрочни взаимоотношения, бъдете полезни
Компилатори
- GCC
- Други компилатори
- Основни опции на gcc
- Препроцесор
- Интегрирани среди за разработка (IDE)
- Лабораторни упражнения
Библиотеки
- Статични библиотеки
- Споделени библиотеки
- Свързване с библиотеки
- Динамичен свързващ зареждач
- Лабораторни упражнения
Make
- Използване на make и Makefiles
- Изграждане на големи проекти
- По-сложни правила
- Вградени правила
- Лабораторни упражнения
Контрол на изходния код
- Контрол на изходния код
- RCS и CVS
- Subversion
- git
- Лабораторни упражнения
Дебъгване и Core Dumps
- gdb
- Какво представляват Core Dump файловете?
- Генериране на Core Dumps
- Изследване на Core Dumps
- Лабораторни упражнения
Инструменти за дебъгване
- Измерване на време
- Профилиране и производителност
- valgrind
- Лабораторни упражнения
Системни извиквания
- Системни извиквания срещу библиотечни функции
- Как се извършват системните извиквания
- Върнати стойности и кодове за грешки
- Лабораторни упражнения
Управление и заделяне на памет
- Управление на паметта
- Динамично заделяне
- Настройка на malloc()
- Заключване на страници
- Лабораторни упражнения
Файлове и файлови системи в Linux **
- Файлове, директории и устройства
- Виртуалната файлова система
- Файловата система ext2/ext3
- Журналиращи файлови системи
- Файловата система ext4/
- Лабораторни упражнения
Файлов вход/изход
- UNIX файлов вход/изход
- Отваряне и затваряне
- Четене, писане и позициониране
- Позиционен и векторен вход/изход
- Стандартна библиотека за вход/изход
- Поддръжка на големи файлове (LFS)
- Лабораторни упражнения
Разширени файлови операции
- Функции stat
- Функции за директории
- inotify
- Картиране на паметта
- flock() и fcntl()
- Създаване на временни файлове
- Други системни извиквания
- Лабораторни упражнения
Процеси I
- Какво е процес?
- Ограничения на процесите
- Групи процеси
- Файловата система proc
- Методи за междупроцесна комуникация
- Лабораторни упражнения
Процеси II
- Използване на system() за създаване на процес
- Използване на fork() за създаване на процес
- Използване на exec() за създаване на процес
- Използване на clone()
- Приключване
- Конструктори и деструктори
- Изчакване
- Демон процеси
- Лабораторни упражнения
Канали и FIFO
- Канали и междупроцесна комуникация
- popen() и pclose()
- pipe()
- Именувани канали (FIFO)
- splice(), vmsplice() и tee()
- Лабораторни упражнения
Асинхронен вход/изход**
- Какво е Асинхронен вход/изход?
- POSIX API за асинхронен вход/изход
- Linux имплементация
- Лабораторни упражнения
Сигнали I
- Какво са сигналите?
- Налични сигнали
- Изпращане на сигнали
- Аларми, паузиране и заспиване
- Настройка на обработчик на сигнали
- Набори от сигнали
- sigaction()
- Лабораторни упражнения
Сигнали II
- Реентрантност и обработчици на сигнали
- Скокове и нелокални връщания
- siginfo и sigqueue()
- Сигнали в реално време
- Лабораторни упражнения
POSIX нишки I
- Многонишковост под Linux
- Основна структура на програмата
- Създаване и унищожаване на нишки
- Сигнали и нишки
- Сравнение на fork() и нишки
- Лабораторни упражнения
POSIX нишки II
- Deadlocks и състояния на надпревара
- Операции с мютекси
- Семафори
- Фютекси (Futexes)
- Условни операции
- Лабораторни упражнения
Работа в мрежа и сокети
- Мрежови слоеве
- Какво са сокетите?
- Потокови сокети
- Датаграм сокети
- Сурови сокети
- Подреждане на байтовете
- Лабораторни упражнения
Сокети: адреси и хостове
- Структури на адреси на сокети
- Конвертиране на IP адреси
- Информация за хоста
- Лабораторни упражнения
Сокети: портове и протоколи
- Информация за портове на услуги
- Информация за протоколи
- Лабораторни упражнения
Сокети: клиенти
- Основна последователност за клиент
- socket()
- connect()
- close() и shutdown()
- UNIX клиент
- Интернет клиент
- Лабораторни упражнения
Сокети: сървъри
- Основна последователност за сървър
- bind()
- listen()
- accept()
- UNIX сървър
- Интернет сървър
- Лабораторни упражнения
Сокети: операции за вход/изход
- write(), read()
- send(), recv()
- sendto(), recvfrom()
- sendmsg(), recvmsg()
- sendfile()
- socketpair()
- Лабораторни упражнения
Сокети: опции
- Получаване и задаване на опции на сокети
- fcntl()
- ioctl()
- getsockopt() и setsockopt()
- Лабораторни упражнения
Netlink сокети**
- Какво са netlink сокетите?
- Отваряне на netlink сокет
- Netlink съобщения
- Лабораторни упражнения
Сокети: мултиплексиране и конкурентни сървъри
- Мултиплексиран и асинхронен вход/изход за сокети
- select()
- poll()
- pselect() и ppoll()
- epoll
- Вход/изход, управляван от сигнали, и асинхронен вход/изход
- Конкурентни сървъри
- Лабораторни упражнения
Междупроцесна комуникация
- Методи за IPC
- POSIX IPC
- System V IPC**
- Лабораторни упражнения
Споделена памет
- Какво е споделена памет?
- POSIX споделена памет
- System V споделена памет**
- Лабораторни упражнения
Семафори
- Какво е семафор?
- POSIX семафори
- System V семафори**
- Лабораторни упражнения
Опашки от съобщения
- Какво представляват опашките от съобщения?
- POSIX опашки от съобщения
- System V опашки от съобщения**
- Лабораторни упражнения
Изисквания
Този курс е за опитни разработчици. Участниците трябва да владеят C програмиране и да са запознати с основните Linux помощни програми и текстови редактори.
Аудитория
Този курс е за опитни разработчици. Участниците трябва да владеят C програмиране и да са запознати с основните Linux помощни програми и текстови редактори.
Ниво на опит: Средно
28 Часа