Благодарим ви, че изпратихте вашето запитване! Един от членовете на нашия екип ще се свърже с вас скоро.
Благодарим ви, че направихте своята резервация! Един от членовете на нашия екип ще се свърже с вас скоро.
План на курса
Въведение
- Цели
- Кой сте вие
- Фондация Linux
- Обучение от Фондация Linux
- Сертификационни програми и цифрови баджове
- Дистрибуции на Linux
- Платформи
- Подготовка на системата
- Използване и изтегляне на виртуална машина
- Нещата се променят в Linux
Предварителни знания
- Процедури
- Стандарти и LSB
Как да работите в OSS проекти
- Обзор на как да приносите правилно
- Поддържайте се близо до основната линия за сигурност и качество
- Изследвайте и разберете ДНК на проекта
- Определете какво желание искате да улесучите
- Идентифицирайте поддръжниците и техните работилници и методи
- Получавайте ранна обратна връзка и работите отворено
- Приносите инкрементални части, а не големи кодови дампи
- Оставите своето его пред вратата: Не бъдете тънко-живети
- Бъдете търпеливи, развивайте дългосрочни отношения, бъдете полезни
Компилатори
- GCC
- Други компилатори
- Основни опции на gcc
- Препроцесор
- Интегрирани разработвателни среди (IDE)
- Лаборатории
Библиотеки
- Статични библиотеки
- Сдружени библиотеки
- Връзване с библиотеки
- Динамичен заредител на връзки
- Лаборатории
Make
- Използване на make и Makefiles
- Създаване на големи проекти
- По-сложни правила
- Вградено правила
- Лаборатории
Контрол на изходния код
- Контрол на изходния код
- RCS и CVS
- Subversion
- git
- Лаборатории
Отстраняване на грешки и ядрови дампи
- gdb
- Какво са файловете с ядрови дампи?
- Създаване на ядрови дампи
- Разглеждане на ядрови дампи
- Лаборатории
Инструменти за отстраняване на грешки
- Получаване на времето
- Профилиране и производителност
- valgrind
- Лаборатории
Системни повиквания
- Системни повиквания vs. библиотечни функции
- Как се извършват системните повиквания
- Стойности за връщане и номера на грешки
- Лаборатории
Управление на паметта и разпределение
- Управление на паметта
- Динамично разпределение
- Настройка на malloc()
- Блокиране на страници
- Лаборатории
Файлове и файлови системи в Linux
- Файлове, директории и устройства
- Виртуалната файлова система
- Файловата система ext2/ext3
- Журнализирани файлови системи
- Файловата система ext4/
- Лаборатории
Вход/Изход на файлове
- Вход/Изход на файлове в UNIX
- Отваряне и затваряне
- Четене, писане и търсене
- Позиционен и векторен вход/изход
- Стандартна библиотека за вход/изход
- Поддръжка на големи файлове (LFS)
- Лаборатории
Разширени файлови операции
- Функции stat
- Функции на директориите
- inotify
- Съответствие на паметта
- flock() и fcntl()
- Създаване на временни файлове
- Други системни повиквания
- Лаборатории
Процеси I
- Какво е процес?
- Ограничения на процеса
- Групови процеси
- Файловата система proc
- Методи за комуникация между процеси
- Лаборатории
Процеси II
- Използване на system() за създаване на процес
- Използване на fork() за създаване на процес
- Използване на exec() за създаване на процес
- Използване на clone()
- Излизане
- Конструктори и деструктори
- Чакаене
- Демонски процеси
- Лаборатории
Цевки и FIFOs
- Цевки и комуникация между процеси
- popen() и pclose()
- pipe()
- Именувани цевки (FIFOs)
- splice(), vmsplice() и tee()
- Лаборатории
Асинхронен вход/изход
- Какво е асинхронен вход/изход?
- API за асинхронен вход/изход на POSIX
- Реализация на Linux
- Лаборатории
Сигнали I
- Какво са сигналите?
- Налични сигнали
- Разпределяне на сигнали
- Аларми, паузи и спиене
- Настройка на обработчик на сигнали
- Множества от сигнали
- sigaction()
- Лаборатории
Сигнали II
- Повторна влизане и обработчици на сигнали
- Скачане и нелокално връщане
- siginfo и sigqueue()
- Реални време сигнали
- Лаборатории
POSIX нишки I
- Мултизадачност под Linux
- Основна структура на програмата
- Създаване и унищожаване на нишки
- Сигнали и нишки
- Форкване vs. нишки
- Лаборатории
POSIX нишки II
- Смъртна заплата и състезателни състояния
- Операции с мутекси
- Семафори
- Футекси
- Условни операции
- Лаборатории
Мрежи и сокети
- Мрежови слоеве
- Какво са сокетите?
- Потокови сокети
- Датграмни сокети
- Сурови сокети
- Порядък на байтовете
- Лаборатории
Сокети - адреси и хостове
- Структури на адресите на сокетите
- Преобразуване на 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 часа