План на курса

Въведение

  •  Цели
  •  Кой сте вие
  •  Фондация 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 часа

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


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

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

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