Свържете се с нас

Съдържание и теми, включени в курса

Въведение

  • Цели
  • Кои сте вие
  • 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 Часа

Брой участници


Цена за участник

Предстоящи Курсове

Свързани Kатегории

NP URI: www.nobleprog.bg/cc/lfd401 Undefined array key "country" /apps/hitra7/backdrop/modules/_custom/frontend/islc7/islc7.module:70 Array ( [0] => Array ( [file] => /apps/hitra7/backdrop/modules/_custom/frontend/islc7/islc7.module [line] => 70 [function] => {closure:/apps/hitra7/npfrontend/index.php:4} [args] => Array ( [0] => 2 [1] => Undefined array key "country" [2] => /apps/hitra7/backdrop/modules/_custom/frontend/islc7/islc7.module [3] => 70 ) ) [1] => Array ( [file] => /apps/hitra7/backdrop/modules/_custom/frontend/islc7/islc7.module [line] => 6 [function] => islc_get_site_list [args] => Array ( ) ) [2] => Array ( [file] => /apps/hitra7/npfrontend/nptemplates/default.php [line] => 207 [function] => islc7_sites_links_array_v3 [args] => Array ( ) ) [3] => Array ( [file] => /apps/hitra7/npfrontend/modules/course/course.php [line] => 134 [args] => Array ( [0] => /apps/hitra7/npfrontend/nptemplates/default.php ) [function] => require_once ) [4] => Array ( [file] => /apps/hitra7/npfrontend/core/routes.php [line] => 14 [function] => course_menu_callback [args] => Array ( [0] => /cc/lfd401 ) ) [5] => Array ( [file] => /apps/hitra7/npfrontend/__index.php [line] => 87 [args] => Array ( [0] => /apps/hitra7/npfrontend/core/routes.php ) [function] => require_once ) [6] => Array ( [file] => /apps/hitra7/npfrontend/index.php [line] => 15 [args] => Array ( [0] => /apps/hitra7/npfrontend/__index.php ) [function] => include_once ) [7] => Array ( [file] => /apps/hitra7/index.php [line] => 66 [args] => Array ( [0] => /apps/hitra7/npfrontend/index.php ) [function] => include_once ) ) NP URI: www.nobleprog.bg/cc/lfd401 Undefined array key "region" /apps/hitra7/backdrop/modules/_custom/frontend/islc7/islc7.module:70 Array ( [0] => Array ( [file] => /apps/hitra7/backdrop/modules/_custom/frontend/islc7/islc7.module [line] => 70 [function] => {closure:/apps/hitra7/npfrontend/index.php:4} [args] => Array ( [0] => 2 [1] => Undefined array key "region" [2] => /apps/hitra7/backdrop/modules/_custom/frontend/islc7/islc7.module [3] => 70 ) ) [1] => Array ( [file] => /apps/hitra7/backdrop/modules/_custom/frontend/islc7/islc7.module [line] => 6 [function] => islc_get_site_list [args] => Array ( ) ) [2] => Array ( [file] => /apps/hitra7/npfrontend/nptemplates/default.php [line] => 207 [function] => islc7_sites_links_array_v3 [args] => Array ( ) ) [3] => Array ( [file] => /apps/hitra7/npfrontend/modules/course/course.php [line] => 134 [args] => Array ( [0] => /apps/hitra7/npfrontend/nptemplates/default.php ) [function] => require_once ) [4] => Array ( [file] => /apps/hitra7/npfrontend/core/routes.php [line] => 14 [function] => course_menu_callback [args] => Array ( [0] => /cc/lfd401 ) ) [5] => Array ( [file] => /apps/hitra7/npfrontend/__index.php [line] => 87 [args] => Array ( [0] => /apps/hitra7/npfrontend/core/routes.php ) [function] => require_once ) [6] => Array ( [file] => /apps/hitra7/npfrontend/index.php [line] => 15 [args] => Array ( [0] => /apps/hitra7/npfrontend/__index.php ) [function] => include_once ) [7] => Array ( [file] => /apps/hitra7/index.php [line] => 66 [args] => Array ( [0] => /apps/hitra7/npfrontend/index.php ) [function] => include_once ) ) NP URI: www.nobleprog.bg/cc/lfd401 Using null as an array offset is deprecated, use an empty string instead /apps/hitra7/backdrop/modules/_custom/frontend/islc7/islc7.module:11 Array ( [0] => Array ( [file] => /apps/hitra7/backdrop/modules/_custom/frontend/islc7/islc7.module [line] => 11 [function] => {closure:/apps/hitra7/npfrontend/index.php:4} [args] => Array ( [0] => 8192 [1] => Using null as an array offset is deprecated, use an empty string instead [2] => /apps/hitra7/backdrop/modules/_custom/frontend/islc7/islc7.module [3] => 11 ) ) [1] => Array ( [file] => /apps/hitra7/npfrontend/nptemplates/default.php [line] => 207 [function] => islc7_sites_links_array_v3 [args] => Array ( ) ) [2] => Array ( [file] => /apps/hitra7/npfrontend/modules/course/course.php [line] => 134 [args] => Array ( [0] => /apps/hitra7/npfrontend/nptemplates/default.php ) [function] => require_once ) [3] => Array ( [file] => /apps/hitra7/npfrontend/core/routes.php [line] => 14 [function] => course_menu_callback [args] => Array ( [0] => /cc/lfd401 ) ) [4] => Array ( [file] => /apps/hitra7/npfrontend/__index.php [line] => 87 [args] => Array ( [0] => /apps/hitra7/npfrontend/core/routes.php ) [function] => require_once ) [5] => Array ( [file] => /apps/hitra7/npfrontend/index.php [line] => 15 [args] => Array ( [0] => /apps/hitra7/npfrontend/__index.php ) [function] => include_once ) [6] => Array ( [file] => /apps/hitra7/index.php [line] => 66 [args] => Array ( [0] => /apps/hitra7/npfrontend/index.php ) [function] => include_once ) )